mirror of
https://github.com/jdalrymple/gitbeaker.git
synced 2026-01-18 15:55:30 +00:00
* Dependency and Configuration updates * CHANGELOG and README updates * Added support for camel case and snake case response types in the request helper and base service * Added support for the Dockerfile Templates API * Added support for the Issue Note Award Emojis API * Removed redundant Group Projects service * Updated types for a variety of services * Added type updates and removed protect and unprotect endpoints from the Branches API * Added type updates and signature endpoint to the Commits API * Added type updates and edit support to the Deployments API * Added type updates and a showRepository function to the Container Registry API * Added type updates and updated the service support to include create, edit, show and remove for the Feature Flags API * Added type updates and support for the removal of geonodes with the Geo Nodes API * Renamed UserKeys to UserSSHKeys and added type updates for the User SSH Keys API * Added type updates for the License Templates API and renamed the export to fix the spelling error * Added type updates and support for the transfer projects endpoint for the Groups API * Added type updates and removed removed events endpoint on the Projects API * Added type updates and modified the create function to require a resource name in the Todos API
76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
import { RequesterType, DefaultServiceOptions } from './RequesterUtils';
|
|
|
|
export interface BaseServiceOptions<C> {
|
|
oauthToken?: string;
|
|
token?: string;
|
|
jobToken?: string;
|
|
host?: string;
|
|
prefixUrl?: string;
|
|
version?: 3 | 4;
|
|
rejectUnauthorized?: boolean;
|
|
camelize?: C;
|
|
requesterFn?: (serviceOptions: DefaultServiceOptions) => RequesterType;
|
|
requestTimeout?: number;
|
|
profileToken?: string;
|
|
sudo?: string | number;
|
|
profileMode?: 'execution' | 'memory';
|
|
}
|
|
|
|
export class BaseService<C extends boolean = false> {
|
|
public readonly url: string;
|
|
|
|
public readonly requester: RequesterType;
|
|
|
|
public readonly requestTimeout: number;
|
|
|
|
public readonly headers: { [header: string]: string };
|
|
|
|
public readonly camelize: C | undefined;
|
|
|
|
public readonly rejectUnauthorized: boolean;
|
|
|
|
constructor({
|
|
token,
|
|
jobToken,
|
|
oauthToken,
|
|
sudo,
|
|
profileToken,
|
|
requesterFn,
|
|
camelize,
|
|
profileMode = 'execution',
|
|
host = 'https://gitlab.com',
|
|
prefixUrl = '',
|
|
version = 4,
|
|
rejectUnauthorized = true,
|
|
requestTimeout = 300000,
|
|
}: BaseServiceOptions<C> = {}) {
|
|
if (!requesterFn) throw new ReferenceError('requesterFn must be passed');
|
|
|
|
this.url = [host, 'api', `v${version}`, prefixUrl].join('/');
|
|
|
|
this.headers = {
|
|
'user-agent': 'gitbeaker',
|
|
};
|
|
this.rejectUnauthorized = rejectUnauthorized;
|
|
this.camelize = camelize;
|
|
this.requestTimeout = requestTimeout;
|
|
|
|
// Handle auth tokens
|
|
if (oauthToken) this.headers.authorization = `Bearer ${oauthToken}`;
|
|
else if (jobToken) this.headers['job-token'] = jobToken;
|
|
else if (token) this.headers['private-token'] = token;
|
|
|
|
// Profiling
|
|
if (profileToken) {
|
|
this.headers['X-Profile-Token'] = profileToken;
|
|
this.headers['X-Profile-Mode'] = profileMode;
|
|
}
|
|
|
|
// Set sudo
|
|
if (sudo) this.headers.Sudo = `${sudo}`;
|
|
|
|
// Set requester instance using this information
|
|
this.requester = requesterFn({ ...this });
|
|
}
|
|
}
|