| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /* eslint-disable
- camelcase,
- node/handle-callback-err,
- max-len,
- no-unused-vars,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- let UrlAgent
- const request = require('request')
- const _ = require('underscore')
- const urlValidator = require('valid-url')
- const { InvalidUrlError, UrlFetchFailedError } = require('./LinkedFilesErrors')
- const LinkedFilesHandler = require('./LinkedFilesHandler')
- const UrlHelper = require('../Helpers/UrlHelper')
- module.exports = UrlAgent = {
- createLinkedFile(
- project_id,
- linkedFileData,
- name,
- parent_folder_id,
- user_id,
- callback
- ) {
- linkedFileData = this._sanitizeData(linkedFileData)
- return this._getUrlStream(project_id, linkedFileData, user_id, function(
- err,
- readStream
- ) {
- if (err != null) {
- return callback(err)
- }
- readStream.on('error', callback)
- return readStream.on('response', function(response) {
- if (response.statusCode >= 200 && response.statusCode < 300) {
- readStream.resume()
- return LinkedFilesHandler.importFromStream(
- project_id,
- readStream,
- linkedFileData,
- name,
- parent_folder_id,
- user_id,
- function(err, file) {
- if (err != null) {
- return callback(err)
- }
- return callback(null, file._id)
- }
- ) // Created
- } else {
- const error = new UrlFetchFailedError(
- `url fetch failed: ${linkedFileData.url}`
- )
- error.statusCode = response.statusCode
- return callback(error)
- }
- })
- })
- },
- refreshLinkedFile(
- project_id,
- linkedFileData,
- name,
- parent_folder_id,
- user_id,
- callback
- ) {
- return this.createLinkedFile(
- project_id,
- linkedFileData,
- name,
- parent_folder_id,
- user_id,
- callback
- )
- },
- _sanitizeData(data) {
- return {
- provider: data.provider,
- url: UrlHelper.prependHttpIfNeeded(data.url)
- }
- },
- _getUrlStream(project_id, data, current_user_id, callback) {
- if (callback == null) {
- callback = function(error, fsPath) {}
- }
- callback = _.once(callback)
- let { url } = data
- if (!urlValidator.isWebUri(url)) {
- return callback(new InvalidUrlError(`invalid url: ${url}`))
- }
- url = UrlHelper.wrapUrlWithProxy(url)
- const readStream = request.get(url)
- readStream.pause()
- return callback(null, readStream)
- }
- }
|