datacite/bracco

View on GitHub
app/adapters/doi.js

Summary

Maintainability
A
0 mins
Test Coverage
import ApplicationAdapter from './application';
import ENV from 'bracco/config/environment';
import { isPresent } from '@ember/utils';

export default ApplicationAdapter.extend({
  urlForFindRecord(id, modelName, snapshot) {
    let baseUrl = this.buildURL(modelName, id, snapshot);
    let query = '';

    if (snapshot.adapterOptions !== undefined) {
      query = this.buildQuery(snapshot.adapterOptions);
    }
    query = query ? '?' + query : '';

    return baseUrl + query;
  },

  // For API requests from doi.save()/PATCH
  urlForUpdateRecord(id, modelName, snapshot) {
    let baseUrl = this.buildURL(modelName, id, snapshot);
    let query = '';

    query = '?' + 'affiliation=true&publisher=true';

    return baseUrl + query;
  },

  // For API requests from doi.save()/POST
  urlForCreateRecord(modelName, snapshot) {
    let baseUrl = this._super(...arguments);
    let query = '?' + 'affiliation=true&publisher=true';

    return baseUrl + query;
  },

  pathForType() {
    return 'dois';
  },

  buildQuery(options) {
    const allowedKeys = ['affiliation', 'publisher'];

    if (typeof options !== 'object') {
      return '';
    }

    const queryParts = [];

    for (const [key, value] of Object.entries(options)) {
      if (allowedKeys.includes(key) && value) {
        queryParts.push(`${key}=${value}`);
      }
    }
    return queryParts.join('&');
  }
});