import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper, endpoint } from '../infrastructure'; import type { GitlabAPIResponse, PaginationRequestOptions, PaginationTypes, ShowExpanded, Sudo, } from '../infrastructure'; export interface SecureFileSchema extends Record { id: number; name: string; checksum: string; checksum_algorithm: string; created_at: string; expires_at?: string; metadata?: { id: string; issuer: { C: string; O: string; CN: string; OU: string; }; subject: { C: string; O: string; CN: string; OU: string; UID: string; }; expires_at: string; }; } export class SecureFiles extends BaseResource { all( projectId: string | number, options?: PaginationRequestOptions

& Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/secure_files`, options, ); } create( projectId: string | number, name: string, file: { content: Blob; filename: string }, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()(this, `projects/${projectId}/secure_files`, { isForm: true, ...options, file: [file.content, file.filename], name, }); } download( projectId: string | number, secureFileId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/secure_files/${secureFileId}/download`, options, ); } remove( projectId: string | number, secureFileId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()( this, endpoint`projects/${projectId}/secure_files/${secureFileId}`, options, ); } show( projectId: string | number, secureFileId: string, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/secure_files/${secureFileId}`, options, ); } }