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'}
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)
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)
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)
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)
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)
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 '!'")
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)
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)
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