67 lines
2.5 KiB
CoffeeScript
67 lines
2.5 KiB
CoffeeScript
import Ember from 'ember'
|
|
import DS from 'ember-data'
|
|
import { pluralize } from 'ember-inflector'
|
|
import config from 'ember-get-config'
|
|
#import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin'
|
|
|
|
export default DS.JSONAPIAdapter.extend #DataAdapterMixin,
|
|
session: Ember.inject.service()
|
|
|
|
namespace: config.apiNamespace
|
|
host: config.apiHost
|
|
authorizer: 'authorizer:devise'
|
|
headers: Ember.computed 'session.{data.authenticated.access_token,isAuthenticated}', ->
|
|
headers = {}
|
|
headers['Authorization'] = "Bearer #{@get('session.data.authenticated.token')}" if @get('session.isAuthenticated')
|
|
headers
|
|
#pathForType: (type)->
|
|
# type.underscore().pluralize()
|
|
|
|
# Code for createRecord and updateRecord taken from ember data v2.0.0 restadapter
|
|
createRecord: (store, type, snapshot) ->
|
|
data = {}
|
|
#var serializer = store.serializerFor(type.modelName);
|
|
serializer = Ember.get(snapshot.record, 'store').serializerFor('create-and-update')
|
|
url = @buildURL(type.modelName, null, snapshot, 'createRecord')
|
|
|
|
serializer.serializeIntoHash data, type, snapshot, includeId: true
|
|
|
|
@ajax url, 'POST', data: data
|
|
|
|
# return pluralized underscored version
|
|
pathForType: (modelName) ->
|
|
base = Ember.String.underscore(modelName)
|
|
base = base.replace(/\./g, '/')
|
|
#base.split(/\//).map( (str) -> pluralize(str) ).join('/') # all parts pluralized
|
|
pluralize(base)
|
|
|
|
updateRecord: (store, type, snapshot) ->
|
|
data = {}
|
|
#var serializer = store.serializerFor(type.modelName);
|
|
serializer = Ember.get(snapshot.record, 'store').serializerFor('create-and-update')
|
|
id = snapshot.id
|
|
url = @buildURL(type.modelName, id, snapshot, 'updateRecord')
|
|
serializer.serializeIntoHash data, type, snapshot, includeId: true
|
|
@ajax url, 'PUT', data: data
|
|
|
|
handleResponse: (status, headers, payload) ->
|
|
switch status
|
|
when 401, 403
|
|
application_route = Ember.getOwner(@).lookup('route:application')
|
|
application_route.set 'globals.flash_message', "Unauthorized action"
|
|
#@get('session')?.invalidate()
|
|
#application_route.set 'globals.current_user', null
|
|
#application_route.transitionTo('login')
|
|
else
|
|
if typeof(payload?.error) is 'string'
|
|
application_route = Ember.getOwner(@).lookup('route:application')
|
|
application_route.set 'globals.flash_message', payload.error
|
|
@_super arguments...
|
|
|
|
#buildURL: (modelName, id, snapshot, requestType, query)->
|
|
# response = @_super arguments...
|
|
# debugger
|
|
# response
|
|
|
|
|