@payforpress/payforpress-node-sdk
Version:
Official Node.js Server SDK for PayForPress API - An onboarding, paywall and payment solution for online media
123 lines (101 loc) • 3.25 kB
text/typescript
import {
PayForPressConfig,
UserResponse,
UserUpdate,
SearchParams,
ArticleResponse,
ArticlesResponse,
ArticleFilters,
AppearanceSchema,
TargetingSchema,
SettingsResponse,
OrganizationDetails,
PaymentResponse,
PaymentCreateParams,
PaymentSearchParams,
PaymentsResponse,
Article
} from './types';
import { PayForPressClient } from './client';
export class PayForPress extends PayForPressClient {
constructor(config: PayForPressConfig) {
super(config);
}
// User Management
async getUser(params: { email?: string; id?: string }): Promise<UserResponse> {
return this.post('/users/get', params);
}
async createUser(user: UserUpdate): Promise<UserResponse> {
return this.post('/users/create', user);
}
async updateUser(id: string, user: UserUpdate): Promise<UserResponse> {
return this.post('/users/update', { id, newProps: user });
}
async deleteUser(id: string): Promise<{ success: boolean; message: string }> {
return this.post('/users/delete', { id });
}
async searchUsers(
params: SearchParams
): Promise<{ success: boolean; users: any[]; total: number }> {
return this.post('/users/search', params);
}
// Article Management
async getArticle(
params: { id?: string; url?: string } | ArticleFilters
): Promise<ArticleResponse | ArticlesResponse> {
return this.post('/articles/get', params);
}
async createArticle(url: string): Promise<ArticleResponse> {
return this.post('/articles/create', { url });
}
async updateArticle(id: string, article: Partial<Article>): Promise<ArticleResponse> {
return this.post('/articles/update', { id, ...article });
}
async deleteArticle(id: string): Promise<{ success: boolean }> {
return this.post('/articles/delete', { id });
}
// Appearance Settings
async getAppearance(): Promise<{ success: boolean; appearance: AppearanceSchema }> {
return this.post('/appearance/get');
}
async updateAppearance(
appearance: AppearanceSchema
): Promise<{ success: boolean; appearance: AppearanceSchema }> {
return this.post('/appearance/update', appearance);
}
// Targeting Settings
async getTargeting(): Promise<{ targeting: TargetingSchema }> {
return this.post('/targeting/get');
}
async updateTargeting(
targeting: TargetingSchema
): Promise<{ message: string; targeting: TargetingSchema }> {
return this.post('/targeting/update', { targeting });
}
// Organization Settings
async getSettings(): Promise<SettingsResponse> {
return this.post('/settings/get');
}
async updateSettings(settings: OrganizationDetails): Promise<SettingsResponse> {
return this.post('/settings/update', settings);
}
// Payment Management
async createPayment(params: PaymentCreateParams): Promise<PaymentResponse> {
return this.post('/payments/create', params);
}
async getPayment(id: string): Promise<PaymentResponse> {
return this.post('/payments/get', { id });
}
async searchPayments(params: PaymentSearchParams): Promise<PaymentsResponse> {
return this.post('/payments/search', params);
}
// Analytics
async getAnalytics(params: {
type: 'get' | 'search';
startDate?: string;
endDate?: string;
}): Promise<{ success: boolean; data: any }> {
return this.post('/analytics', params);
}
}
export * from './types';