A social knowledge tool for researchers built on ATProto
at main 90 lines 2.4 kB view raw
1import { BaseClient } from './BaseClient'; 2import { 3 AddUrlToLibraryRequest, 4 AddUrlToLibraryResponse, 5 AddCardToLibraryRequest, 6 AddCardToLibraryResponse, 7 AddCardToCollectionRequest, 8 AddCardToCollectionResponse, 9 UpdateNoteCardRequest, 10 UpdateNoteCardResponse, 11 UpdateUrlCardAssociationsRequest, 12 UpdateUrlCardAssociationsResponse, 13 RemoveCardFromLibraryRequest, 14 RemoveCardFromLibraryResponse, 15 RemoveCardFromCollectionRequest, 16 RemoveCardFromCollectionResponse, 17} from '@semble/types'; 18 19export class CardClient extends BaseClient { 20 async addUrlToLibrary( 21 request: AddUrlToLibraryRequest, 22 ): Promise<AddUrlToLibraryResponse> { 23 return this.request<AddUrlToLibraryResponse>( 24 'POST', 25 '/api/cards/library/urls', 26 request, 27 ); 28 } 29 30 async addCardToLibrary( 31 request: AddCardToLibraryRequest, 32 ): Promise<AddCardToLibraryResponse> { 33 return this.request<AddCardToLibraryResponse>( 34 'POST', 35 '/api/cards/library', 36 request, 37 ); 38 } 39 40 async addCardToCollection( 41 request: AddCardToCollectionRequest, 42 ): Promise<AddCardToCollectionResponse> { 43 return this.request<AddCardToCollectionResponse>( 44 'POST', 45 '/api/cards/collections', 46 request, 47 ); 48 } 49 50 async updateNoteCard( 51 request: UpdateNoteCardRequest, 52 ): Promise<UpdateNoteCardResponse> { 53 return this.request<UpdateNoteCardResponse>( 54 'PUT', 55 `/api/cards/${request.cardId}/note`, 56 { 57 note: request.note, 58 }, 59 ); 60 } 61 62 async updateUrlCardAssociations( 63 request: UpdateUrlCardAssociationsRequest, 64 ): Promise<UpdateUrlCardAssociationsResponse> { 65 return this.request<UpdateUrlCardAssociationsResponse>( 66 'PUT', 67 '/api/cards/url/associations', 68 request, 69 ); 70 } 71 72 async removeCardFromLibrary( 73 request: RemoveCardFromLibraryRequest, 74 ): Promise<RemoveCardFromLibraryResponse> { 75 return this.request<RemoveCardFromLibraryResponse>( 76 'DELETE', 77 `/api/cards/${request.cardId}/library`, 78 ); 79 } 80 81 async removeCardFromCollection( 82 request: RemoveCardFromCollectionRequest, 83 ): Promise<RemoveCardFromCollectionResponse> { 84 const collectionIdsParam = request.collectionIds.join(','); 85 return this.request<RemoveCardFromCollectionResponse>( 86 'DELETE', 87 `/api/cards/${request.cardId}/collections?collectionIds=${encodeURIComponent(collectionIdsParam)}`, 88 ); 89 } 90}