def iexStockQuoteGet( self, ticker, types="quote,stats,news,dividends&range=1y&last=3", token=None ): if len(ticker) > 4: print("Invalid Ticker [{}] for IEX".format(ticker)) if hasattr(self, "token") == False: self.token = os.getenv("TOKEN", "junk") # "/batch?types=quote,stats,news,dividends&range=1y&last=3&token=" url = ( "https://cloud.iexapis.com/v1/stock/" + ticker.lower() + "/batch?types=" + types + "&token=" + self.token ) conn = common_request.CommonRequest("GET", url) if conn.Request(): # print("Success:", conn) data = json.loads(conn.ResponseData()) conn.Close() return data print("Failure:", conn) conn.Close() return None
def CacheLookup(ticker, jDate=None): cache = StockCache() if jDate == None: tt = time.localtime() jul = str(tt.tm_yday) jDate = str(tt.tm_year) + jul.zfill(3) url = cache.couchURL() + "/quotes/" + ticker.upper() + ":" + jDate # hdr = myHeader() # print(hdr) conn = common_request.CommonRequest("GET", url, cache.couchHeader()) if conn.Request(): # print("Success:", conn) return json.loads(conn.ResponseData()) print("WARNING: Failed Cache Lookup:", conn) myData = cache.iexStockQuoteGet(ticker) if isinstance(myData, dict): cache.quoteDataSave(ticker, jDate, myData) return myData else: print("ERROR: Failed GetIEXStockQuote: ", str(myData)) return None
def iexStockHistoryGet(self, ticker, types="chart&range=1y", token=None): # def GetIEXStockHistory(ticker, types="chart&range=5y", token=None): if len(ticker) > 4: # print("Invalid Ticker [{}] for IEX".format(ticker)) return if hasattr(self, "token") == False: self.token = os.getenv("TOKEN", "junk") print("Token:{}".format(self.token)) # example'https://cloud.iexapis.com/v1/stock/HD/batch?types=chart&range=1y&token=<blah> url = ( "https://cloud.iexapis.com/v1/stock/" + ticker.lower() + "/batch?types=" + types + "&token=" + self.token ) conn = common_request.CommonRequest("GET", url) if conn.Request(): # print("Success:", conn) data = json.loads(conn.ResponseData()) conn.Close() return data print("ERROR Failure:", conn) conn.Close() return None
def isCouchDBUp(self): url = self.couchURL() + "/_up" conn = common_request.CommonRequest("GET", url, self.couchHeader()) # if conn.Request(): # print("Success:", conn) # Yes There is something in the db, # Convert it to JSON and return data = json.loads(conn.ResponseData()) conn.Close() return data # print("Unable to Read Data", conn) return None
def couchDataRead(self, ticker, jDate, database): # in quote? url = self.couchURL() + "/" + database + "/" + ticker.upper() + ":" + jDate conn = common_request.CommonRequest("GET", url, self.couchHeader()) # if conn.Request(): # print("Success:", conn) # Yes There is something in the db, # Convert it to JSON and return data = json.loads(conn.ResponseData()) conn.Close() return data # print("Unable to Read Data", conn) return None
def couchDataSave(self, ticker, jDate, dataBase, dataRecord, rev=None): dataRecord["_id"] = ticker.upper() + ":" + jDate dataRecord["key"] = ticker.upper() + ":" + jDate if rev != None: dataRecord["_rev"] = rev dataRecord["symbol"] = ticker.upper() dataRecord["julian"] = jDate # print("Saving {}:{}:{}".format(ticker.upper(), jDate, dataRecord)) url = self.couchURL() + "/" + dataBase + "/" + ticker.upper() + ":" + jDate conn = common_request.CommonRequest("PUT", url, self.couchHeader(), dataRecord) if conn.Request("PUT", url, self.couchHeader(), dataRecord): # print("Successfully inserted", conn) return True print("Failed:", conn) return False
def couchFindByPartition(self, ticker, database, searchCritera): if not isinstance(searchCritera, dict): print("ERROR: Invalid Search Criteria: {}".format(searchCritera)) return None url = ( self.couchURL() + "/" + database + "/_partition/" + ticker.upper() + "/_find" ) conn = common_request.CommonRequest( "POST", url, self.couchHeader(), searchCritera ) if conn.Request("POST", url, self.couchHeader(), searchCritera): data = json.loads(conn.ResponseData()) conn.Close() return data print("Unable to Post Data", conn) return None