Skip to content

Commit 4e9609d

Browse files
author
Wasin Waeosri
committed
revise code first draft, done
1 parent c94ecb2 commit 4e9609d

File tree

1 file changed

+20
-29
lines changed

1 file changed

+20
-29
lines changed

mrn_prototype.py

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
#!/usr/bin/env python
10-
""" Simple example of outputting Market Price JSON data using Websockets """
10+
""" Simple example of outputting Machine Readable News JSON data using Websockets """
1111

1212
import sys
1313
import time
@@ -28,6 +28,7 @@
2828
position = socket.gethostbyname(socket.gethostname())
2929
mrn_domain = 'NewsTextAnalytics'
3030
mrn_item = 'MRN_STORY'
31+
mrn_item = 'MRN_TRNA'
3132

3233
# Global Variables
3334
web_socket_app = None
@@ -64,11 +65,6 @@ def processRefresh(ws, message_json):
6465
decodeFieldList(message_json["Fields"])
6566

6667

67-
def parseNewsData(fragment):
68-
decompressed_data = zlib.decompress(fragment, zlib.MAX_WBITS | 32)
69-
print("News = %s" % decompressed_data)
70-
71-
7268
def processUpdate(ws, message_json):
7369
print("RECEIVED: Update Message")
7470
# print(message_json)
@@ -77,6 +73,9 @@ def processUpdate(ws, message_json):
7773
# Dump the FieldList first (for informational purposes)
7874
decodeFieldList(message_json["Fields"])
7975

76+
# declare variables
77+
tot_size = 0
78+
8079
try:
8180
# Get data for all requried fields
8281
fragment = base64.b64decode(fields_data["FRAGMENT"])
@@ -89,7 +88,7 @@ def processUpdate(ws, message_json):
8988
#print("MRN_SRC = %s" % mrn_src)
9089

9190
#fragment_decoded = base64.b64decode(fragment)
92-
print("fragment length = %d" % len(fragment))
91+
9392
if frag_num > 1: # We are now processing more than one part of an envelope - retrieve the current details
9493
guid_index = next((index for (index, d) in enumerate(
9594
_news_envelopes) if d["guid"] == guid), None)
@@ -101,26 +100,24 @@ def processUpdate(ws, message_json):
101100
#print("fragment before merge = %d" % len(envelop["data"]["fragment"]))
102101

103102
# Merge incoming data to existing envelop
104-
envelop["data"]["fragment"] = envelop["data"]["fragment"] + fragment
103+
fragment = envelop["data"]["fragment"] = envelop["data"]["fragment"] + fragment
105104
envelop["data"]["frag_num"] = frag_num
106-
105+
tot_size = envelop["data"]["tot_size"]
106+
print("TOT_SIZE = %d" % tot_size)
107+
print("fragment length = %d" % len(fragment))
107108
#print("TOT_SIZE from envelop = %d" % envelop["data"]["tot_size"])
108109
#print("fragment after merge = %d" % len(envelop["data"]["fragment"]))
109-
if envelop["data"]["tot_size"] == len(envelop["data"]["fragment"]):
110-
parseNewsData(envelop["data"]["fragment"])
111-
else:
110+
if tot_size != len(fragment):
112111
return None
113112
else:
114113
print("Error: Cannot find fragment for GUID %s with matching FRAG_NUM or MRN_SRC %s" % (
115114
guid, mrn_src))
116115
return None
117116
else: # FRAG_NUM:1 The first fragment
118117
tot_size = int(fields_data["TOT_SIZE"])
118+
print("fragment length = %d" % len(fragment))
119119
print("TOT_SIZE = %d" % tot_size)
120-
if tot_size == len(fragment): # Completed News
121-
parseNewsData(fragment)
122-
pass
123-
else:
120+
if tot_size != len(fragment): # Completed News
124121
#print("Receiving Multiple Fragments!!")
125122
print("Add new fragments to news envelop for guid %s" % guid)
126123
_news_envelopes.append({
@@ -132,6 +129,13 @@ def processUpdate(ws, message_json):
132129
"tot_size": tot_size
133130
}
134131
})
132+
return None
133+
134+
# News Fragment completed, decompress and print data as JSON
135+
if tot_size == len(fragment):
136+
decompressed_data = zlib.decompress(fragment, zlib.MAX_WBITS | 32)
137+
print("News = %s" % json.loads(decompressed_data))
138+
135139
except KeyError as keyerror:
136140
print('KeyError exception: ', keyerror)
137141
except zlib.error as error:
@@ -178,19 +182,6 @@ def process_login_response(ws, message_json):
178182
send_mrn_request(ws)
179183

180184

181-
def send_market_price_request(ws):
182-
""" Create and send simple Market Price request """
183-
mp_req_json = {
184-
'ID': 2,
185-
'Key': {
186-
'Name': ['EUR=', 'JPY=', 'THB='],
187-
},
188-
}
189-
ws.send(json.dumps(mp_req_json))
190-
print("SENT:")
191-
print(json.dumps(mp_req_json, sort_keys=True, indent=2, separators=(',', ':')))
192-
193-
194185
def send_login_request(ws):
195186
""" Generate a login request from command line data (or defaults) and send """
196187
login_json = {

0 commit comments

Comments
 (0)