Skip to content

Commit

Permalink
fix(gitlab-integration): fix GitLab integration
Browse files Browse the repository at this point in the history
  • Loading branch information
jkuri committed May 7, 2018
1 parent ea9478f commit 0a30888
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 24 deletions.
22 changes: 11 additions & 11 deletions src/api/commit-status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ export function sendSuccessStatus(build: any, buildId: number): Promise<void> {
return setBitbucketStatusSuccess(gitUrl, abstruseUrl,
build.repository.access_token);
} else if (build.repository.gitlab_id) {
let id = build.data.project_id ?
build.data.project_id : build.data.object_attributes.target_project_id;
let sha = build.data.checkout_sha || build.data.object_attributes.last_commit.id;
let id = build.repositories_id ?
build.repositories_id : build.data.object_attributes.target_repositories_id;
let sha = build.data.commit && build.data.commit.id || build.data.object_attributes.last_commit.id;
let gitUrl = null;
if (build.repository.api_url && build.repository.api_url !== '') {
gitUrl = `${build.repository.api_url}/projects/${id}/statuses/${sha}`;
Expand Down Expand Up @@ -86,9 +86,9 @@ export function sendPendingStatus(buildData: any, buildId: number): Promise<void

return setBitbucketStatusPending(gitUrl, abstruseUrl, buildData.repository.access_token);
} else if (buildData.repository.gitlab_id) {
let id = buildData.data.project_id ?
buildData.data.project_id : buildData.data.object_attributes.target_project_id;
let sha = buildData.data.checkout_sha || buildData.data.object_attributes.last_commit.id;
let id = buildData.repositories_id ?
buildData.repositories_id : buildData.data.object_attributes.target_repositories_id;
let sha = buildData.data.commit && buildData.data.commit.id || buildData.data.object_attributes.last_commit.id;
let gitUrl = null;
if (buildData.repository.api_url && buildData.repository.api_url !== '') {
gitUrl = `${buildData.repository.api_url}/projects/${id}/statuses/${sha}`;
Expand Down Expand Up @@ -140,9 +140,9 @@ export function sendFailureStatus(buildData: any, buildId: number): Promise<void

return setBitbucketStatusFailure(gitUrl, abstruseUrl, buildData.repository.access_token);
} else if (buildData.repository.gitlab_id) {
let id = buildData.data.project_id ?
buildData.data.project_id : buildData.data.object_attributes.target_project_id;
let sha = buildData.data.checkout_sha || buildData.data.object_attributes.last_commit.id;
let id = buildData.repositories_id ?
buildData.repositories_id : buildData.data.object_attributes.target_repositories_id;
let sha = buildData.data.commit && buildData.data.commit.id || buildData.data.object_attributes.last_commit.id;
let gitUrl = null;
if (buildData.repository.api_url && buildData.repository.api_url !== '') {
gitUrl = `${buildData.repository.api_url}/projects/${id}/statuses/${sha}`;
Expand Down Expand Up @@ -398,7 +398,7 @@ function sendRequest(url: string, data: any, headers: any): Promise<any> {
};
logger.next(msg);

reject(err);
resolve(err);
} else {
if (response.statusCode < 300 && response.statusCode >= 200) {
let msg: LogMessageType = {
Expand All @@ -417,7 +417,7 @@ function sendRequest(url: string, data: any, headers: any): Promise<any> {
};
logger.next(msg);

reject({
resolve({
statusCode: response.statusCode,
response: body
});
Expand Down
4 changes: 4 additions & 0 deletions src/api/db/repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@ export function getRepositoryOnly(id: number): Promise<any> {
resolve(repo);
})
.catch(err => reject(err));
} else if (token_data.type === 'gitlab') {
repo.access_token = repo.access_token && repo.access_token.token ?
`${repo.access_token.gitlab_username}:${repo.access_token.token}` : null;
resolve(repo);
} else {
repo.access_token = repo.access_token && repo.access_token.token ? repo.access_token.token : null;
resolve(repo);
Expand Down
21 changes: 15 additions & 6 deletions src/api/server-routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,9 @@ export function repositoryRoutes(): express.Router {
return Promise.resolve(accessToken);
})
.catch(err => Promise.reject(err));
} else if (token_data.type === 'gitlab') {
repo.access_token = repo.access_token && repo.access_token.token ?
`${repo.access_token.gitlab_username}:${repo.access_token.token}` : null;
} else {
accessToken = repo.access_token && repo.access_token.token ? repo.access_token.token : null;
return Promise.resolve(accessToken);
Expand Down Expand Up @@ -415,15 +418,12 @@ export function repositoryRoutes(): express.Router {
repository.gitlab_id + '/repository/branches/master';

let accessToken = null;
let headers = {};
if (repository.access_token) {
accessToken = repository.access_token.token || null;
}

if (accessToken) {
url = url.replace('//', `//${accessToken}@`);
headers = { 'PRIVATE-TOKEN': repository.access_token.token };
}

return getHttpJsonResponse(url);
return getHttpJsonResponse(url, headers);
} else if (repository.repository_provider === 'bitbucket') {
let url = repository.api_url + '/' + repository.user_login + '/' + repository.name +
'/commits/master';
Expand Down Expand Up @@ -495,6 +495,15 @@ export function repositoryRoutes(): express.Router {
return getConfigRawFile(repository);
})
.catch(err => Promise.reject(err));
} else if (token_data.type === 'gitlab') {
accessToken = repo.access_token && repo.access_token.token ?
`${repo.access_token.gitlab_username}:${repo.access_token.token}` : null;
repository = {
clone_url: repo.clone_url,
branch: repo.default_branch,
access_token: accessToken
};
return getConfigRawFile(repository);
} else {
accessToken = repo.access_token && repo.access_token.token ? repo.access_token.token : null;
repository = {
Expand Down
10 changes: 3 additions & 7 deletions src/api/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,10 @@ export function generateRandomId(): string {
return Math.random().toString(36).substring(7);
}

export function getHttpJsonResponse(url: string): Promise<any> {
export function getHttpJsonResponse(url: string, optHeaders: any = {}): Promise<any> {
return new Promise((resolve, reject) => {
let options = {
url: url,
headers: {
'User-Agent': 'request'
}
};
let headers = Object.assign({}, { 'User-Agent': 'abstruse' }, optHeaders);
let options = { url, headers };

request(options, (err, resp, body) => {
if (err) {
Expand Down

0 comments on commit 0a30888

Please sign in to comment.