Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # import dependencies
- from flask import Flask, request
- from flask_restful import Resource, Api
- from flask_jwt import JWT, jwt_required, current_identity
- from werkzeug.security import safe_str_cmp
- import MySQLdb
- from sqlalchemy import *
- from sqlalchemy.orm import *
- # app initialization
- app = Flask(__name__)
- api = Api(app)
- app.debug = True
- app.config['SECRET_KEY'] = 'super-secret'
- # database configuration
- userpass = 'mysql://fjaraya:starbucks@'
- basedir = 'fjaraya.mysql.pythonanywhere-services.com'
- dbname = '/fjaraya$mydatabase'
- app.config['SQLALCHEMY_DATABASE_URI'] = userpass + basedir + dbname
- engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'], echo=True)
- metadata = MetaData()
- # define table
- players_table = Table('players', metadata,
- Column('id', Integer, primary_key=True),
- Column('name', String(100)),
- Column('score', Integer)
- )
- metadata.create_all(engine) # create the table
- Session = sessionmaker(bind=engine)
- class Player(object):
- def __init__(self, name, score):
- self.name = name
- self.score = score
- def __repr__(self):
- return "<Player('%s','%s')>" % (self.name, self.score)
- mapper(Player, players_table)
- # user data
- class User(object):
- def __init__(self, id, username, password):
- self.id = id
- self.username = username
- self.password = password
- def __str__(self):
- return "User(id='%s')" % self.id
- users = [
- User(1, 'user1', '1234'),
- User(2, 'user2', '123qwe'),
- ]
- username_table = {u.username: u for u in users}
- userid_table = {u.id: u for u in users}
- # auth functions
- def authenticate(username, password):
- user = username_table.get(username, None)
- if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')):
- return user
- def identity(payload):
- user_id = payload['identity']
- return userid_table.get(user_id, None)
- jwt = JWT(app, authenticate, identity)
- # app logic
- class MyApp(Resource):
- def get(self):
- #insert data
- session = Session()
- the_player = Player(name='python', score=1)
- session.add(the_player)
- session.commit()
- return {'status': 'OK', 'response': the_player}
- @jwt_required()
- def put(self):
- data = request.form['data']
- return {'status': 'OK', 'data': data}
- #main program
- api.add_resource(MyApp, '/')
- if __name__ == '__main__':
- app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement