diff --git a/toot/api.py b/toot/api.py index 8ce9fad..3d18ba1 100644 --- a/toot/api.py +++ b/toot/api.py @@ -37,6 +37,38 @@ def create_app(domain, scheme='https'): return http.anon_post(url, json=json).json() +def register_account(app, username, email, password, locale="en", agreement=True): + """ + Register an account + https://docs.joinmastodon.org/methods/accounts/#create + """ + token = fetch_app_token(app)["access_token"] + url = f"{app.base_url}/api/v1/accounts" + headers = {"Authorization": f"Bearer {token}"} + + json = { + "username": username, + "email": email, + "password": password, + "agreement": agreement, + "locale": locale + } + + return http.anon_post(url, json=json, headers=headers).json() + + +def fetch_app_token(app): + json = { + "client_id": app.client_id, + "client_secret": app.client_secret, + "grant_type": "client_credentials", + "redirect_uri": "urn:ietf:wg:oauth:2.0:oob", + "scope": "read write" + } + + return http.anon_post(f"{app.base_url}/oauth/token", json=json).json() + + def login(app, username, password): url = app.base_url + '/oauth/token'