Skip to content

Commit b68e514

Browse files
author
Wasin Waeosri
committed
Merge branch 'version3.5_split_httpfunction'
2 parents 37549a5 + 16459d4 commit b68e514

File tree

3 files changed

+132
-34
lines changed

3 files changed

+132
-34
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
This is an example project that shows how to implement TRKD REST Client with python
33
- trkd_authen.py: An example application that shows how to authenticate with TRKD service
44
- trkd_quote.py: An example application that shows how to subscribe (all fields and specific fields) the Quote data from TRKD service
5+
- trkd_newsheadline.py: An example application that shows how to subscribe the News Headline data from TRKD service
56

67

78
#prerequisite
@@ -33,4 +34,7 @@ The best way is to get the pip package management tool
3334
#Releae Note
3435
- Version 1: 6 Sep 2016
3536
- trkd_authen.py
36-
- trkd_quote.py
37+
- trkd_quote.py
38+
- Version 1.0.1: 7 Sep 2016
39+
- trkd_newsheadline.py
40+
- changed code structure to separate call http request

trkd_newsheadline.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
'''
2+
The TRKD API sample code is provided for informational purposes only
3+
and without knowledge or assumptions of the end users development environment.
4+
We offer this code to provide developers practical and useful guidance while developing their own code.
5+
However, we do not offer support and troubleshooting of issues that are related to the use of this code
6+
in a particular environment; it is offered solely as sample code for guidance.
7+
Please see the Thomson Reuters Knowledge Direct product page at http://customers.thomsonreuters.com
8+
for additional information regarding the TRKD API.'''
9+
10+
import os
11+
import sys
12+
import requests
13+
import json
14+
import getpass
15+
16+
def doSendRequest(url, requestMsg, headers):
17+
result = None
18+
try:
19+
##send request
20+
result = requests.post(url, data=json.dumps(requestMsg), headers=headers)
21+
if result.status_code == 500:
22+
print 'Request fail'
23+
print 'response status %s' % result.status_code
24+
print 'Error: %s' % result.json()
25+
sys.exit(1)
26+
except requests.exceptions.RequestException, e:
27+
print 'Exception!!!'
28+
print e
29+
sys.exit(1)
30+
return result
31+
32+
33+
## Perform authentication
34+
def CreateAuthorization(username, password, appid):
35+
token = None
36+
##create authentication request URL, message and header
37+
authenMsg = {'CreateServiceToken_Request_1': { 'ApplicationID':appid, 'Username':username,'Password':password }}
38+
authenURL = 'https://api.trkd.thomsonreuters.com/api/TokenManagement/TokenManagement.svc/REST/Anonymous/TokenManagement_1/CreateServiceToken_1'
39+
headers = {'content-type': 'application/json;charset=utf-8'}
40+
print '############### Sending Authentication request message to TRKD ###############'
41+
authenResult = doSendRequest(authenURL, authenMsg, headers)
42+
if authenResult is not None and authenResult.status_code == 200:
43+
print 'Authen success'
44+
print 'response status %s'%(authenResult.status_code)
45+
##get Token
46+
token = authenResult.json()['CreateServiceToken_Response_1']['Token']
47+
48+
return token
49+
50+
## Perform News Headline request
51+
def RetrieveNewsHeadline(token, appid):
52+
##construct news headline URL and header
53+
newsURL = 'https://api.trkd.thomsonreuters.com/api/News/News.svc/REST/News_1/RetrieveHeadlineML_1'
54+
headers = {'content-type': 'application/json;charset=utf-8' ,'X-Trkd-Auth-ApplicationID': appid, 'X-Trkd-Auth-Token' : token}
55+
##construct a news headline request message
56+
ricName = raw_input('Please input Symbol: ')
57+
newsRequestMsg = {'RetrieveHeadlineML_Request_1': {
58+
'HeadlineMLRequest':{
59+
'MaxCount':25,
60+
'Filter':[
61+
{
62+
'MetaDataConstraint':{
63+
'class': 'any',
64+
'Value': {
65+
'Text' : ricName
66+
}
67+
}
68+
}
69+
]
70+
}
71+
}}
72+
73+
print '############### Sending News Headline request message to TRKD ###############'
74+
newsResult = doSendRequest(newsURL, newsRequestMsg,headers)
75+
if newsResult is not None and newsResult.status_code == 200:
76+
print 'News Headline response message: '
77+
print newsResult.json()
78+
79+
80+
81+
## ------------------------------------------ Main App ------------------------------------------ ##
82+
##Get username, password and applicationid
83+
username = raw_input('Please input username: ')
84+
##use getpass.getpass to hide user inputted password
85+
password = getpass.getpass(prompt='Please input password: ')
86+
appid = raw_input('Please input appid: ')
87+
88+
89+
token = CreateAuthorization(username,password,appid)
90+
print 'Token = %s'%(token)
91+
92+
## if authentiacation success, continue subscribing Quote
93+
if token is not None:
94+
RetrieveNewsHeadline(token,appid)
95+

trkd_quote.py

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,24 @@
1414
import json
1515
import getpass
1616

17+
18+
def doSendRequest(url, requestMsg, headers):
19+
result = None
20+
try:
21+
##send request
22+
result = requests.post(url, data=json.dumps(requestMsg), headers=headers)
23+
if result.status_code == 500:
24+
print 'Request fail'
25+
print 'response status %s' % result.status_code
26+
print 'Error: %s' % result.json()
27+
sys.exit(1)
28+
except requests.exceptions.RequestException, e:
29+
print 'Exception!!!'
30+
print e
31+
sys.exit(1)
32+
return result
33+
34+
1735
## Perform authentication
1836
def CreateAuthorization(username, password, appid):
1937
token = None
@@ -22,22 +40,12 @@ def CreateAuthorization(username, password, appid):
2240
authenURL = 'https://api.trkd.thomsonreuters.com/api/TokenManagement/TokenManagement.svc/REST/Anonymous/TokenManagement_1/CreateServiceToken_1'
2341
headers = {'content-type': 'application/json;charset=utf-8'}
2442
print '############### Sending Authentication request message to TRKD ###############'
25-
try:
26-
##send request
27-
result = requests.post(authenURL, data = json.dumps(authenMsg), headers=headers)
28-
if result.status_code == 200:
29-
print 'Authen success'
30-
print 'response status %s'%(result.status_code)
31-
##get Token
32-
token = result.json()['CreateServiceToken_Response_1']['Token']
33-
elif result.status_code == 500:
34-
print 'Request fail'
35-
print 'response status %s'%(result.status_code)
36-
print 'Error: %s'%(result.json())
37-
except requests.exceptions.RequestException as e:
38-
print 'Exception!!!'
39-
print e
40-
sys.exit(1)
43+
authenResult = doSendRequest(authenURL, authenMsg, headers)
44+
if authenResult is not None and authenResult.status_code == 200:
45+
print 'Authen success'
46+
print 'response status %s'%(authenResult.status_code)
47+
##get Token
48+
token = authenResult.json()['CreateServiceToken_Response_1']['Token']
4149

4250
return token
4351

@@ -70,21 +78,10 @@ def RetrieveQuotes(token, appid):
7078
headers = {'content-type': 'application/json;charset=utf-8' ,'X-Trkd-Auth-ApplicationID': appid, 'X-Trkd-Auth-Token' : token}
7179

7280
print '############### Sending Quote request message to TRKD ###############'
73-
try:
74-
##send request
75-
quoteresult = requests.post(quoteURL, data = json.dumps(quoteRequestMsg), headers=headers)
76-
if quoteresult.status_code == 200:
77-
print 'Quote request success'
78-
print quoteresult.json()
79-
else:
80-
print 'Request fail'
81-
print 'response status %s'%(quoteresult.status_code)
82-
print 'Error: %s'%(quoteresult.json())
83-
84-
except requests.exceptions.RequestException as e:
85-
print 'Exception!!!'
86-
print e
87-
sys.exit(1)
81+
quoteResult = doSendRequest(quoteURL, quoteRequestMsg,headers)
82+
if quoteResult is not None and quoteResult.status_code == 200:
83+
print 'Quote response message: '
84+
print quoteResult.json()
8885

8986

9087
## ------------------------------------------ Main App ------------------------------------------ ##
@@ -94,10 +91,12 @@ def RetrieveQuotes(token, appid):
9491
password = getpass.getpass(prompt='Please input password: ')
9592
appid = raw_input('Please input appid: ')
9693

94+
9795
token = CreateAuthorization(username,password,appid)
9896
print 'Token = %s'%(token)
99-
100-
RetrieveQuotes(token,appid)
97+
## if authentiacation success, continue subscribing Quote
98+
if token is not None:
99+
RetrieveQuotes(token,appid)
101100

102101

103102

0 commit comments

Comments
 (0)