#!/usr/bin/env python3 import os import click import requests def get_username(): response = requests.post( "https://meta.sr.ht/query", json={"query": "{ me { canonicalName } }"}, headers={"Authorization": f"Bearer {os.getenv('SRHT')}"}, ).json() return response["data"]["me"]["canonicalName"] @click.group() def cli(): pass @cli.command(help="Prints out canonical name of the authenticated user") def whoami(): click.echo(get_username()) @cli.command(help="Provides paste to the paste.sr.ht") @click.option( "--public", "visibility", flag_value="public", help="Public paste that is visible on the user's profile", ) @click.option( "--unlisted", "visibility", flag_value="unlisted", default=True, help="Unlisted paste that is accessible via a link", ) @click.option( "--private", "visibility", flag_value="private", help="Private paste that is accessible only to the authenticated user", ) @click.argument( "src", type=click.File("r"), nargs=-1, ) def paste(visibility, src): request = { "visibility": visibility, "files": [ {"filename": s.name.split("/")[-1], "contents": s.read()} for s in src ], } response = requests.post( "https://paste.sr.ht/api/pastes", json=request, headers={"Authorization": f"token {os.getenv('SRHT_LEGACY')}"}, ).json() if "sha" in response: click.secho("*** Paste link ***", fg="green") click.secho( f"https://paste.sr.ht/{response['user']['canonical_name']}/{response['sha']}" ) click.secho("\n*** Files ***", fg="green") for file in response["files"]: filename = file["filename"] blob_id = file["blob_id"] click.secho(f"https://paste.sr.ht/blob/{blob_id}\t{filename}") else: click.secho(response, fg="red") if __name__ == "__main__": cli()