mirror of
https://github.com/jdalrymple/gitbeaker.git
synced 2026-01-18 15:55:30 +00:00
Draft of XMLHttpRequest support, package out of date
This commit is contained in:
parent
027d2c44c4
commit
97dc29d941
@ -1,9 +1,13 @@
|
||||
import URLJoin from 'url-join';
|
||||
import Request from 'request-promise';
|
||||
import XMLHttpRequester from './XMLHttpRequester';
|
||||
|
||||
class BaseModel {
|
||||
constructor({ url = 'https://gitlab.com', token, oauthToken }) {
|
||||
constructor({ url = 'https://gitlab.com', token, oauthToken, useXMLHttpRequest = false }) {
|
||||
this.url = URLJoin(url, 'api', 'v4');
|
||||
this.headers = {};
|
||||
this.requester = useXMLHttpRequest ? XMLHttpRequester : Request;
|
||||
this.useXMLHttpRequest = useXMLHttpRequest;
|
||||
|
||||
if (oauthToken) {
|
||||
this.headers.Authorization = `Bearer ${oauthToken}`;
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import Request from 'request-promise';
|
||||
import Humps from 'humps';
|
||||
import LinkParser from 'parse-link-header';
|
||||
import QS from 'qs';
|
||||
import URLJoin from 'url-join';
|
||||
|
||||
function defaultRequest(
|
||||
url,
|
||||
endpoint,
|
||||
{ headers, body, qs, formData, resolveWithFullResponse = false },
|
||||
{ headers, body, qs, formData, resolveWithFullResponse = false, useXMLHttpRequest },
|
||||
) {
|
||||
const params = {
|
||||
url: URLJoin(url, endpoint),
|
||||
@ -15,7 +15,12 @@ function defaultRequest(
|
||||
};
|
||||
|
||||
if (body) params.body = Humps.decamelizeKeys(body);
|
||||
if (qs) params.qs = Humps.decamelizeKeys(qs);
|
||||
if (qs) {
|
||||
if (useXMLHttpRequest) {
|
||||
// The xhr package doesn't have a way of passing in a qs object until v3
|
||||
params.url = URLJoin(params.url, `?${QS.stringify(qs)}`);
|
||||
} else params.qs = Humps.decamelizeKeys(qs);
|
||||
}
|
||||
if (formData) params.formData = formData;
|
||||
|
||||
params.resolveWithFullResponse = resolveWithFullResponse;
|
||||
@ -25,7 +30,7 @@ function defaultRequest(
|
||||
|
||||
class RequestHelper {
|
||||
static async get(service, endpoint, options = {}) {
|
||||
const response = await Request.get(defaultRequest(service.url, endpoint, {
|
||||
const response = await service.requester.get(defaultRequest(service.url, endpoint, {
|
||||
headers: service.headers,
|
||||
qs: options,
|
||||
resolveWithFullResponse: true,
|
||||
@ -48,21 +53,21 @@ class RequestHelper {
|
||||
static post(service, endpoint, options = {}, form = false) {
|
||||
const body = form ? 'fromData' : 'body';
|
||||
|
||||
return Request.post(defaultRequest(service.url, endpoint, {
|
||||
return service.requester.post(defaultRequest(service.url, endpoint, {
|
||||
headers: service.headers,
|
||||
[body]: options,
|
||||
}));
|
||||
}
|
||||
|
||||
static put(service, endpoint, options = {}) {
|
||||
return Request.put(defaultRequest(service.url, endpoint, {
|
||||
return service.requester.put(defaultRequest(service.url, endpoint, {
|
||||
headers: service.headers,
|
||||
body: options,
|
||||
}));
|
||||
}
|
||||
|
||||
static delete(service, endpoint, options = {}) {
|
||||
return Request.delete(defaultRequest(service.url, endpoint, {
|
||||
return service.requester.delete(defaultRequest(service.url, endpoint, {
|
||||
headers: service.headers,
|
||||
qs: options,
|
||||
}));
|
||||
|
||||
12
src/infrastructure/XMLHttpRequester.js
Normal file
12
src/infrastructure/XMLHttpRequester.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { promisify as Promisify } from 'util';
|
||||
import XHR from 'xhr';
|
||||
|
||||
const XMLHttpRequester = Promisify(XHR);
|
||||
XMLHttpRequester.del = Promisify(XHR.del);
|
||||
XMLHttpRequester.get = Promisify(XHR.get);
|
||||
XMLHttpRequester.head = Promisify(XHR.head);
|
||||
XMLHttpRequester.patch = Promisify(XHR.patch);
|
||||
XMLHttpRequester.post = Promisify(XHR.post);
|
||||
XMLHttpRequester.put = Promisify(XHR.put);
|
||||
|
||||
export default XMLHttpRequester;
|
||||
Loading…
x
Reference in New Issue
Block a user