diff options
author | Parker <contact@pkrm.dev> | 2024-02-26 20:55:05 -0600 |
---|---|---|
committer | Parker <contact@pkrm.dev> | 2024-02-26 20:55:05 -0600 |
commit | bce756b9aa51dfdfa2c2e6cdef4f88f660b80148 (patch) | |
tree | d2e7a238b04d4339bedf05f626bff15d48a61945 /app/func/link | |
parent | a0bfa5440603841c40e6a29495ca49c09a5d8c83 (diff) |
Overhaul: Flask -> FastAPI
Diffstat (limited to 'app/func/link')
-rw-r--r-- | app/func/link/delete.py | 20 | ||||
-rw-r--r-- | app/func/link/delrecords.py | 20 | ||||
-rw-r--r-- | app/func/link/records.py | 23 | ||||
-rw-r--r-- | app/func/link/renew.py | 23 |
4 files changed, 86 insertions, 0 deletions
diff --git a/app/func/link/delete.py b/app/func/link/delete.py new file mode 100644 index 0000000..97b696e --- /dev/null +++ b/app/func/link/delete.py @@ -0,0 +1,20 @@ +import sqlalchemy + +from db import engine + +""" +Delete the specified link from the users associated links +""" +def delete_link(link, owner): + with engine.begin() as conn: + try: + link_owner = conn.execute(sqlalchemy.text('SELECT owner FROM links WHERE link = :link'), [{'link': link}]).fetchone()[0] + except TypeError: + return 404 + + if owner == link_owner: + with engine.begin() as conn: + conn.execute(sqlalchemy.text('DELETE FROM links WHERE link = :link'), [{'link': link}]) + return link + else: + return 401
\ No newline at end of file diff --git a/app/func/link/delrecords.py b/app/func/link/delrecords.py new file mode 100644 index 0000000..d82bfa5 --- /dev/null +++ b/app/func/link/delrecords.py @@ -0,0 +1,20 @@ +import sqlalchemy + +from db import engine + +""" +Delete all of the IP log records that are associated with a specific link +""" +def delete_link_records(link, owner): + with engine.begin() as conn: + try: + link_owner = conn.execute(sqlalchemy.text('SELECT owner FROM links WHERE link = :link'), [{'link': link}]).fetchone()[0] + except TypeError: + return 404 + + if owner == link_owner: + with engine.begin() as conn: + conn.execute(sqlalchemy.text('DELETE FROM records WHERE link = :link'), [{'link': link}]) + return link + else: + return 401
\ No newline at end of file diff --git a/app/func/link/records.py b/app/func/link/records.py new file mode 100644 index 0000000..56bb6d2 --- /dev/null +++ b/app/func/link/records.py @@ -0,0 +1,23 @@ +import sqlalchemy + +from db import engine + +""" +Retrieve all records associated with a specific link +""" +def get_link_records(link, owner): + with engine.begin() as conn: + try: + link_owner = conn.execute(sqlalchemy.text('SELECT owner FROM links WHERE link = :link'), [{'link': link}]).fetchone()[0] + except TypeError: + return 404 + + if owner == link_owner: + with engine.begin() as conn: + records = conn.execute(sqlalchemy.text('SELECT timestamp, ip, location, browser, os, user_agent, isp FROM records WHERE owner = :owner and link = :link'), [{'owner': owner, 'link': link}]).fetchall() + if not records: + return 204 + else: + return 401 + + return records
\ No newline at end of file diff --git a/app/func/link/renew.py b/app/func/link/renew.py new file mode 100644 index 0000000..bcf0550 --- /dev/null +++ b/app/func/link/renew.py @@ -0,0 +1,23 @@ +import sqlalchemy +import datetime + +from db import engine + +""" +Renew a specified link so that the user can continue logging through that URL +Adds 7 days from the current date +""" +def renew_link(link, owner): + with engine.begin() as conn: + try: + link_owner = conn.execute(sqlalchemy.text('SELECT owner FROM links WHERE link = :link'), [{'link': link}]).fetchone()[0] + except TypeError: + return 404 + + if owner == link_owner: + with engine.begin() as conn: + expire_date = datetime.datetime.date(datetime.datetime.now()) + datetime.timedelta(days=7) + conn.execute(sqlalchemy.text('UPDATE links SET expire_date = :expire_date WHERE link = :link'), [{'expire_date': expire_date, 'link': link}]) + return link, expire_date + else: + return 401
\ No newline at end of file |