Example #1
0
    def get(self):
        code = request.args.get('code')

        auth_header = base64.b64encode(
            six.text_type('bc316f5aa50e4b4abd04fa3b485a731a' + ':' +
                          '6aff2585f3be47e0b01deb1a63adaa82').encode('ascii'))
        headers = {
            'Content-type': 'application/x-www-form-urlencoded',
            'Authorization': 'Basic %s' % auth_header.decode('ascii')
        }
        parameters = {
            'grant_type': 'authorization_code',
            'code': code,
            'redirect_uri': 'http://fabrica-de-playlists-service.herokuapp.com'
        }

        response = requests.post('https://accounts.spotify.com/api/token',
                                 data=parameters,
                                 headers=headers)
        response_data = response.json()

        if (Token.query.count()) == 0:
            token = Token(token_value=response_data.get('access_token'))
            db.session.add(token)
            db.session.commit()
        else:
            token = Token.query.get(1)
            token.token_value = response_data.get('access_token')
            db.session.commit()

        return {'status': 'success'}
Example #2
0
    def make_number(self):
        num_str = ""
        dot_count = 0
        pos_start = self.pos.copy()

        while self.current_char != None and self.current_char in DIGITS + ".":
            if self.current_char == ".":
                if dot_count == 1: break
                dot_count += 1
                num_str += "."
            else:
                num_str += self.current_char
            self.advance()

        if dot_count == 0:
            return Token(TT_INT, int(num_str), pos_start, self.pos)
        else:
            return Token(TT_FLOAT, float(num_str), pos_start, self.pos)
Example #3
0
    def make_identifier(self):
        id_str = ""
        pos_start = self.pos.copy()

        while self.current_char is not None and self.current_char in LETTERS_DIGITS + '_':
            id_str += self.current_char
            self.advance()

        tok_type = TT_KEYWORD if id_str in KEYWORDS else TT_IDENTIFIER
        return Token(tok_type, id_str, pos_start, self.pos)
Example #4
0
    def make_greater_than(self):
        # IF >
        tok_type = TT_GT
        pos_start = self.pos.copy()
        self.advance()

        # CATCH >=
        if self.current_char == "=":
            self.advance()
            tok_type = TT_GTE
        return Token(tok_type, pos_start=pos_start, pos_end=self.pos)
Example #5
0
    def make_less_than(self):
        # IF <
        tok_type = TT_LT
        pos_start = self.pos.copy()
        self.advance()

        # CATCH <=
        if self.current_char == "=":
            self.advance()
            tok_type = TT_LTE
        return Token(tok_type, pos_start=pos_start, pos_end=self.pos)
Example #6
0
    def make_equals(self):
        # IF SINGLE =
        tok_type = TT_EQ
        pos_start = self.pos.copy()
        self.advance()

        # CATCH ==
        if self.current_char == "=":
            self.advance()
            tok_type = TT_EE
        return Token(tok_type, pos_start=pos_start, pos_end=self.pos)
Example #7
0
    def make_not_equals(self):
        pos_start = self.pos.copy()
        self.advance()

        # CATCH !=
        if self.current_char == "=":
            self.advance()
            return Token(TT_NE, pos_start=pos_start, pos_end=self.pos), None

        self.advance()
        return None, ExpectedCharError(pos_start, self.pos, "'=' after '!'")
Example #8
0
    def make_minus_or_arrow(self):
        tok_type = TT_MINUS
        pos_start = self.pos.copy()
        self.advance()

        # CATCH ->
        if self.current_char == ">":
            self.advance()
            tok_type = TT_ARROW

        return Token(tok_type, pos_start=pos_start, pos_end=self.pos)
Example #9
0
    def make_string(self):
        string = str()
        pos_start = self.pos.copy()
        escape_char = False
        self.advance()

        all_escape_chars = {"n": "\n", "t": "\t"}

        while self.current_char != None and (self.current_char != '"'
                                             or escape_char):
            if escape_char:
                string += all_escape_chars.get(self.current_char,
                                               self.current_char)
            else:
                if self.current_char == "\\":
                    escape_char = True
                else:
                    string += self.current_char
            self.advance()
            escape_char = False

        self.advance()
        return Token(TT_STRING, string, pos_start, self.pos)
Example #10
0
    def make_tokens(self):
        tokens = []

        while self.current_char is not None:
            if self.current_char in " \t":
                self.advance()
            elif self.current_char in ";\n":
                tokens.append(Token(TT_NEWLINE, pos_start=self.pos))
                self.advance()
            elif self.current_char == '#':
                self.skip_comment()
            elif self.current_char in DIGITS:
                tokens.append(self.make_number())
            elif self.current_char in LETTERS:
                tokens.append(self.make_identifier())
            elif self.current_char == '"':
                tokens.append(self.make_string())
            elif self.current_char == "+":
                tokens.append(Token(TT_PLUS, pos_start=self.pos))
                self.advance()
            elif self.current_char == "-":
                tokens.append(self.make_minus_or_arrow())
            elif self.current_char == "*":
                tokens.append(Token(TT_MUL, pos_start=self.pos))
                self.advance()
            elif self.current_char == "/":
                tokens.append(Token(TT_DIV, pos_start=self.pos))
                self.advance()
            elif self.current_char == "ยง":
                tokens.append(Token(TT_SAFEDIV, pos_start=self.pos))
                self.advance()
            elif self.current_char == "(":
                tokens.append(Token(TT_LPAREN, pos_start=self.pos))
                self.advance()
            elif self.current_char == ")":
                tokens.append(Token(TT_RPAREN, pos_start=self.pos))
                self.advance()
            elif self.current_char == '[':
                tokens.append(Token(TT_LSQUARE, pos_start=self.pos))
                self.advance()
            elif self.current_char == ']':
                tokens.append(Token(TT_RSQUARE, pos_start=self.pos))
                self.advance()
            elif self.current_char == "^":
                tokens.append(Token(TT_POW, pos_start=self.pos))
                self.advance()
            elif self.current_char == "!":
                tok, error = self.make_not_equals()
                if error: return [], error
                tokens.append(tok)
            elif self.current_char == "=":
                tokens.append(self.make_equals())
            elif self.current_char == "<":
                tokens.append(self.make_less_than())
            elif self.current_char == ">":
                tokens.append(self.make_greater_than())
            elif self.current_char == ",":
                tokens.append(Token(TT_COMMA, pos_start=self.pos))
                self.advance()
            else:
                pos_start = self.pos.copy()
                char = self.current_char
                self.advance()
                return [], IllegalCharError(pos_start, self.pos,
                                            "'" + char + "'")

        tokens.append(Token(TT_EOF, pos_start=self.pos))
        return tokens, None