UNPKG

@microbitsclub/microbits-client

Version:
29 lines (28 loc) 1.49 kB
import { APIResult } from './api-result'; import { MicrobitsClient } from './microbits-client'; import { UrlQuery } from './url'; export declare type MaybePromise<T> = T | Promise<T>; export interface PaywallRequestHandler<Ctx> { microbits: MicrobitsClient; getUserSessionIdCookie: (ctx: Ctx, name: string) => MaybePromise<string | undefined>; setUserSessionIdCookie: (ctx: Ctx, name: string, userSessionId: string) => MaybePromise<void>; } export declare type PaywallRequestHandlerSuccess = { type: 'serve-content'; contentUrl: string; userSessionId: string; } | { type: 'content-redirect'; statusCode: number; contentUrl: string; query?: UrlQuery; }; export interface RequestError<T extends string> { cause: T; statusCode: number; message: string; } export declare type PaywallRequestHandlerError = RequestError<'getPaywallByContentUrl'> | RequestError<'getUserSessionIdCookie'> | RequestError<'isUserSessionAuthorizedForPaywall'> | RequestError<'activateUserSession'> | RequestError<'createPaywallPurchase'>; export declare type PaywallRequestHandlerResult = APIResult<PaywallRequestHandlerSuccess, PaywallRequestHandlerError>; export declare const getPaywallRequestHandler: <Ctx>(config: PaywallRequestHandler<Ctx>) => (ctx: Ctx, requestUrl: string) => Promise<PaywallRequestHandlerResult>; export declare const getClientRequestHandler: <Ctx>(config: PaywallRequestHandler<Ctx>) => (ctx: Ctx, requestUrl: string) => Promise<any>;