feat: add /devices endpoint
This commit is contained in:
@@ -7,8 +7,10 @@ import logging
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import db
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.config['JWT_SECRET_KEY'] = 'secret' # TODO change and load from a secrets store
|
app.config['JWT_SECRET_KEY'] = 'secret' # TODO change and load from a secrets store (should be over 32 bytes long)
|
||||||
app.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(hours=1)
|
app.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(hours=1)
|
||||||
app.config['JWT_REFRESH_TOKEN_EXPIRES'] = timedelta(days=30)
|
app.config['JWT_REFRESH_TOKEN_EXPIRES'] = timedelta(days=30)
|
||||||
flask_bcrypt = Bcrypt(app)
|
flask_bcrypt = Bcrypt(app)
|
||||||
@@ -60,3 +62,8 @@ def verify_token():
|
|||||||
def refresh_token():
|
def refresh_token():
|
||||||
return make_response(jsonify({"access_token": create_access_token(identity=get_jwt_identity())}), 200)
|
return make_response(jsonify({"access_token": create_access_token(identity=get_jwt_identity())}), 200)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/devices", methods=["GET"])
|
||||||
|
@jwt_required()
|
||||||
|
def get_all_devices():
|
||||||
|
return make_response(jsonify([d.to_dict() for d in db.get_all_devices(cur)]), 200)
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
from dto import Device
|
||||||
|
|
||||||
|
|
||||||
|
def get_all_devices(cur) -> list[Device]:
|
||||||
|
res = cur.execute("SELECT access_key, type, name FROM devices")
|
||||||
|
devices_from_db = res.fetchall()
|
||||||
|
|
||||||
|
devices = []
|
||||||
|
for item in devices_from_db:
|
||||||
|
devices.append(Device.convert(item))
|
||||||
|
return devices
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
class Device:
|
||||||
|
def __init__(self, access_key, device_type, name):
|
||||||
|
self.access_key = access_key
|
||||||
|
self.device_type = device_type
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
return {
|
||||||
|
'access_key': self.access_key,
|
||||||
|
'type': self.device_type,
|
||||||
|
'name': self.name
|
||||||
|
}
|
||||||
|
|
||||||
|
def convert(device_from_db) -> Device:
|
||||||
|
return Device(*device_from_db)
|
||||||
|
|
||||||
Reference in New Issue
Block a user