[07.02.20] path changes, fixing issues and finalising connection to graphql
This commit is contained in:
parent
232d3ca0c8
commit
775ef507ea
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import src.pricing.collector as collector
|
from pricing.collector import collector
|
||||||
|
|
||||||
def callCollector(args):
|
def callCollector(args):
|
||||||
collector(args)
|
collector(args)
|
||||||
@ -11,4 +11,4 @@ if __name__=='__main__':
|
|||||||
currencies = [ "btc_gbp" ]
|
currencies = [ "btc_gbp" ]
|
||||||
|
|
||||||
for i in range(len(currencies)):
|
for i in range(len(currencies)):
|
||||||
Thread(target=callCollector, args=(1,)).start()
|
Thread(target=callCollector, args=[currencies[i]]).start()
|
||||||
@ -5,7 +5,7 @@ import requests, json, sys
|
|||||||
def bitfinexPublicTicker(type):
|
def bitfinexPublicTicker(type):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
uri = "https://api.bitfinex.com/v2/tickers?symbols=" + "t"+type.toLower().replace('_', '')
|
uri = "https://api.bitfinex.com/v2/tickers?symbols=" + "t"+type.upper().replace('_', '')
|
||||||
|
|
||||||
response = requests.request("GET", uri)
|
response = requests.request("GET", uri)
|
||||||
response = json.loads(response.text)
|
response = json.loads(response.text)
|
||||||
@ -14,7 +14,7 @@ def bitfinexPublicTicker(type):
|
|||||||
price = round(price, 3)
|
price = round(price, 3)
|
||||||
return price
|
return price
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
print("Error: %s" % str(e))
|
print("Bitfinex Spot Price Error: %s" % str(e))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
price = 0
|
price = 0
|
||||||
return price
|
return price
|
||||||
@ -22,7 +22,7 @@ def bitfinexPublicTicker(type):
|
|||||||
def bitfinexHighLowVol(type):
|
def bitfinexHighLowVol(type):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
uri = "https://api.bitfinex.com/v2/tickers?symbols=" + "t"+type.toLower().replace('_', '')
|
uri = "https://api.bitfinex.com/v2/tickers?symbols=" + "t"+type.upper().replace('_', '')
|
||||||
|
|
||||||
response = requests.request("GET", uri)
|
response = requests.request("GET", uri)
|
||||||
response = json.loads(response.text)
|
response = json.loads(response.text)
|
||||||
@ -33,6 +33,6 @@ def bitfinexHighLowVol(type):
|
|||||||
|
|
||||||
return high, low, vol
|
return high, low, vol
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
print("Error: %s" % str(e))
|
print("Bitfinex High Low Volume Error: %s" % str(e))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
return 0, 0, 0
|
return 0, 0, 0
|
||||||
@ -20,7 +20,7 @@ def coinbasePublicTicker(type):
|
|||||||
api_key = keys().api_key
|
api_key = keys().api_key
|
||||||
api_secret = keys().api_secret
|
api_secret = keys().api_secret
|
||||||
|
|
||||||
type = type.toUpper().replace('_', '-')
|
type = type.upper().replace('_', '-')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client = Client(api_key, api_secret)
|
client = Client(api_key, api_secret)
|
||||||
@ -29,7 +29,7 @@ def coinbasePublicTicker(type):
|
|||||||
price = round(price, 3)
|
price = round(price, 3)
|
||||||
return price
|
return price
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
print("Error: %s" % str(e))
|
print("Coinbase Spot Price Error: %s" % str(e))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
price = 0
|
price = 0
|
||||||
return price
|
return price
|
||||||
@ -11,7 +11,7 @@ from pricing.gemini import geminiPublicTicker, geminiHighLowVol, geminiOpenClose
|
|||||||
|
|
||||||
from utils.databaseConnect import send
|
from utils.databaseConnect import send
|
||||||
|
|
||||||
btc_usd="resources/sql/V1_INSERT_NEW_PRICE_RECORD_BTC.graphql"
|
btc_usd="src/resources/queries/V1_INSERT_NEW_PRICE_RECORD_BTC.graphql"
|
||||||
|
|
||||||
def getInsertForType(type):
|
def getInsertForType(type):
|
||||||
if type == "btc_usd":
|
if type == "btc_usd":
|
||||||
@ -75,35 +75,37 @@ def getHighLowVol(type):
|
|||||||
|
|
||||||
return high, low, vol
|
return high, low, vol
|
||||||
|
|
||||||
def sendToGateway(type, timestamp, av_price, high, low, vol, open, close):
|
def sendToGateway(c_type, timestamp, av_price, high, low, vol, o_price, c_price):
|
||||||
try:
|
|
||||||
with open(btc_usd, 'r') as queryFile:
|
with open(btc_usd, 'r') as file:
|
||||||
data = queryFile.read()
|
data = file.read()
|
||||||
query = data % (type, timestamp, av_price, high, low, vol, open, close)
|
|
||||||
|
timestamp = '"'+timestamp.strftime('%Y-%m-%dT%H:%M:%S+00:00')+'"'
|
||||||
|
type = '"'+c_type+'"'
|
||||||
|
|
||||||
|
query = data % (timestamp, type, float(av_price), float(high), float(low), float(vol), float(o_price), float(c_price))
|
||||||
|
|
||||||
|
print(query)
|
||||||
|
|
||||||
status, response = send(query)
|
status, response = send(query)
|
||||||
|
|
||||||
print("Status: ", status)
|
print("Status: ", status)
|
||||||
print("Response: ", response)
|
print("Response: ", response)
|
||||||
return True
|
|
||||||
except BaseException as exception:
|
|
||||||
print("Error: %s" % str(exception))
|
|
||||||
sys.stdout.flush()
|
|
||||||
return False
|
|
||||||
|
|
||||||
def getOpenClose(type):
|
def getOpenClose(type):
|
||||||
open, close = geminiOpenClose()
|
open, close = geminiOpenClose(type)
|
||||||
return open, close
|
return open, close
|
||||||
|
|
||||||
|
|
||||||
# Dynamically Spin up Child process for each type wanting to track
|
# Dynamically Spin up Child process for each type wanting to track
|
||||||
def collector(type):
|
def collector(c_type):
|
||||||
print("Console: ", "== Historical Price Collector ==")
|
print("Console: ", "== Historical Price Collector ==")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
sleep(3600)
|
av_price, timestamp = averager(c_type)
|
||||||
av_price, timestamp = averager(type)
|
high, low, vol = getHighLowVol(c_type)
|
||||||
high, low, vol = getHighLowVol(type)
|
o_price, c_price = getOpenClose(c_type)
|
||||||
open, close = getOpenClose(type)
|
|
||||||
|
|
||||||
sendToGateway(type, timestamp, av_price, high, low, vol, open, close)
|
sendToGateway(c_type, timestamp, av_price, high, low, vol, o_price, c_price)
|
||||||
|
|
||||||
|
sleep(3600)
|
||||||
@ -1,51 +1,66 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import requests, json, sys
|
import requests, json, sys
|
||||||
|
from currency_converter import CurrencyConverter
|
||||||
|
|
||||||
def geminiPublicTicker(type):
|
def geminiPublicTicker(type):
|
||||||
|
|
||||||
|
converter = CurrencyConverter()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
uri = "https://api.gemini.com/v1/pubticker/" + type.toUpper().replace('_', '')
|
uri = "https://api.gemini.com/v1/pubticker/" + (type.lower().replace('gbp', 'usd')).replace('_', '')
|
||||||
|
|
||||||
response = requests.request("GET", uri)
|
response = requests.request("GET", uri)
|
||||||
response = json.loads(response.text)
|
response = json.loads(response.text)
|
||||||
|
|
||||||
price = (float(response['last']) + float(response['ask']) + float(response['bid']))/3
|
price = (converter.convert(float(response['last']), 'USD', 'GBP') +
|
||||||
|
converter.convert(float(response['ask']), 'USD', 'GBP') +
|
||||||
|
converter.convert(float(response['bid']), 'USD', 'GBP'))/3
|
||||||
price = round(price, 3)
|
price = round(price, 3)
|
||||||
return price
|
return price
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
print("Error: %s" % str(e))
|
print("Gemini Spot Price Error: %s" % str(e))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
price = 0
|
price = 0
|
||||||
return price
|
return price
|
||||||
|
|
||||||
def geminiHighLowVol(type):
|
def geminiHighLowVol(type):
|
||||||
|
|
||||||
|
converter = CurrencyConverter()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
uri = "https://api.gemini.com/v2/ticker/" + type.toUpper().replace('_', '')
|
uri = "https://api.gemini.com/v2/ticker/" + (type.lower().replace('gbp', 'usd')).replace('_', '')
|
||||||
response = requests.request("GET", uri)
|
response = requests.request("GET", uri)
|
||||||
response = json.loads(response.text)
|
response = json.loads(response.text)
|
||||||
|
|
||||||
high = float(response['high'])
|
high = converter.convert(float(response['high']), 'USD', 'GBP')
|
||||||
low = float(response['low'])
|
low = converter.convert(float(response['low']), 'USD', 'GBP')
|
||||||
vol = float(response['volo'])
|
|
||||||
|
uri = "https://api.gemini.com/v1/pubticker/" + (type.lower().replace('gbp', 'usd')).replace('_', '')
|
||||||
|
response = requests.request("GET", uri)
|
||||||
|
response = json.loads(response.text)
|
||||||
|
vol = converter.convert(float(response['volume']['BTC']), 'USD', 'GBP')
|
||||||
|
|
||||||
return high, low, vol
|
return high, low, vol
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
print("Error: %s" % str(e))
|
print("Gemini High Low Volume Error: %s" % str(e))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
return 0, 0, 0
|
return 0, 0, 0
|
||||||
|
|
||||||
def geminiOpenClose(type):
|
def geminiOpenClose(type):
|
||||||
|
|
||||||
|
converter = CurrencyConverter()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
uri = "https://api.gemini.com/v2/ticker/" + type.toUpper().replace('_', '')
|
uri = "https://api.gemini.com/v2/ticker/" + (type.lower().replace('gbp', 'usd')).replace('_', '')
|
||||||
response = requests.request("GET", uri)
|
response = requests.request("GET", uri)
|
||||||
response = json.loads(response.text)
|
response = json.loads(response.text)
|
||||||
|
|
||||||
open = float(response['open'])
|
open = converter.convert(float(response['open']), 'USD', 'GBP')
|
||||||
close = float(response['close'])
|
close = converter.convert(float(response['close']), 'USD', 'GBP')
|
||||||
|
|
||||||
return open, close
|
return open, close
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
print("Error: %s" % str(e))
|
print("Gemini Open Close Error: %s" % str(e))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
return 0, 0
|
return 0, 0
|
||||||
|
|||||||
@ -4,23 +4,23 @@ import requests, os, json
|
|||||||
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from pathlib import Path # python3 only
|
from pathlib import Path # python3 only
|
||||||
env_path = Path('.') / 'configuration/dbgateway.env.env'
|
env_path = Path('.') / 'configuration/dbgateway.env'
|
||||||
load_dotenv(dotenv_path=env_path)
|
load_dotenv(dotenv_path=env_path)
|
||||||
|
|
||||||
class keys():
|
class keys():
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.uri = os.getenv('URI')
|
self.uri = os.getenv("URI")
|
||||||
self.port = os.getenv("PORT")
|
self.port = os.getenv("PORT")
|
||||||
|
|
||||||
def send(query):
|
def send(query):
|
||||||
|
|
||||||
uri = keys().uri + ":"+ keys().port + "/graphql"
|
uri = keys().uri + ":"+ keys().port + "/graphql"
|
||||||
headers = {'Content-type': 'application/graphql'}
|
headers = {'Content-type': 'application/json'}
|
||||||
|
|
||||||
response = requests.post(uri, data=query, headers=headers)
|
response = requests.post(uri, json={'query': query}, headers=headers)
|
||||||
|
|
||||||
statusCode = json.loads(response.status_code)
|
statusCode = response.status_code
|
||||||
response = json.loads(response.text)
|
response = json.loads(response.text)
|
||||||
|
|
||||||
return statusCode, response
|
return statusCode, response
|
||||||
Loading…
x
Reference in New Issue
Block a user