Skip to content

Commit

Permalink
feat: Adding support for profile tokens (#462)
Browse files Browse the repository at this point in the history
* feat: Adding support for Request Profiling
* feat: Adding CLI support for Request Tokens
  • Loading branch information
jdalrymple authored Oct 12, 2019
1 parent 68c4f19 commit 30f246e
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 13 deletions.
26 changes: 14 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,18 +64,20 @@ const api = new Gitlab({

Available instantiating options:

| Name | Optional | Default | Description |
| -------------------- | -------- | ----------------------------------------------------- | --------------------------------------------------------------- |
| `host` | Yes | `https://gitlab.com` | Gitlab Instance Host URL |
| `token` | No\* | N/A | Personal Token. Required (one of the three tokens are required) |
| `oauthToken` | No\* | N/A | OAuth Token. Required (one of the three tokens are required) |
| `jobToken` | No\* | N/A | CI Job Token. Required (one of the three tokens are required) |
| `rejectUnauthorized` | Yes | `false` | Http Certificate setting |
| `sudo` | Yes | `false` | Sudo query parameter |
| `version` | Yes | `v4` | API Version ID |
| `camelize` | Yes | `false` | Response Key Camelize. Camelizes all response body keys |
| `requester` | Yes | [KyRequester.ts](./src/infrastructure/KyRequester.ts) | Request Library Wrapper. Currently wraps Ky. |
| `requestTimeout` | Yes | `300000` | Request Library Timeout in ms |
| Name | Optional | Default | Description |
| -------------------- | -------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `host` | Yes | `https://gitlab.com` | Gitlab Instance Host URL |
| `token` | No\* | N/A | Personal Token. Required (one of the three tokens are required) |
| `oauthToken` | No\* | N/A | OAuth Token. Required (one of the three tokens are required) |
| `jobToken` | No\* | N/A | CI Job Token. Required (one of the three tokens are required) |
| `rejectUnauthorized` | Yes | `false` | Http Certificate setting |
| `sudo` | Yes | `false` | Sudo query parameter |
| `version` | Yes | `v4` | API Version ID |
| `camelize` | Yes | `false` | Response Key Camelize. Camelizes all response body keys |
| `requester` | Yes | [KyRequester.ts](./src/infrastructure/KyRequester.ts) | Request Library Wrapper. Currently wraps Ky. |
| `requestTimeout` | Yes | `300000` | Request Library Timeout in ms |
| `profileToken` | Yes | N/A | [Requests Profiles Token](https://docs.gitlab.com/ee/administration/monitoring/performance/request_profiling.html) |
| `profileMode` | Yes | `execution` | [Requests Profiles Token](https://docs.gitlab.com/ee/administration/monitoring/performance/request_profiling.html) |

### CLI Support

Expand Down
4 changes: 3 additions & 1 deletion src/bin/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ Object.entries(map).forEach(([name, methods]: [string, { name: string; args: str
type: 'number',
})
.option('gl-sudo', { type: 'string' })
.option('gl-camelize', { type: 'boolean' });
.option('gl-camelize', { type: 'boolean' })
.option('gl-profile-token', { type: 'string' })
.option('gl-profile-mode', { type: 'string' });

for (let i = 1; i < methods.length; i += 1) {
const m = methods[i];
Expand Down
9 changes: 9 additions & 0 deletions src/core/infrastructure/BaseService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ export class BaseService {
jobToken,
oauthToken,
sudo,
profileToken,
profileMode = 'execution',
host = 'https://gitlab.com',
url = '',
version = 'v4',
Expand All @@ -34,6 +36,13 @@ export class BaseService {
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;

if (profileMode) this.headers['X-Profile-Mode'] = profileMode;
}

// Set sudo
if (sudo) this.headers['Sudo'] = `${sudo}`;
}
Expand Down
2 changes: 2 additions & 0 deletions src/core/infrastructure/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export interface BaseServiceOptions extends Sudo {
camelize?: boolean;
requester?: Requester;
requestTimeout?: number;
profileToken?: string;
profileMode?: 'execution' | 'memory';
}

// RequestHelper
Expand Down

0 comments on commit 30f246e

Please sign in to comment.