34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import * as v from 'valibot';
|
||
|
||
import { applicationSchema, credentialApplicationSchema } from '../entities';
|
||
|
||
import type { PlApiBaseClient } from '../client-base';
|
||
import type { CreateApplicationParams } from '../params/apps';
|
||
|
||
/** Register client applications that can be used to obtain OAuth tokens. */
|
||
const apps = (client: PlApiBaseClient) => ({
|
||
/**
|
||
* Create an application
|
||
* Create a new application to obtain OAuth2 credentials.
|
||
* @see {@link https://docs.joinmastodon.org/methods/apps/#create}
|
||
*/
|
||
createApplication: async (params: CreateApplicationParams) => {
|
||
const response = await client.request('/api/v1/apps', { method: 'POST', body: params });
|
||
|
||
return v.parse(credentialApplicationSchema, response.json);
|
||
},
|
||
|
||
/**
|
||
* Verify your app works
|
||
* Confirm that the app’s OAuth2 credentials work.
|
||
* @see {@link https://docs.joinmastodon.org/methods/apps/#verify_credentials}
|
||
*/
|
||
verifyApplication: async () => {
|
||
const response = await client.request('/api/v1/apps/verify_credentials');
|
||
|
||
return v.parse(applicationSchema, response.json);
|
||
},
|
||
});
|
||
|
||
export { apps };
|