示例#1
0
    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
示例#2
0
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
示例#3
0
    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
示例#4
0
    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
示例#5
0
    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
示例#6
0
    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
示例#7
0
    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