@useapi/midjourney-api
Version:
TypeScript client library for Midjourney API by useapi.net
79 lines (65 loc) • 2.21 kB
text/typescript
import { RequestContext } from "../http/http";
/**
* Interface authentication schemes.
*/
export interface SecurityAuthentication {
/*
* @return returns the name of the security authentication as specified in OAI
*/
getName(): string;
/**
* Applies the authentication scheme to the request context
*
* @params context the request context which should use this authentication scheme
*/
applySecurityAuthentication(context: RequestContext): void | Promise<void>;
}
export interface TokenProvider {
getToken(): Promise<string> | string;
}
/**
* Applies http authentication to the request context.
*/
export class ApiTokenAuthentication implements SecurityAuthentication {
/**
* Configures the http authentication with the required details.
*
* @param tokenProvider service that can provide the up-to-date token when needed
*/
public constructor(private tokenProvider: TokenProvider) { }
public getName(): string {
return "apiToken";
}
public async applySecurityAuthentication(context: RequestContext) {
context.setHeaderParam("Authorization", "Bearer " + await this.tokenProvider.getToken());
}
}
export type AuthMethods = {
"default"?: SecurityAuthentication,
"apiToken"?: SecurityAuthentication
}
export type ApiKeyConfiguration = string;
export type HttpBasicConfiguration = { "username": string, "password": string };
export type HttpBearerConfiguration = { tokenProvider: TokenProvider };
export type OAuth2Configuration = { accessToken: string };
export type AuthMethodsConfiguration = {
"default"?: SecurityAuthentication,
"apiToken"?: HttpBearerConfiguration
}
/**
* Creates the authentication methods from a swagger description.
*
*/
export function configureAuthMethods(config: AuthMethodsConfiguration | undefined): AuthMethods {
let authMethods: AuthMethods = {}
if (!config) {
return authMethods;
}
authMethods["default"] = config["default"]
if (config["apiToken"]) {
authMethods["apiToken"] = new ApiTokenAuthentication(
config["apiToken"]["tokenProvider"]
);
}
return authMethods;
}