w-aura/src/api/resources/Paywall.ts
Daniil Chemerkin 88e4bc8d36 develop
2025-02-18 22:16:18 +00:00

82 lines
2.5 KiB
TypeScript

import routes from "@/routes";
import { getAuthHeaders } from "../utils";
interface Payload {
token: string;
}
export interface PayloadGet extends Payload {
placementKey: EPlacementKeys;
}
export enum EPlacementKeys {
"aura.placement.v1.mike" = "aura.placement.v1.mike",
"aura.placement.main" = "aura.placement.main",
"aura.placement.redesign.main" = "aura.placement.redesign.main",
"aura.placement.email.marketing" = "aura.placement.email.marketing",
"aura.placement.secret.discount" = "aura.placement.secret.discount",
"aura.placement.palmistry.main" = "aura.placement.palmistry.main",
"aura.placement.palmistry.redesign" = "aura.placement.palmistry.redesign",
"aura.placement.chat" = "aura.placement.chat",
"aura.placement.email.palmistry" = "aura.placement.email.palmistry",
"aura.placement.email.palmistry.discount" = "aura.placement.email.palmistry.discount",
"aura.placement.email.compatibility.discount" = "aura.placement.email.compatibility.discount",
"aura.placement.palmistry.secret.discount" = "aura.placement.palmistry.secret.discount",
"aura.placement.compatibility.v2" = "aura.placement.compatibility.v2",
"aura.placement.compatibility.v2.secret.discount" = "aura.placement.compatibility.v2.secret.discount",
"aura.placement.payment" = "aura.placement.payment" // anonymous payment
}
export interface ResponseGetSuccess {
placementId: string,
paywallId: string,
paywall: IPaywall;
currency: string;
}
interface ResponseGetError {
status: string;
message: string;
}
export interface IPaywall {
_id: string;
key: string;
name: string;
products: IPaywallProduct[];
properties: IPaywallProperties[];
}
export interface IPaywallProduct {
_id: string;
key: string;
productId: string;
name: string;
priceId: string;
type: string;
description: string;
discountPrice: null;
discountPriceId: null;
isDiscount: boolean;
isFreeTrial: boolean;
isTrial: boolean;
price: number;
trialDuration: number | null;
trialPrice: number | null;
trialPriceId: string | null;
currency?: string;
}
interface IPaywallProperties {
_id: string;
key: string;
value: string;
}
export type ResponseGet = ResponseGetSuccess | ResponseGetError;
export const createRequestGet = ({ token, placementKey }: PayloadGet): Request => {
const url = new URL(routes.server.getPaywallByPlacementKey(placementKey));
return new Request(url, { method: "GET", headers: getAuthHeaders(token) });
};