88 lines
2.7 KiB
CoffeeScript
88 lines
2.7 KiB
CoffeeScript
###
|
|
# Copyright (C) 2014-2018 Taiga Agile LLC
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# File: modules/base/http.coffee
|
|
###
|
|
|
|
taiga = @.taiga
|
|
|
|
class HttpService extends taiga.Service
|
|
@.$inject = ["$http", "$q", "$tgStorage", "$rootScope", "$cacheFactory", "$translate"]
|
|
|
|
constructor: (@http, @q, @storage, @rootScope, @cacheFactory, @translate) ->
|
|
super()
|
|
|
|
@.cache = @cacheFactory("httpget")
|
|
headers: ->
|
|
headers = {}
|
|
|
|
# Authorization
|
|
token = @storage.get('token')
|
|
if token
|
|
headers["Authorization"] = "Bearer #{token}"
|
|
|
|
# Accept-Language
|
|
lang = @translate.preferredLanguage()
|
|
if lang
|
|
headers["Accept-Language"] = lang
|
|
|
|
return headers
|
|
|
|
request: (options) ->
|
|
options.headers = _.assign({}, options.headers or {}, @.headers())
|
|
|
|
return @http(options)
|
|
|
|
get: (url, params, options) ->
|
|
options = _.assign({method: "GET", url: url}, options)
|
|
options.params = params if params
|
|
|
|
# prevent duplicated http request
|
|
options.cache = @.cache
|
|
|
|
return @.request(options).finally (data) =>
|
|
@.cache.removeAll()
|
|
|
|
post: (url, data, params, options) ->
|
|
options = _.assign({method: "POST", url: url}, options)
|
|
|
|
options.data = data if data
|
|
options.params = params if params
|
|
|
|
return @.request(options)
|
|
|
|
put: (url, data, params, options) ->
|
|
options = _.assign({method: "PUT", url: url}, options)
|
|
options.data = data if data
|
|
options.params = params if params
|
|
return @.request(options)
|
|
|
|
patch: (url, data, params, options) ->
|
|
options = _.assign({method: "PATCH", url: url}, options)
|
|
options.data = data if data
|
|
options.params = params if params
|
|
return @.request(options)
|
|
|
|
delete: (url, data, params, options) ->
|
|
options = _.assign({method: "DELETE", url: url}, options)
|
|
options.data = data if data
|
|
options.params = params if params
|
|
return @.request(options)
|
|
|
|
|
|
module = angular.module("taigaBase")
|
|
module.service("$tgHttp", HttpService)
|