Skip to content

Commit

Permalink
js: Replace OpenAPI generator http code with our own (#1671)
Browse files Browse the repository at this point in the history
  • Loading branch information
svix-jplatte authored Jan 30, 2025
2 parents e4188e6 + d2f38e4 commit 71fafa4
Show file tree
Hide file tree
Showing 14 changed files with 877 additions and 459 deletions.
80 changes: 45 additions & 35 deletions javascript/src/api/application.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
// this file is @generated (with the exception of getOrCreate)
// this file is @generated
import {
Configuration,
ApplicationApi,
ApplicationIn,
ApplicationOut,
ApplicationPatch,
ListResponseApplicationOut,
Ordering,
} from "../openapi";
import { HttpMethod, SvixRequest, SvixRequestContext } from "../request";
import { PostOptions } from "../util";

export interface ApplicationListOptions {
Expand All @@ -20,73 +19,84 @@ export interface ApplicationListOptions {
}

export class Application {
private readonly api: ApplicationApi;

public constructor(config: Configuration) {
this.api = new ApplicationApi(config);
}
public constructor(private readonly requestCtx: SvixRequestContext) {}

/** List of all the organization's applications. */
public list(options?: ApplicationListOptions): Promise<ListResponseApplicationOut> {
return this.api.v1ApplicationList({
...options,
iterator: options?.iterator ?? undefined,
});
const request = new SvixRequest(HttpMethod.GET, "/api/v1/app");

request.setQueryParam("limit", options?.limit);
request.setQueryParam("iterator", options?.iterator);
request.setQueryParam("order", options?.order);

return request.send(this.requestCtx, "ListResponseApplicationOut");
}

/** Create a new application. */
public create(
applicationIn: ApplicationIn,
options?: PostOptions
): Promise<ApplicationOut> {
return this.api.v1ApplicationCreate({
applicationIn,
...options,
});
const request = new SvixRequest(HttpMethod.POST, "/api/v1/app");

request.setHeaderParam("idempotency-key", options?.idempotencyKey);
request.setBody(applicationIn, "ApplicationIn");

return request.send(this.requestCtx, "ApplicationOut");
}

/** Get the application with the UID from `applicationIn`, or create it if it doesn't exist yet. */
public getOrCreate(
applicationIn: ApplicationIn,
options?: PostOptions
): Promise<ApplicationOut> {
return this.api.v1ApplicationCreate({
applicationIn,
...options,
getIfExists: true,
});
const request = new SvixRequest(HttpMethod.POST, "/api/v1/app");

request.setQueryParam("get_if_exists", true);
request.setHeaderParam("idempotency-key", options?.idempotencyKey);
request.setBody(applicationIn, "ApplicationIn");

return request.send(this.requestCtx, "ApplicationOut");
}

/** Get an application. */
public get(appId: string): Promise<ApplicationOut> {
return this.api.v1ApplicationGet({
appId,
});
const request = new SvixRequest(HttpMethod.GET, "/api/v1/app/{app_id}");

request.setPathParam("app_id", appId);

return request.send(this.requestCtx, "ApplicationOut");
}

/** Update an application. */
public update(appId: string, applicationIn: ApplicationIn): Promise<ApplicationOut> {
return this.api.v1ApplicationUpdate({
appId,
applicationIn,
});
const request = new SvixRequest(HttpMethod.PUT, "/api/v1/app/{app_id}");

request.setPathParam("app_id", appId);
request.setBody(applicationIn, "ApplicationIn");

return request.send(this.requestCtx, "ApplicationOut");
}

/** Delete an application. */
public delete(appId: string): Promise<void> {
return this.api.v1ApplicationDelete({
appId,
});
const request = new SvixRequest(HttpMethod.DELETE, "/api/v1/app/{app_id}");

request.setPathParam("app_id", appId);

return request.sendNoResponseBody(this.requestCtx);
}

/** Partially update an application. */
public patch(
appId: string,
applicationPatch: ApplicationPatch
): Promise<ApplicationOut> {
return this.api.v1ApplicationPatch({
appId,
applicationPatch,
});
const request = new SvixRequest(HttpMethod.PATCH, "/api/v1/app/{app_id}");

request.setPathParam("app_id", appId);
request.setBody(applicationPatch, "ApplicationPatch");

return request.send(this.requestCtx, "ApplicationOut");
}
}
60 changes: 36 additions & 24 deletions javascript/src/api/authentication.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
// this file is @generated
import {
Configuration,
AuthenticationApi,
AppPortalAccessIn,
AppPortalAccessOut,
ApplicationTokenExpireIn,
DashboardAccessOut,
} from "../openapi";
import { HttpMethod, SvixRequest, SvixRequestContext } from "../request";
import { PostOptions } from "../util";

export class Authentication {
private readonly api: AuthenticationApi;

public constructor(config: Configuration) {
this.api = new AuthenticationApi(config);
}
public constructor(private readonly requestCtx: SvixRequestContext) {}

/** Use this function to get magic links (and authentication codes) for connecting your users to the Consumer Application Portal. */
public appPortalAccess(
appId: string,
appPortalAccessIn: AppPortalAccessIn,
options?: PostOptions
): Promise<AppPortalAccessOut> {
return this.api.v1AuthenticationAppPortalAccess({
appId,
appPortalAccessIn,
...options,
});
const request = new SvixRequest(
HttpMethod.POST,
"/api/v1/auth/app-portal-access/{app_id}"
);

request.setPathParam("app_id", appId);
request.setHeaderParam("idempotency-key", options?.idempotencyKey);
request.setBody(appPortalAccessIn, "AppPortalAccessIn");

return request.send(this.requestCtx, "AppPortalAccessOut");
}

/** Expire all of the tokens associated with a specific application. */
Expand All @@ -35,11 +35,16 @@ export class Authentication {
applicationTokenExpireIn: ApplicationTokenExpireIn,
options?: PostOptions
): Promise<void> {
return this.api.v1AuthenticationExpireAll({
appId,
applicationTokenExpireIn,
...options,
});
const request = new SvixRequest(
HttpMethod.POST,
"/api/v1/auth/app/{app_id}/expire-all"
);

request.setPathParam("app_id", appId);
request.setHeaderParam("idempotency-key", options?.idempotencyKey);
request.setBody(applicationTokenExpireIn, "ApplicationTokenExpireIn");

return request.sendNoResponseBody(this.requestCtx);
}

/**
Expand All @@ -53,10 +58,15 @@ export class Authentication {
appId: string,
options?: PostOptions
): Promise<DashboardAccessOut> {
return this.api.v1AuthenticationDashboardAccess({
appId,
...options,
});
const request = new SvixRequest(
HttpMethod.POST,
"/api/v1/auth/dashboard-access/{app_id}"
);

request.setPathParam("app_id", appId);
request.setHeaderParam("idempotency-key", options?.idempotencyKey);

return request.send(this.requestCtx, "DashboardAccessOut");
}

/**
Expand All @@ -65,8 +75,10 @@ export class Authentication {
* Trying to log out other tokens will fail.
*/
public logout(options?: PostOptions): Promise<void> {
return this.api.v1AuthenticationLogout({
...options,
});
const request = new SvixRequest(HttpMethod.POST, "/api/v1/auth/logout");

request.setHeaderParam("idempotency-key", options?.idempotencyKey);

return request.sendNoResponseBody(this.requestCtx);
}
}
30 changes: 16 additions & 14 deletions javascript/src/api/background_task.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
// this file is @generated
import {
Configuration,
BackgroundTasksApi,
BackgroundTaskOut,
BackgroundTaskStatus,
BackgroundTaskType,
ListResponseBackgroundTaskOut,
Ordering,
} from "../openapi";
import { HttpMethod, SvixRequest, SvixRequestContext } from "../request";

export interface BackgroundTaskListOptions {
/** Filter the response based on the status. */
Expand All @@ -23,20 +22,21 @@ export interface BackgroundTaskListOptions {
}

export class BackgroundTask {
private readonly api: BackgroundTasksApi;

public constructor(config: Configuration) {
this.api = new BackgroundTasksApi(config);
}
public constructor(private readonly requestCtx: SvixRequestContext) {}

/** List background tasks executed in the past 90 days. */
public list(
options?: BackgroundTaskListOptions
): Promise<ListResponseBackgroundTaskOut> {
return this.api.listBackgroundTasks({
...options,
iterator: options?.iterator ?? undefined,
});
const request = new SvixRequest(HttpMethod.GET, "/api/v1/background-task");

request.setQueryParam("status", options?.status);
request.setQueryParam("task", options?.task);
request.setQueryParam("limit", options?.limit);
request.setQueryParam("iterator", options?.iterator);
request.setQueryParam("order", options?.order);

return request.send(this.requestCtx, "ListResponseBackgroundTaskOut");
}

/**
Expand All @@ -52,8 +52,10 @@ export class BackgroundTask {

/** Get a background task by ID. */
public get(taskId: string): Promise<BackgroundTaskOut> {
return this.api.getBackgroundTask({
taskId,
});
const request = new SvixRequest(HttpMethod.GET, "/api/v1/background-task/{task_id}");

request.setPathParam("task_id", taskId);

return request.send(this.requestCtx, "BackgroundTaskOut");
}
}
Loading

0 comments on commit 71fafa4

Please sign in to comment.