Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import socket
- import sys
- import webbrowser
- import praw
- def receive_connection():
- """Wait for and then return a connected socket..
- Opens a TCP connection on port 8080, and waits for a single client.
- """
- server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- server.bind(("localhost", 8080))
- server.listen(1)
- client = server.accept()[0]
- server.close()
- return client
- def send_message(client, message):
- """Send message to client and close the connection."""
- print(message)
- client.send(f"HTTP/1.1 200 OK\r\n\r\n{message}".encode("utf-8"))
- client.close()
- def main():
- """Provide the program's entry point when directly executed."""
- commaScopes = input(
- "Now enter a comma separated list of scopes, or all for all tokens: "
- )
- if commaScopes.lower() == "all":
- scopes = ["*"]
- else:
- scopes = commaScopes.strip().split(",")
- reddit = praw.Reddit(
- client_id='BGLk80bE3REJAw',
- client_secret=None,
- redirect_uri="http://localhost:8080",
- user_agent="Reddit CLI by /u/Gaffclant v1.0",
- )
- state = str(random.randint(0, 65000))
- url = reddit.auth.url(scopes, state, implicit=True)
- webbrowser.open(url)
- sys.stdout.flush()
- client = receive_connection()
- data = client.recv(1024).decode("utf-8")
- print(data)
- param_tokens = data.split(" ", 2)[1]
- print(param_tokens)
- param_tokens = param_tokens.split("#", 2)[0]
- print(param_tokens)
- param_tokens=param_tokens.split("&")
- params = {
- key: value for (key, value) in [token.split("=") for token in param_tokens]
- }
- if state != params["state"]:
- send_message(
- client,
- f"State mismatch. Expected: {state} Received: {params['state']}",
- )
- return 1
- elif "error" in params:
- send_message(client, params["error"])
- return 1
- refresh_token = reddit.auth.authorize(params["access_token"])
- send_message(client, f"Access Token: {access_token}")
- return 0
- if __name__ == "__main__":
- sys.exit(main())
Advertisement
Add Comment
Please, Sign In to add comment