import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../infrastructure'; import type { GitlabAPIResponse, ShowExpanded, Sudo } from '../infrastructure'; export interface UserGPGKeySchema extends Record { id: number; key: string; created_at: string; } const url = (userId?: number) => (userId ? `users/${userId}/gpg_keys` : 'user/gpg_keys'); export class UserGPGKeys extends BaseResource { // Convienence method add( key: string, options?: { userId?: number } & Sudo & ShowExpanded, ): Promise> { return this.create(key, options); } all({ userId, ...options }: { userId?: number } & Sudo & ShowExpanded = {}): Promise< GitlabAPIResponse > { return RequestHelper.get()(this, url(userId), options); } create( key: string, { userId, ...options }: { userId?: number } & Sudo & ShowExpanded = {}, ): Promise> { return RequestHelper.post()(this, url(userId), { key, ...options, }); } show( keyId: number, { userId, ...options }: { userId?: number } & Sudo & ShowExpanded = {}, ): Promise> { return RequestHelper.get()(this, `${url(userId)}/${keyId}`, options); } remove( keyId: number, { userId, ...options }: { userId?: number } & Sudo & ShowExpanded = {}, ): Promise> { return RequestHelper.del()(this, `${url(userId)}/${keyId}`, options); } }