overleaf/services/web/app/coffee/Features/V1/V1Api.coffee

44 lines
1.4 KiB
CoffeeScript
Raw Normal View History

request = require 'request'
settings = require 'settings-sharelatex'
# TODO: check what happens when these settings aren't defined
DEFAULT_V1_PARAMS = {
baseUrl: settings?.apis?.v1?.url
auth:
user: settings?.apis?.v1?.user
pass: settings?.apis?.v1?.pass
json: true,
timeout: 30 * 1000
}
v1Request = request.defaults(DEFAULT_V1_PARAMS)
DEFAULT_V1_OAUTH_PARAMS = {
baseUrl: settings?.apis?.v1?.url
json: true,
timeout: 30 * 1000
}
v1OauthRequest = request.defaults(DEFAULT_V1_OAUTH_PARAMS)
module.exports = V1Api =
request: (options, callback) ->
return request(options) if !callback?
v1Request options, (error, response, body) ->
V1Api._responseHandler options, error, response, body, callback
oauthRequest: (options, token, callback) ->
return callback(new Error "uri required") unless options.uri?
options.method = "GET" unless options.method?
options.auth = bearer: token
v1OauthRequest options, (error, response, body) ->
V1Api._responseHandler options, error, response, body, callback
_responseHandler: (options, error, response, body, callback) ->
return callback(error, response, body) if error?
if 200 <= response.statusCode < 300 or response.statusCode in (options.expectedStatusCodes or [])
callback null, response, body
else
error = new Error("overleaf v1 returned non-success code: #{response.statusCode} #{options.method} #{options.uri}")
error.statusCode = response.statusCode
callback error