travis-web/assets/scripts/lib/travis/ajax.coffee

41 lines
1.1 KiB
CoffeeScript

jQuery.support.cors = true
@Travis.Ajax = Ember.Mixin.create
DEFAULT_OPTIONS:
accepts:
json: 'application/vnd.travis-ci.2+json'
post: (url, data, callback) ->
@ajax(url, 'post', data: data, success: callback)
ajax: (url, method, options) ->
endpoint = Travis.config.api_endpoint || ''
options = options || {}
if accessToken = Travis.app?.get('auth.accessToken')
options.headers ||= {}
options.headers['Authorization'] ||= "token #{accessToken}"
options.url = "#{endpoint}#{url}"
options.type = method
options.dataType = 'json'
options.contentType = 'application/json; charset=utf-8'
options.context = this
if options.data && method != 'GET' && method != 'get'
options.data = JSON.stringify(options.data)
$.ajax($.extend(options, @DEFAULT_OPTIONS))
@Travis.Ajax.instance = Em.Object.create(@Travis.Ajax)
$.extend @Travis,
get: (url, callback) ->
@ajax(url, 'get', success: callback)
post: (url, data, callback) ->
@Ajax.instance.post(url, data, callback)
ajax: (url, method, options) ->
@Ajax.instance.ajax(url, method, options)