예제 #1
0
    def quote_data(self, stock=""):
        """Fetch stock quote.

        Args:
            stock (str or dict): stock ticker symbol or stock instrument

        Returns:
            (:obj:`dict`): JSON contents from `quotes` endpoint

        """

        if isinstance(stock, dict):
            if "symbol" in stock.keys():
                url = str(urls.QUOTES) + stock["symbol"] + "/"
        elif isinstance(stock, str):
            url = str(urls.QUOTES) + stock + "/"
        else:
            raise InvalidTickerSymbol()

        # Check for validity of symbol
        try:
            data = self.get(url)
        except requests.exceptions.HTTPError:
            raise InvalidTickerSymbol()

        return data
예제 #2
0
    def quotes_data(self, stocks):
        """Fetch quote for multiple stocks, in one single Robinhood API call.

        Args:
            stocks (list<str>): stock tickers

        Returns:
            (:obj:`list` of :obj:`dict`): List of JSON contents from `quotes` \
                endpoint, in the same order of input args. If any ticker is \
                invalid, a None will occur at that position.

        """

        url = str(urls.QUOTES) + "?symbols=" + ",".join(stocks)

        try:
            data = self.get(url)
        except requests.exceptions.HTTPError:
            raise InvalidTickerSymbol()

        return data["results"]
예제 #3
0
    def get_fundamentals(self, stock=""):
        """Find stock fundamentals data

        Args:
            (str): stock ticker

        Returns:
            (:obj:`dict`): contents of `fundamentals` endpoint

        """

        # Prompt for stock if not entered
        if not stock:  # pragma: no cover
            stock = input("Symbol: ")

        url = str(urls.build_fundamentals(str(stock.upper())))

        # Check for validity of symbol
        try:
            data = self.get(url)
        except requests.exceptions.HTTPError:
            raise InvalidTickerSymbol()

        return data