Publisher.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* eslint-disable
  2. handle-callback-err,
  3. max-len,
  4. */
  5. // TODO: This file was created by bulk-decaffeinate.
  6. // Fix any style issues and re-enable lint.
  7. /*
  8. * decaffeinate suggestions:
  9. * DS102: Remove unnecessary code created because of implicit returns
  10. * DS207: Consider shorter variations of null checks
  11. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  12. */
  13. const mongoose = require('mongoose')
  14. const { Schema } = mongoose
  15. const { ObjectId } = Schema
  16. const settings = require('settings-sharelatex')
  17. const logger = require('logger-sharelatex')
  18. const request = require('request')
  19. const PublisherSchema = new Schema({
  20. slug: { type: String, required: true },
  21. managerIds: [{ type: ObjectId, ref: 'User' }]
  22. })
  23. // fetch publisher's (brand on v1) data from v1 API. Errors are ignored
  24. PublisherSchema.method('fetchV1Data', function(callback) {
  25. if (callback == null) {
  26. callback = function(error, publisher) {}
  27. }
  28. return request(
  29. {
  30. baseUrl: settings.apis.v1.url,
  31. url: `/api/v2/brands/${this.slug}`,
  32. method: 'GET',
  33. auth: {
  34. user: settings.apis.v1.user,
  35. pass: settings.apis.v1.pass,
  36. sendImmediately: true
  37. }
  38. },
  39. (error, response, body) => {
  40. let parsedBody
  41. try {
  42. parsedBody = JSON.parse(body)
  43. } catch (error1) {
  44. // log error and carry on without v1 data
  45. error = error1
  46. logger.err(
  47. { model: 'Publisher', slug: this.slug, error },
  48. '[fetchV1DataError]'
  49. )
  50. }
  51. this.name = parsedBody != null ? parsedBody.name : undefined
  52. this.partner = parsedBody != null ? parsedBody.partner : undefined
  53. return callback(null, this)
  54. }
  55. )
  56. })
  57. const conn = mongoose.createConnection(settings.mongo.url, {
  58. server: { poolSize: settings.mongo.poolSize || 10 },
  59. config: { autoIndex: false }
  60. })
  61. const Publisher = conn.model('Publisher', PublisherSchema)
  62. exports.Publisher = Publisher
  63. exports.PublisherSchema = PublisherSchema