Beispiel #1
0
async def download(id: str, msg_id: int):
    if not user.is_connected():
        await user.connect()
    if not await user.is_user_authorized():
        return templates.get_template("auth/not_authorized.html").render()
    try:
        try:
            id = int(id)
        except:
            pass
        msg = await user.get_messages(id, ids=msg_id)
        if not msg or not msg.file:
            return HTMLResponse(
                templates.get_template("error.jinja2").render(
                    error="Такого сообщения не существует"))
        msg: types.Message
        if os.path.isdir(f"cache/{id}/{msg_id}"
                         ) and os.listdir(f"cache/{id}/{msg_id}/") != []:
            file = f"cache/{id}/{msg_id}/" + os.listdir(
                f"cache/{id}/{msg_id}/")[0]
        else:
            for i in ["cache/", f"cache/{id}/", f"cache/{id}/{msg_id}/"]:
                if not os.path.isdir(i): os.mkdir(i)
            if msg.file.mime_type.split(
                    "/")[0] == "audio" and msg.file.ext != ".mp3":
                file = f"cache/{id}/{msg_id}/audio.mp3"
                m_ = io.BytesIO(await msg.download_media(bytes))
                m_.name = "audio.wav"
                AudioSegment.from_file(m_).export(file)
            elif msg.file.mime_type.split("/")[0] == "image":
                file = f"cache/{id}/{msg_id}/image." + config.pic_format
                m_ = io.BytesIO(await msg.download_media(bytes))
                m_.name = "pic.png"
                im = Image.open(m_).convert("RGBA")
                im.load()
                bg = Image.new("RGB", im.size, (255, ) * 3)
                bg.paste(im, mask=im.split()[3])
                bg.thumbnail((config.pic_max_size, ) * 2, 1)
                bg.save(file, config.pic_format, quality=config.pic_quality)
            else:
                path = f"cache/{id}/{msg_id}/{msg.file.name}"
                file = await msg.download_media(path)
        stream = open(file, mode="rb")
        return StreamingResponse(stream, media_type=msg.file.mime_type)
    except Exception as ex:
        return HTMLResponse(
            templates.get_template('error.jinja2').render(
                error='<br>'.join(ex.args)))
Beispiel #2
0
async def read_note(note_name: str, json: bool = False):
    note = get_note(note_name)
    note_dict = {}

    if note:
        note_dict = note.dict()

    else:
        new_note = Note(name=note_name)
        note_dict = new_note.dict()
        note_key = urlsafe_key(note_name)
        notes.put(note_dict, note_key)

    note_dict["base_url"] = base_url

    if json:
        return note_dict

    note_template = Template((open("note.html").read()))
    note_css = open("style.css").read()
    note_js = open("note.js").read()
    return HTMLResponse(
        note_template.render(note_data=note_dict,
                             note_js=note_js,
                             css=note_css))
Beispiel #3
0
async def websocket_base():
    html = """
            <!DOCTYPE html>
            <html>
                <head>
                    <title>Chat</title>
                </head>
                <body>
                    <h1>WebSocket Chat</h1>
                    <form action="" onsubmit="sendMessage(event)">
                        <input type="text" id="messageText" autocomplete="off"/>
                        <button>Send</button>
                    </form>
                    <ul id='messages'>
                    </ul>
                    <script>
                        var ws = new WebSocket("ws://localhost:8000/ws");
                        ws.onmessage = function(event) {
                            var messages = document.getElementById('messages')
                            var message = document.createElement('li')
                            var content = document.createTextNode(event.data)
                            message.appendChild(content)
                            messages.appendChild(message)
                        };
                        function sendMessage(event) {
                            var input = document.getElementById("messageText")
                            ws.send(input.value)
                            input.value = ''
                            event.preventDefault()
                        }
                    </script>
                </body>
            </html>
    """
    return HTMLResponse(html)
Beispiel #4
0
def kakaopay_success(request: Request, response: Response,
                     pg_token: Optional[str]):
    url = "https://kapi.kakao.com/v1/payment/approve"
    APP_ADMIN_KEY = ""
    headers = {
        "Authorization": f"KakaoAK {APP_ADMIN_KEY}",
        "content-type": "application/x-www-form-urlencoded;charset=utf-8"
    }
    # 쿠키 및 DB 대신 JSON 파일 활용
    # tid = request.cookies.get("ttid")
    tidDb = open('/Users/doylekim/my/myFastApi/db/db.txt',
                 mode='r',
                 encoding='utf-8')
    tid = tidDb.read()
    tidDb.close()
    query = f"?cid=TC0ONETIME&tid={tid}&partner_order_id=partner_order_id&partner_user_id=partner_user_id&pg_token={pg_token}"
    _res = requests.post(url=url + query, headers=headers)
    _result = _res.json()
    viewFile = open(
        '/Users/doylekim/my/myFastApi/views/kakaofPage.html',
        mode='r',
        encoding='utf-8',
    )
    html_content = viewFile.read()
    viewFile.close()
    tidDbReset = open('/Users/doylekim/my/myFastApi/db/db.txt',
                      mode='w',
                      encoding='utf-8')
    tidDbReset.write("")
    tidDbReset.close()
    print(_result)
    return HTMLResponse(content=html_content, status_code=200)
Beispiel #5
0
def logged_out(format: str = ""):
    if format == 'json':
        return {"message": "Logged out!"}
    elif format == 'html':
        return HTMLResponse(content='<h1>Logged out!</h1>')
    else:
        return PlainTextResponse(content='Logged out!')
Beispiel #6
0
def page(body, title=None, menu_items=None):
    doc = dom.document(title=f"ujira | {title}" if title else "ujira")
    with doc.head:
        link(
            rel="stylesheet",
            href="https://www.unpkg.com/[email protected]/dist/tailwind.min.css"
        )
    with div(
            cls=
            "min-h-screen flex flex-col flex-auto flex-shrink-0 antialiased bg-gray-50 text-gray-800"
    ) as container:
        doc += container
        with div(
                cls=
                "fixed flex flex-col top-0 left-0 w-64 bg-gray-900 h-full shadow-lg"
        ):
            # Menu Header
            with div(cls="flex items-center pl-6 h-20 border-b border-gray-800"
                     ):
                with div(cls="my-3"):
                    p("ujira",
                      cls=
                      "text-md font-medium tracking-wide text-gray-100 font-sans uppercase"
                      )

            # Menu items
            page_menu(menu_items or [])
        div(body, cls="ml-72 flex")

    return HTMLResponse(str(doc))
Beispiel #7
0
def home(request: Request):
    '''
	Returns barebones HTML form allowing the user to enter a URL and download format
	'''

    html_content = '''
<head>
  <title>YouTube Downloader</title>
</head>

<h2>Enter a YouTube URL and download format</h2>
<form method="post">
  <div>
	<label>Enter YouTube URL </label>
	<input type="text" name="url" style="width:400px" placeholder="https://www.youtube.com/watch?v=C0DPdy98e4c">
	<div>
	  <label>Download Format</label>
	  <select name="download_format">
		<option>VideoBestQuality</option>
		<option>AudioBestQuality</option>
	  </select>
	</div>
  </div>
  <button type="submit">Submit</button>
</form>
'''

    return HTMLResponse(content=html_content, status_code=200)
Beispiel #8
0
def home(request: Request):
    '''
	Returns barebones HTML form allowing the user to select a file and model
	'''

    html_content = '''
<form method="post" enctype="multipart/form-data">
  <div>
    <label>Upload Image</label>
    <input name="file" type="file" multiple>
    <div>
      <label>Select YOLO Model</label>
      <select name="model_name">
        <option>yolov5s</option>
        <option>yolov5m</option>
        <option>yolov5l</option>
        <option>yolov5x</option>
      </select>
    </div>
  </div>
  <button type="submit">Submit</button>
</form>
'''

    return HTMLResponse(content=html_content, status_code=200)
Beispiel #9
0
def welcome_token(*,
                  response: Response,
                  token: str = Query(None),
                  format: str = Query(None)):
    if token not in app.token_value:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Incorrect email or password",
            headers={"WWW-Authenticate": "Basic"},
        )
    if format == "json":
        return {"message": "Welcome!"}
    elif format == "html":
        return HTMLResponse("""
    <html>
        <head>
            <title>Some HTML in here</title>
        </head>
        <body>
            <h1>Welcome!</h1>
        </body>
    </html>
    """)
    else:
        return PlainTextResponse("Welcome!")
Beispiel #10
0
def return_message(text: str, message_format: Optional[str]):
    if message_format == "json":
        return JSONResponse(content={"message": text}, status_code=200)
    if message_format == "html":
        return HTMLResponse(content=f"<html><h1>{text}</h1></html>",
                            status_code=200)
    return PlainTextResponse(content=text, status_code=200)
Beispiel #11
0
async def review_snippet(snippet_id: str):
    try:
        review_template = Template((open("review.html").read()))
        snippet = Snippet(**snippets.get(snippet_id)["data"]).dict()
        return HTMLResponse(review_template.render(snippet_data=snippet))
    except KeyError:
        return {"error": "no such snippet"}
async def show_overview():
    html_content = """
    <html>
        <head>
            <title>Model Debug Status</title>
            <style>
                .errorCode {
                    font-family: 'Courier New', monospace;
                    color: red;
                    width: 70vw;
                    border: 1px solid black;
                }
            </style>
        </head>
        <body>
            <h1>Model Debugging Utility</h1>
            <br>
            <h3>Initialization Status</h3>
            <p>%s</p>
            <p class="errorCode">%s</p>
            <br>
            <h3>Prediction Status</h3>
            <p>%s</p>
            <code>%s</code>
            <br> <br>
            <p class="errorCode">%s</p>
        </body> 
    </html>
    """ % (init_status, init_error, predict_status, predict_result,
           predict_error)
    return HTMLResponse(content=html_content, status_code=200)
Beispiel #13
0
def login(
    request: Request, next: Optional[str] = None,
    ticket: Optional[str] = None):
    if request.session.get("user", None):
        # Already logged in
        return RedirectResponse(request.url_for('profile'))

    # next = request.args.get('next')
    # ticket = request.args.get('ticket')
    if not ticket:
        # No ticket, the request come from end user, send to CAS login
        cas_login_url = cas_client.get_login_url()
        print('CAS login URL: %s', cas_login_url)
        return RedirectResponse(cas_login_url)

    # There is a ticket, the request come from CAS as callback.
    # need call `verify_ticket()` to validate ticket and get user profile.
    print('ticket: %s', ticket)
    print('next: %s', next)

    user, attributes, pgtiou = cas_client.verify_ticket(ticket)

    print(
        'CAS verify ticket response: user: %s, attributes: %s, pgtiou: %s',
        user, attributes, pgtiou)

    if not user:
        return HTMLResponse('Failed to verify ticket. <a href="/login">Login</a>')
    else:  # Login successfully, redirect according `next` query parameter.
        response = RedirectResponse(next)
        request.session['user'] = dict(user=user)
        return response
Beispiel #14
0
def root(page):
    print(f"page: {page}")
    try:
        with open(f"web/{page}.html") as f:
            return HTMLResponse(f.read())
    except FileNotFoundError:
        raise HTTPException(status_code=404, detail="page not found")
Beispiel #15
0
async def get():
    return HTMLResponse("""
    <!DOCTYPE html>
    <html>
      <head>
        <title>Chat</title>
      </head>
      <body>
        <h2>Events:</h2>
        <ul id='events'>
        </ul>
        <script>
          var ws = new WebSocket("ws://localhost:8000/events/ws");
          ws.onmessage = function(event) {
            var data = JSON.parse(event.data)
            var events = document.getElementById('events')
            var message = document.createElement('li')
            var content = document.createTextNode(data['type'])
            message.appendChild(content)
            events.appendChild(message)
          };
          function sendMessage(event) {
            var input = document.getElementById("messageText")
            ws.send(input.value)
            input.value = ''
            event.preventDefault()
          }
        </script>
      </body>
    </html>
  """)
Beispiel #16
0
async def main_site():
    """How did you get here?"""

    bullshit = corporate_bullshit.sentence()
    to_send = page_content.replace(r"%spicy_bullshit%", bullshit)

    return HTMLResponse(content=to_send)
Beispiel #17
0
def reactCdn():
    view = open('/Users/doylekim/my/myFastApi/views/reactView.html',
                mode="r",
                encoding="utf-8")
    html_content = view.read()
    view.close()
    return HTMLResponse(content=html_content, status_code=200)
Beispiel #18
0
def get_rapidoc_html(
    openapi_url: str,
    title: str,
    description: str,
    rapidoc_js_url:
    str = "https://cdn.jsdelivr.net/npm/rapidoc/dist/rapidoc-min.js",
) -> HTMLResponse:

    html = f"""
    <!DOCTYPE html>
    <html lang="en">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{title}</title>
    <meta name="description" content="{description}">
    <script src="{rapidoc_js_url}"></script>
    <rapi-doc
        spec-url="{openapi_url}"
        sort-endpoints-by=method
        render-style=view
        theme=dark
        load-fonts=false
        regular-font='"Fira Sans", Avenir, "Segoe UI", Arial, sans-serif'
        schema-expand-level=1
        schema-description-expanded=true
    ></rapi-doc>"""
    return HTMLResponse(html)
Beispiel #19
0
    def message_response(format: str, func_value: str):
        if format == "json":
            return JSONResponse(content={"message": func_value})
        if format == "html":
            return HTMLResponse(content=f"<h1>{func_value}</h1>")

        return PlainTextResponse(content=func_value)
Beispiel #20
0
def chatbot_ans_html(question):
    with open("chatbot_sample_intents.csv", "r") as f:
        content = f.readlines()

    text_fields = question.split(" ")
    predict_answer = {}
    for line in content:
        fields = line.strip().split(",")
        target = fields[0]
        count = sum([1 for word in text_fields if word in fields[1:]])
        predict_answer[target] = count

    answer = max(predict_answer, key=predict_answer.get)

    html_content = """<html>
            <body>
            <br><br><br><br><br><br>
            """ + answer + """
            <br><br><button onclick="window.location.href='/chatbot_question'">Another question</button>
            <button onclick="window.location.href='/index'">Home</button>

            </body>
        </html> """

    return HTMLResponse(content=html_content, status_code=200)
Beispiel #21
0
async def post(request: Request, ident):
    ident = ident.replace('+', ' ')
    if ident.isdigit():
        post_data = await Post.cache(ident=int(ident))
    else:
        post_data = await Post.get_by_slug(ident)
    if not post_data:
        raise HTMLResponse(status_code=404)
    post = Post(**post_data)

    stats = await post.stats
    reaction_type = None
    liked_comment_ids = []
    github_user = request.session.get('github_user')
    pageview = await post.incr_pageview()
    related_posts = await post.get_related(limit=4)
    if github_user:
        reaction_type = await post.get_reaction_type(github_user['gid'])
        liked_comment_ids = await post.comment_ids_liked_by(github_user['gid'])

    post = await post.to_async_dict(**post_data)
    post.author = config.AttrDict(post.author)
    return {
        'post': post,
        'github_user': github_user,
        'stats': stats,
        'reaction_type': reaction_type,
        'liked_comment_ids': liked_comment_ids,
        'related_posts': related_posts,
        'pageview': pageview
    }
Beispiel #22
0
        async def login_page(
                request: Request,
                response: Response,
                username: str = Form(...),
                password: str = Form(...),
        ):
            token = None
            token = await auth_server.rpc_server["easyauth"][
                "generate_auth_token"](username, password)
            if not "access_token" in token:
                message = ("invalid username / password" if
                           "invalid username / password" in token else token)
                return HTMLResponse(
                    await auth_server.get_login_page(message=message,
                                                     request=request),
                    status_code=401,
                )
            token = token["access_token"]
            token_id = auth_server.decode_token(token)[1]["token_id"]
            auth_server.store["tokens"][token_id] = ""

            response.set_cookie("token", token, **auth_server.cookie_security)
            response.status_code = 200

            redirect_ref = default_login_redirect
            if "ref" in request.cookies:
                redirect_ref = request.cookies["ref"]
                response.delete_cookie("ref")

            return RedirectResponse(redirect_ref,
                                    headers=response.headers,
                                    status_code=HTTP_302_FOUND)
Beispiel #23
0
async def update_calendar(request: Request, date: str) -> HTMLResponse:
    last_day = cg.Day.convert_str_to_date(date)
    next_weeks = cg.create_weeks(cg.get_n_days(last_day, ADD_DAYS_ON_SCROLL))
    template = templates.get_template(
        'partials/calendar/monthly_view/add_week.html')
    content = template.render(weeks_block=next_weeks)
    return HTMLResponse(content=content, status_code=HTTPStatus.OK)
Beispiel #24
0
async def add_alchemy(item: ItemAdd):
    term_list = item.terminals.split(sep=',')
    for term in term_list:
        add_incas = Incas(terminal=term.strip(), user_id=item.user_id)
        session.add(add_incas)
        session.commit()
    return HTMLResponse(status_code=200)
Beispiel #25
0
async def upload_datapackage_view():
    content = """
<body>
<form action="/upload_datapackage/" enctype="multipart/form-data" method="post">
    <p><input name="zipped_datapackage" type="file"></p>
    <p>
        <label for="schema">Schema</label>
        <input name="schema" type="text" value="model_draft">
    </p>
    <p>
        <label for="mapping">Mapping (optional)</label>
        <input name="mapping" type="text">
    </p>
    <p>
        <label for="show_json">Show data after mapping (instead of upload)</label>
        <input name="show_json" type="checkbox" id="show_json">
    </p>
    <p>
        <label for="adapt_foreign_keys">Adapt foreign keys (foreign keys are automatically set)</label>
        <input name="adapt_foreign_keys" type="checkbox" id="adapt_foreign_keys">
    </p>
    <p><input type="submit"></p>
</form>
</body>
    """
    logger.debug("Validating datapackage...")
    return HTMLResponse(content=content)
Beispiel #26
0
async def main():
    content = """
                    <body>
                    To know the usage visit github.com/ls-da3m0ns 
                    </body>
                """
    return HTMLResponse(content=content)
Beispiel #27
0
def logged_out(format: str = ""):
    if format == 'json':
        return {"message": "Logged out!"}
    elif format == 'html':
        return HTMLResponse(content="<h1>Logged out!</h1>", status_code=200)
    else:
        return PlainTextResponse(content="Logged out!", status_code=200)
Beispiel #28
0
async def png(room: int, admin: str):
    retv = {
        SCC["CHECK_IN_DICT"]: False,
        SCC["PING_GOOD"]: False,
        SCC["POLL_CODE"]: False,
    }
    prc = sp.get(room, None)
    if prc is not None:
        retv[SCC["CHECK_IN_DICT"]] = True
        d = prc.poll()
        if d is None:
            retv[SCC["POLL_CODE"]] = True
        else:
            retv[SCC["POLL_CODE"]] = d
    com = AsyncServiceCommunicator()
    await com.start()
    ps = Parser()
    cmd = {
        "action": SCC["PING_COMMAND"],
        SCC["W8ANSWERIN"]: admin + str(room) + "ping"
    }
    await com.push_in_channel("e" + ps.create_room_name(room),
                              ps.parse_in(cmd))
    await com.set_expires_channel("e" + ps.create_room_name(room), 5)
    msg = await com.listen_for_clients([admin + str(room) + "ping"], 8)
    if msg is not None:
        retv[SCC["PING_GOOD"]] = True
    return HTMLResponse(json.dumps(retv))
async def root():
    cli_str = " ".join(
        filter(None, [
            "curl",
            "-u 'username[:password]'" if config.use_security else None,
            config.url,
            "-F 'files=@/path/to/file1'",
            "[-F 'files=@/path/to/file2' ...]",
        ]))
    simple_cli_str = " ".join(
        filter(None, [
            r"""sed 's/\(.*\)/-F "files=@\1"/' <<EOF | tr '\n' ' ' | xargs -pr curl""",
            "-u 'username[:password]'" if config.use_security else None,
            config.url, "\n"
            "/path/to/file1\n"
            "/path/to/file2\n"
            "`ls *.txt`\n"
            "EOF"
        ]))
    content = f"""
<body>
<form action="/" enctype="multipart/form-data" method="post">
<input name="files" type="file" multiple>
<input type="submit">
</form>
<pre>
{html.escape(cli_str)}
</pre>
<pre>
{html.escape(simple_cli_str)}
</pre>
</body>
    """
    return HTMLResponse(content=content)
Beispiel #30
0
async def language(request: Request,
                   set_lang: str = Form(...),
                   next: str = Form(...),
                   q: str = Form(default=None)):
    """
    A POST route used to set a session's language.

    Return a 303 See Other redirect to {next}?next={next}. If we are
    setting the language on any page, we want to preserve query
    parameters across the redirect.
    """
    if next[0] != '/':
        return HTMLResponse(b"Invalid 'next' parameter.", status_code=400)

    query_string = "?" + q if q else str()

    # If the user is authenticated, update the user's LangPreference.
    if request.user.is_authenticated():
        with db.begin():
            request.user.LangPreference = set_lang

    # In any case, set the response's AURLANG cookie that never expires.
    response = RedirectResponse(url=f"{next}{query_string}",
                                status_code=HTTPStatus.SEE_OTHER)
    secure = aurweb.config.getboolean("options", "disable_http_login")
    response.set_cookie("AURLANG",
                        set_lang,
                        secure=secure,
                        httponly=secure,
                        samesite=cookies.samesite())
    return response