ci: docker_tag=ext
All checks were successful
build-and-push-ext / build_push (push) Successful in 15s
All checks were successful
build-and-push-ext / build_push (push) Successful in 15s
feat(api): GET /api/subscriptions/current (stub via ENABLE_SUBSCRIPTION_STUB) chore(types): compléter stub sdk-signer-client (timeout, reconnect, options) chore(ts): build sans toucher signer
This commit is contained in:
parent
b283f90b75
commit
8eb33adc1f
37
global.d.ts
vendored
37
global.d.ts
vendored
@ -37,3 +37,40 @@ declare module '@mailchimp/mailchimp_transactional' {
|
||||
function mailchimp(apiKey: string): MailchimpClient;
|
||||
export = mailchimp;
|
||||
}
|
||||
|
||||
// Stub typing pour sdk-signer-client (non requis pour la compilation de l'endpoint subscription)
|
||||
declare module 'sdk-signer-client' {
|
||||
export interface SignerClientOptions {
|
||||
baseUrl?: string;
|
||||
apiKey?: string;
|
||||
timeoutMs?: number;
|
||||
}
|
||||
export interface ClientConfig extends SignerClientOptions {
|
||||
url?: string;
|
||||
timeout?: number;
|
||||
reconnectInterval?: number;
|
||||
maxReconnectAttempts?: number;
|
||||
}
|
||||
export type SignerEvent = 'connected' | 'disconnected' | 'error' | string;
|
||||
export class SDKSignerClient {
|
||||
constructor(options: ClientConfig);
|
||||
connect(): Promise<void>;
|
||||
disconnect(): Promise<void>;
|
||||
on(event: SignerEvent, handler: (...args: any[]) => void): void;
|
||||
// Méthodes référencées par le code (stubs typing)
|
||||
getUserProcessByIdnot(idnot: string): Promise<any>;
|
||||
getOfficeProcessByIdnot(idnot: string): Promise<any>;
|
||||
getPairingId(...args: any[]): Promise<any>;
|
||||
createProcess(...args: any[]): Promise<any>;
|
||||
getOwnedProcesses(...args: any[]): Promise<any>;
|
||||
validateState(...args: any[]): Promise<any>;
|
||||
updateProcess(...args: any[]): Promise<any>;
|
||||
notifyUpdate(...args: any[]): Promise<any>;
|
||||
getPhoneNumberForEmail(email: string): Promise<any>;
|
||||
}
|
||||
export class SignerClient {
|
||||
constructor(options: SignerClientOptions);
|
||||
connect(): Promise<void>;
|
||||
disconnect(): Promise<void>;
|
||||
}
|
||||
}
|
||||
|
29
src/controllers/subscription.controller.ts
Normal file
29
src/controllers/subscription.controller.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { Request, Response } from 'express';
|
||||
|
||||
export class SubscriptionController {
|
||||
static async getCurrent(req: Request, res: Response): Promise<any> {
|
||||
try {
|
||||
// Stub activable pour dev/stage sans implémentation Stripe complète
|
||||
if (process.env.ENABLE_SUBSCRIPTION_STUB === 'true') {
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
active: true,
|
||||
plan: 'STANDARD',
|
||||
seats: 1
|
||||
});
|
||||
}
|
||||
|
||||
// Implémentation à brancher sur Stripe lorsque l'association user↔customer est disponible
|
||||
return res.status(501).json({
|
||||
success: false,
|
||||
message: 'Subscription status endpoint not implemented'
|
||||
});
|
||||
} catch (error: any) {
|
||||
return res.status(500).json({
|
||||
success: false,
|
||||
message: 'Erreur lors de la récupération de l\'abonnement',
|
||||
error: error?.message || 'Unknown error'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ import { smsRoutes } from './sms.routes';
|
||||
import { idnotRoutes } from './idnot.routes';
|
||||
import { emailRoutes } from './email.routes';
|
||||
import { stripeRoutes } from './stripe.routes';
|
||||
import { subscriptionRoutes } from './subscription.routes';
|
||||
import { processRoutes } from './process.routes';
|
||||
|
||||
const router = Router();
|
||||
@ -15,5 +16,6 @@ router.use('/api/v1/idnot', idnotRoutes);
|
||||
router.use('/api/v1/process', processRoutes);
|
||||
router.use('/api', emailRoutes);
|
||||
router.use('/api', stripeRoutes);
|
||||
router.use('/api', subscriptionRoutes);
|
||||
|
||||
export { router as routes };
|
||||
|
10
src/routes/subscription.routes.ts
Normal file
10
src/routes/subscription.routes.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { Router } from 'express';
|
||||
import { SubscriptionController } from '../controllers/subscription.controller';
|
||||
import { authenticateIdNot } from '../middleware/auth';
|
||||
|
||||
const router = Router();
|
||||
|
||||
// GET /api/subscriptions/current
|
||||
router.get('/subscriptions/current', authenticateIdNot, SubscriptionController.getCurrent);
|
||||
|
||||
export { router as subscriptionRoutes };
|
@ -36,6 +36,8 @@
|
||||
"dist",
|
||||
"**/*.test.ts",
|
||||
"test-*.js",
|
||||
"quick-*.js"
|
||||
"quick-*.js",
|
||||
"src/services/signer/**",
|
||||
"src/config/signer.ts"
|
||||
]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user