mirror of
https://github.com/MichaByte/OnBoard-Live.git
synced 2026-01-29 13:32:12 -05:00
wip on cli
This commit is contained in:
parent
883167be89
commit
32ed81d7ba
2 changed files with 52 additions and 23 deletions
|
|
@ -7,6 +7,7 @@ from datetime import datetime
|
||||||
from secrets import choice, token_hex
|
from secrets import choice, token_hex
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
|
import click
|
||||||
import cv2
|
import cv2
|
||||||
import httpx
|
import httpx
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
|
@ -17,7 +18,7 @@ from dotenv import load_dotenv
|
||||||
from fastapi import FastAPI, HTTPException, Request, Response
|
from fastapi import FastAPI, HTTPException, Request, Response
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import HTMLResponse, RedirectResponse
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
||||||
from prisma import Prisma
|
from prisma import Prisma # type: ignore
|
||||||
from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler
|
from slack_bolt.adapter.fastapi.async_handler import AsyncSlackRequestHandler
|
||||||
from slack_bolt.async_app import AsyncAck, AsyncApp
|
from slack_bolt.async_app import AsyncAck, AsyncApp
|
||||||
from yarl import URL
|
from yarl import URL
|
||||||
|
|
@ -36,6 +37,10 @@ FERNET_KEY_USERS = []
|
||||||
FERNET = Fernet(FERNET_KEY)
|
FERNET = Fernet(FERNET_KEY)
|
||||||
|
|
||||||
|
|
||||||
|
@click.group()
|
||||||
|
def cli():
|
||||||
|
pass
|
||||||
|
|
||||||
async def rotate_fernet_key():
|
async def rotate_fernet_key():
|
||||||
global FERNET_KEY
|
global FERNET_KEY
|
||||||
global FERNET
|
global FERNET
|
||||||
|
|
@ -477,10 +482,14 @@ async def deny(ack, body):
|
||||||
message = body["message"]
|
message = body["message"]
|
||||||
applicant_slack_id = message["blocks"][len(message) - 3]["text"]["text"].split(
|
applicant_slack_id = message["blocks"][len(message) - 3]["text"]["text"].split(
|
||||||
": "
|
": "
|
||||||
)[1] # I hate it. You hate it. We all hate it. Carry on.
|
)[
|
||||||
|
1
|
||||||
|
] # I hate it. You hate it. We all hate it. Carry on.
|
||||||
applicant_name = message["blocks"][len(message) - 7]["text"]["text"].split(
|
applicant_name = message["blocks"][len(message) - 7]["text"]["text"].split(
|
||||||
"Name: "
|
"Name: "
|
||||||
)[1] # oops i did it again
|
)[
|
||||||
|
1
|
||||||
|
] # oops i did it again
|
||||||
await bolt.client.chat_delete(
|
await bolt.client.chat_delete(
|
||||||
channel=body["container"]["channel_id"], ts=message["ts"]
|
channel=body["container"]["channel_id"], ts=message["ts"]
|
||||||
)
|
)
|
||||||
|
|
@ -496,10 +505,14 @@ async def approve(ack, body):
|
||||||
message = body["message"]
|
message = body["message"]
|
||||||
applicant_slack_id = message["blocks"][len(message) - 3]["text"]["text"].split(
|
applicant_slack_id = message["blocks"][len(message) - 3]["text"]["text"].split(
|
||||||
": "
|
": "
|
||||||
)[1] # I hate it. You hate it. We all hate it. Carry on.
|
)[
|
||||||
|
1
|
||||||
|
] # I hate it. You hate it. We all hate it. Carry on.
|
||||||
applicant_name = message["blocks"][len(message) - 7]["text"]["text"].split(
|
applicant_name = message["blocks"][len(message) - 7]["text"]["text"].split(
|
||||||
"Name: "
|
"Name: "
|
||||||
)[1] # oops i did it again
|
)[
|
||||||
|
1
|
||||||
|
] # oops i did it again
|
||||||
await bolt.client.chat_delete(
|
await bolt.client.chat_delete(
|
||||||
channel=body["container"]["channel_id"], ts=message["ts"]
|
channel=body["container"]["channel_id"], ts=message["ts"]
|
||||||
)
|
)
|
||||||
|
|
@ -653,32 +666,36 @@ async def status_command(ack: AsyncAck, command):
|
||||||
await bolt.client.chat_postEphemeral(
|
await bolt.client.chat_postEphemeral(
|
||||||
channel=channel_id,
|
channel=channel_id,
|
||||||
user=user_id,
|
user=user_id,
|
||||||
text=f"You don't have any recorded streams! Please message <@U05C64XMMHV> if you think this is a mistake."
|
text=f"You don't have any recorded streams! Please message <@U05C64XMMHV> if you think this is a mistake.",
|
||||||
)
|
)
|
||||||
total_streamed = sum([get_recording_duration(recording, user_stream_key) for recording in stream_recs])
|
total_streamed = sum(
|
||||||
all_recs = "\n".join([
|
[
|
||||||
recording
|
get_recording_duration(recording, user_stream_key)
|
||||||
+ " for "
|
for recording in stream_recs
|
||||||
+ str(
|
]
|
||||||
get_recording_duration(
|
)
|
||||||
recording, user_stream_key
|
all_recs = "\n".join(
|
||||||
)
|
[
|
||||||
)
|
recording
|
||||||
+ " minutes"
|
+ " for "
|
||||||
for recording in stream_recs
|
+ str(get_recording_duration(recording, user_stream_key))
|
||||||
])
|
+ " minutes"
|
||||||
|
for recording in stream_recs
|
||||||
|
]
|
||||||
|
)
|
||||||
await bolt.client.chat_postEphemeral(
|
await bolt.client.chat_postEphemeral(
|
||||||
channel=channel_id,
|
channel=channel_id,
|
||||||
user=user_id,
|
user=user_id,
|
||||||
text=f"The server currently thinks you are {"live" if user_stream_key in [stream for stream in active_streams] else "not live"}! It looks like you've streamed for a total of {total_streamed} minutes. Here are all of your recordings: ```{all_recs}```"
|
text=f"The server currently thinks you are {"live" if user_stream_key in [stream for stream in active_streams] else "not live"}! It looks like you've streamed for a total of {total_streamed} minutes. Here are all of your recordings: ```{all_recs}```",
|
||||||
)
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
await bolt.client.chat_postEphemeral(
|
await bolt.client.chat_postEphemeral(
|
||||||
channel=channel_id,
|
channel=channel_id,
|
||||||
user=user_id,
|
user=user_id,
|
||||||
text=f"There was an error processing your request! Are you signed up for OnBoard Live yet? Message <@U05C64XMMHV> if this looks like a mistake!"
|
text=f"There was an error processing your request! Are you signed up for OnBoard Live yet? Message <@U05C64XMMHV> if this looks like a mistake!",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@bolt.command("/onboard-live-submit")
|
@bolt.command("/onboard-live-submit")
|
||||||
async def submit(ack: AsyncAck, command):
|
async def submit(ack: AsyncAck, command):
|
||||||
await ack()
|
await ack()
|
||||||
|
|
@ -896,9 +913,20 @@ async def slack_event_endpoint(req: Request):
|
||||||
return await bolt_handler.handle(req)
|
return await bolt_handler.handle(req)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
@cli.command()
|
||||||
uvicorn.run(api)
|
@click.option("-u", "--user", "user")
|
||||||
|
@click.option("-s", "--session", "session")
|
||||||
|
@click.option("-", "--session", "session")
|
||||||
|
def update_session(user: str, session: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@cli.command()
|
||||||
|
@click.option('-l', '--log-level', 'log-level')
|
||||||
|
@click.option('-h', '--host', 'host')
|
||||||
|
@click.option('-p', '--port', 'port')
|
||||||
|
def run(log_level: str, host: str, port: int):
|
||||||
|
uvicorn.run(api, log_level=log_level, host=host, port=port)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
cli()
|
||||||
|
|
|
||||||
|
|
@ -9,3 +9,4 @@ prisma
|
||||||
slack-bolt
|
slack-bolt
|
||||||
yarl
|
yarl
|
||||||
aiohttp
|
aiohttp
|
||||||
|
click
|
||||||
Loading…
Add table
Add a link
Reference in a new issue