Mercurial > prosody-modules
view mod_rest/example/prosody_oauth.py @ 5245:e22cae58141d
mod_http_oauth2: Organize HTTP routes with comments
Starting to get hard to follow. Usually one would start tracing the
steps at the HTTP authorize route. Vaguely sorted alphabetically by
path and point in the flow. (/register comes before /authorize tho)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 12 Mar 2023 11:27:29 +0100 |
parents | ccce785f53e1 |
children | 0e5a37f55440 |
line wrap: on
line source
from oauthlib.oauth2 import LegacyApplicationClient from requests_oauthlib import OAuth2Session class ProsodyRestClient(LegacyApplicationClient): pass class ProsodyRestSession(OAuth2Session): def __init__(self, base_url=None, token_url=None, rest_url=None, *args, **kwargs): if base_url and not token_url: token_url = base_url + "/oauth2/token" if base_url and not rest_url: rest_url = base_url + "/rest" self._prosody_rest_url = rest_url self._prosody_token_url = token_url super().__init__(client=ProsodyRestClient(*args, **kwargs)) def fetch_token(self, *args, **kwargs): return super().fetch_token(token_url=self._prosody_token_url, *args, **kwargs) def xmpp(self, json=None, *args, **kwargs): return self.post(self._prosody_rest_url, json=json, *args, **kwargs) if __name__ == "__main__": # Example usage # from prosody_oauth import ProsodyRestSession from getpass import getpass p = ProsodyRestSession(base_url=input("Base URL: "), client_id="app") p.fetch_token(username=input("XMPP Address: "), password=getpass("Password: ")) print(p.xmpp(json={"disco": True, "to": "jabber.org"}).json())