Add endpoint to download single job artifact file via stream

This commit is contained in:
Isaac Ouellet Therrien 2018-04-24 11:39:15 -04:00
parent 747d478998
commit 8f65bb6508
3 changed files with 15 additions and 0 deletions

View File

@ -1,5 +1,6 @@
import URLJoin from 'url-join';
import Request from 'request-promise';
import StreamableRequest from 'request';
import XMLHttpRequester from './XMLHttpRequester';
class BaseModel {
@ -7,6 +8,7 @@ class BaseModel {
this.url = URLJoin(url, 'api', 'v4');
this.headers = {};
this.requester = useXMLHttpRequest ? XMLHttpRequester : Request;
this.streamRequester = StreamableRequest;
this.useXMLHttpRequest = useXMLHttpRequest;
if (oauthToken) {

View File

@ -50,6 +50,13 @@ class RequestHelper {
return response.body;
}
static streamGet(service, endpoint, options = {}) {
return service.streamRequester.get(defaultRequest(service, endpoint, {
headers: service.headers,
qs: options,
}));
}
static post(service, endpoint, options = {}, form = false) {
const body = form ? 'fromData' : 'body';

View File

@ -12,6 +12,12 @@ class Jobs extends BaseService {
return RequestHelper.get(this, `projects/${pId}/jobs/${jobId}/artifacts/${artifactPath}`);
}
downloadSingleArtifactFileStream(projectId, jobId, artifactPath) {
const pId = encodeURIComponent(projectId);
return RequestHelper.streamGet(this, `projects/${pId}/jobs/${jobId}/artifacts/${artifactPath}`);
}
}
export default Jobs;