1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-06-03 17:10:59 +03:00

Use POST instead of GET

Fixes #251
This commit is contained in:
Jonathan Harris 2017-10-13 17:19:15 +02:00
parent 1717782886
commit a738343c92

View File

@ -292,12 +292,12 @@ def worker():
if not item: if not item:
return # Closing return # Closing
else: else:
(url, callback) = item (url, data, callback) = item
retrying = 0 retrying = 0
while retrying < 3: while retrying < 3:
try: try:
r = this.session.get(url, timeout=_TIMEOUT) r = this.session.post(url, data=data, timeout=_TIMEOUT)
r.raise_for_status() r.raise_for_status()
reply = r.json() reply = r.json()
(msgnum, msg) = reply['msgnum'], reply['msg'] (msgnum, msg) = reply['msgnum'], reply['msg']
@ -318,15 +318,12 @@ def worker():
# Queue a call to an EDSM endpoint with args (which should be quoted) # Queue a call to an EDSM endpoint with args (which should be quoted)
def call(cmdr, endpoint, args, callback=None): def call(cmdr, endpoint, args, callback=None):
(username, apikey) = credentials(cmdr) (username, apikey) = credentials(cmdr)
this.queue.put( args = dict(args)
('https://www.edsm.net/%s?commanderName=%s&apiKey=%s&fromSoftware=%s&fromSoftwareVersion=%s' % ( args['commanderName'] = username
endpoint, args['apiKey'] = apikey
urllib2.quote(username.encode('utf-8')), args['fromSoftware'] = applongname
urllib2.quote(apikey), args['fromSoftwareVersion'] =appversion
urllib2.quote(applongname), this.queue.put(('https://www.edsm.net/%s' % endpoint, args, callback))
urllib2.quote(appversion),
) + args,
callback))
# Send flight log and also do lookup # Send flight log and also do lookup
@ -335,14 +332,16 @@ def writelog(cmdr, timestamp, system_name, coordinates, shipid = None):
if system_name in FAKE: if system_name in FAKE:
return return
args = '&systemName=%s&dateVisited=%s' % ( args = {
urllib2.quote(system_name), 'systemName': system_name,
urllib2.quote(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(timestamp))), 'dateVisited': time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(timestamp)),
) }
if coordinates: if coordinates:
args += '&x=%.3f&y=%.3f&z=%.3f' % coordinates args['x'] = '%.3f' % coordinates[0]
args['y'] = '%.3f' % coordinates[1]
args['z'] = '%.3f' % coordinates[2]
if shipid is not None: if shipid is not None:
args += '&shipId=%d' % shipid args['shipId'] = '%d' % shipid
call(cmdr, 'api-logs-v1/set-log', args, writelog_callback) call(cmdr, 'api-logs-v1/set-log', args, writelog_callback)
def writelog_callback(reply): def writelog_callback(reply):
@ -371,39 +370,56 @@ def null_callback(reply):
def setranks(cmdr, ranks): def setranks(cmdr, ranks):
args = '' args = {}
if ranks: if ranks:
for k,v in ranks.iteritems(): for k,v in ranks.iteritems():
if v is not None: if v is not None:
args += '&%s=%s' % (k, urllib2.quote('%d;%d' % v)) args[k] = '%d;%d' % v
if args: if args:
call(cmdr, 'api-commander-v1/set-ranks', args) call(cmdr, 'api-commander-v1/set-ranks', args)
def setcredits(cmdr, balance, loan): def setcredits(cmdr, balance, loan):
if balance is not None: if balance is not None:
call(cmdr, 'api-commander-v1/set-credits', '&balance=%d&loan=%d' % (balance, loan)) args = {
'balance': '%d' % balance,
'loan': '%d' % loan,
}
call(cmdr, 'api-commander-v1/set-credits', args)
def setcargo(cmdr, cargo): def setcargo(cmdr, cargo):
call(cmdr, 'api-commander-v1/set-materials', "&type=cargo&values=%s" % json.dumps(cargo, separators = (',', ':'))) args = {
'type': 'cargo',
'values': json.dumps(cargo, separators = (',', ':')),
}
call(cmdr, 'api-commander-v1/set-materials', args)
def setmaterials(cmdr, raw, manufactured, encoded): def setmaterials(cmdr, raw, manufactured, encoded):
call(cmdr, 'api-commander-v1/set-materials', "&type=data&values=%s" % json.dumps(encoded, separators = (',', ':'))) args = {
'type': 'data',
'values': json.dumps(encoded, separators = (',', ':')),
}
call(cmdr, 'api-commander-v1/set-materials', args)
materials = {} materials = {}
materials.update(raw) materials.update(raw)
materials.update(manufactured) materials.update(manufactured)
call(cmdr, 'api-commander-v1/set-materials', "&type=materials&values=%s" % json.dumps(materials, separators = (',', ':'))) args = {
'type': 'materials',
'values': json.dumps(materials, separators = (',', ':')),
}
call(cmdr, 'api-commander-v1/set-materials', args)
def setshipid(cmdr, shipid): def setshipid(cmdr, shipid):
if shipid is not None: if shipid is not None:
call(cmdr, 'api-commander-v1/set-ship-id', '&shipId=%d' % shipid) call(cmdr, 'api-commander-v1/set-ship-id', { 'shipId': '%d' % shipid })
def updateship(cmdr, shipid, shiptype, props=[]): def updateship(cmdr, shipid, shiptype, args={}):
if shipid is not None and shiptype: if shipid is not None and shiptype:
args = '&shipId=%d&type=%s' % (shipid, shiptype) args = dict(args)
for (slot, thing) in props: args['shipId'] = '%d' % shipid
args += '&%s=%s' % (slot, urllib2.quote(unicode(thing))) args['type'] = shiptype
call(cmdr, 'api-commander-v1/update-ship', args) call(cmdr, 'api-commander-v1/update-ship', args)
def sellship(cmdr, shipid): def sellship(cmdr, shipid):
if shipid is not None: if shipid is not None:
call(cmdr, 'api-commander-v1/sell-ship', '&shipId=%d' % shipid, null_callback) call(cmdr, 'api-commander-v1/sell-ship', { 'shipId': '%d' % shipid }, null_callback)