@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
84 lines (73 loc) • 2 kB
text/typescript
import { defineModule, defineRoute } from "../../shared/define-module"
import type {
SubscriptionBatchRequest,
SubscriptionBatchResponse,
SubscriptionCreateRequest,
SubscriptionCreateResponse,
SubscriptionDeleteRequest,
SubscriptionDeleteResponse,
SubscriptionExportQuery,
SubscriptionExportResponse,
SubscriptionGetQuery,
SubscriptionGetResponse,
SubscriptionImportResponse,
SubscriptionParseOpmlResponse,
SubscriptionUpdateRequest,
SubscriptionUpdateResponse,
} from "./types"
/**
* Subscriptions module definition with nested routes
*/
export const subscriptionsModule = defineModule({
name: "subscriptions",
prefix: "/subscriptions",
routes: {
// Basic subscription operations
get: defineRoute<SubscriptionGetQuery, SubscriptionGetResponse>("GET", "/"),
create: defineRoute<SubscriptionCreateRequest, SubscriptionCreateResponse>(
"POST",
"/",
),
update: defineRoute<SubscriptionUpdateRequest, SubscriptionUpdateResponse>(
"PATCH",
"/",
),
delete: defineRoute<SubscriptionDeleteRequest, SubscriptionDeleteResponse>(
"DELETE",
"/",
),
// Batch patch operations
batchUpdate: defineRoute<
SubscriptionBatchRequest,
SubscriptionBatchResponse
>("PATCH", "/batch"),
// OPML operations
/**
* FormData:
* file: File
* items: string
*/
import: defineRoute<FormData, SubscriptionImportResponse>(
"POST",
"/import",
{
requestType: "formData",
},
),
export: defineRoute<SubscriptionExportQuery, SubscriptionExportResponse>(
"GET",
"/export",
),
parseOpml: defineRoute<ArrayBuffer, SubscriptionParseOpmlResponse>(
"POST",
"/parse-opml",
{
requestType: "arrayBuffer",
},
),
},
})
// Export the API type
export type SubscriptionsAPI = typeof subscriptionsModule.api
// Re-export types for external consumption
export type * from "./types"