gitbeaker/src/templates/ResourceAccessRequests.ts
2018-10-30 11:59:50 +01:00

51 lines
1.3 KiB
TypeScript

import URLJoin from 'url-join';
import { BaseService, RequestHelper } from '../infrastructure';
import { BaseModelContructorOptions } from '../infrastructure/BaseService';
export const ACCESS_LEVELS = {
GUEST: 10,
REPORTER: 20,
DEVELOPER: 30,
MASTER: 40,
OWNER: 50,
};
class ResourceAccessRequests extends BaseService {
protected ACCESS_LEVELS: typeof ACCESS_LEVELS;
constructor(resourceType: string, baseParams: BaseModelContructorOptions) {
super(baseParams);
this.url = URLJoin(this.url, resourceType);
this.ACCESS_LEVELS = ACCESS_LEVELS;
}
all(resourceId: ResourceId) {
const rId = encodeURIComponent(resourceId);
return RequestHelper.get(this, `${rId}/access_requests`);
}
request(resourceId: ResourceId) {
const rId = encodeURIComponent(resourceId);
return RequestHelper.post(this, `${rId}/access_requests`);
}
approve(resourceId: ResourceId, userId: UserId, { accessLevel = 30 }) {
const [rId, uId] = [resourceId, userId].map(encodeURIComponent);
return RequestHelper.post(this, `${rId}/access_requests/${uId}/approve`, {
accessLevel,
});
}
deny(resourceId: ResourceId, userId: UserId) {
const [rId, uId] = [resourceId, userId].map(encodeURIComponent);
return RequestHelper.delete(this, `${rId}/access_requests/${uId}`);
}
}
export default ResourceAccessRequests;