Something went wrong. Try again.
A social knowledge tool for research trails, built on ATProto semble.so
research-tool social-network tools-for-thought atproto
Something went wrong. Try again.
2.4 kB · 84 lines
TypeScript
at development
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485import { BaseClient } from './BaseClient';import { LoginWithAppPasswordRequest, InitiateOAuthSignInRequest, CompleteOAuthSignInRequest, RefreshAccessTokenRequest, GenerateExtensionTokensRequest, LoginWithAppPasswordResponse, InitiateOAuthSignInResponse, CompleteOAuthSignInResponse, RefreshAccessTokenResponse, GenerateExtensionTokensResponse,} from '../types';
export class UserClient extends BaseClient { async loginWithAppPassword( request: LoginWithAppPasswordRequest, ): Promise<LoginWithAppPasswordResponse> { return this.request<LoginWithAppPasswordResponse>( 'POST', '/api/users/login/app-password', request, ); }
async initiateOAuthSignIn( request?: InitiateOAuthSignInRequest, ): Promise<InitiateOAuthSignInResponse> { const params = new URLSearchParams(); if (request?.handle) { params.set('handle', request.handle); } const queryString = params.toString(); const endpoint = queryString ? `/api/users/login?${queryString}` : '/api/users/login'; return this.request<InitiateOAuthSignInResponse>('GET', endpoint); }
async completeOAuthSignIn( request: CompleteOAuthSignInRequest, ): Promise<CompleteOAuthSignInResponse> { const params = new URLSearchParams({ code: request.code, state: request.state, iss: request.iss, }); return this.request<CompleteOAuthSignInResponse>( 'GET', `/api/users/oauth/callback?${params}`, ); }
async refreshAccessToken( request: RefreshAccessTokenRequest, ): Promise<RefreshAccessTokenResponse> { return this.request<RefreshAccessTokenResponse>( 'POST', '/api/users/oauth/refresh', request, ); }
async generateExtensionTokens( request?: GenerateExtensionTokensRequest, ): Promise<GenerateExtensionTokensResponse> { return this.request<GenerateExtensionTokensResponse>( 'GET', '/api/users/extension/tokens', ); }
async logout(): Promise<{ success: boolean; message: string }> { if (!this.tokenManager) { throw new Error('TokenManager is required for logout'); } const refreshToken = await this.tokenManager.getRefreshToken(); return this.request<{ success: boolean; message: string }>( 'POST', '/api/users/logout', { refreshToken }, ); }}