Publisher.coffee 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. mongoose = require 'mongoose'
  2. Schema = mongoose.Schema
  3. ObjectId = Schema.ObjectId
  4. settings = require 'settings-sharelatex'
  5. logger = require 'logger-sharelatex'
  6. request = require 'request'
  7. PublisherSchema = new Schema
  8. slug: { type: String, required: true }
  9. managerIds: [ type:ObjectId, ref:'User' ]
  10. # fetch publisher's (brand on v1) data from v1 API. Errors are ignored
  11. PublisherSchema.method 'fetchV1Data', (callback = (error, publisher)->) ->
  12. request {
  13. baseUrl: settings.apis.v1.url
  14. url: "/api/v2/brands/#{this.slug}"
  15. method: 'GET'
  16. auth:
  17. user: settings.apis.v1.user
  18. pass: settings.apis.v1.pass
  19. sendImmediately: true
  20. }, (error, response, body) =>
  21. try
  22. parsedBody = JSON.parse(body)
  23. catch error # log error and carry on without v1 data
  24. logger.err { model: 'Publisher', slug: this.slug, error }, '[fetchV1DataError]'
  25. this.name = parsedBody?.name
  26. this.partner = parsedBody?.partner
  27. callback(null, this)
  28. conn = mongoose.createConnection(settings.mongo.url, {
  29. server: {poolSize: settings.mongo.poolSize || 10},
  30. config: {autoIndex: false}
  31. })
  32. Publisher = conn.model 'Publisher', PublisherSchema
  33. exports.Publisher = Publisher
  34. exports.PublisherSchema = PublisherSchema