gitlab-org--gitlab-foss/lib/mattermost/client.rb

64 lines
1.4 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2016-12-19 18:22:10 -05:00
module Mattermost
ClientError = Class.new(Mattermost::Error)
2016-12-20 06:02:37 -05:00
2016-12-19 18:22:10 -05:00
class Client
attr_reader :user
def initialize(user)
@user = user
end
def with_session(&blk)
2016-12-20 05:32:42 -05:00
Mattermost::Session.new(user).with_session(&blk)
2016-12-19 18:22:10 -05:00
end
private
# Should be used in a session manually
def get(session, path, options = {})
json_response session.get(path, options)
end
# Should be used in a session manually
def post(session, path, options = {})
json_response session.post(path, options)
end
def delete(session, path, options)
json_response session.delete(path, options)
end
def session_get(path, options = {})
2016-12-19 18:22:10 -05:00
with_session do |session|
2017-02-03 05:29:56 -05:00
get(session, path, options)
2016-12-19 18:22:10 -05:00
end
end
def session_post(path, options = {})
2016-12-19 18:22:10 -05:00
with_session do |session|
post(session, path, options)
2016-12-19 18:22:10 -05:00
end
end
def session_delete(path, options = {})
with_session do |session|
delete(session, path, options)
end
end
2016-12-19 18:22:10 -05:00
def json_response(response)
json_response = Gitlab::Json.parse(response.body, legacy_mode: true)
2016-12-19 18:22:10 -05:00
2016-12-20 13:11:53 -05:00
unless response.success?
2016-12-20 17:17:32 -05:00
raise Mattermost::ClientError.new(json_response['message'] || 'Undefined error')
2016-12-19 18:22:10 -05:00
end
2016-12-20 13:11:53 -05:00
json_response
2016-12-20 14:11:02 -05:00
rescue JSON::JSONError
2016-12-20 17:17:32 -05:00
raise Mattermost::ClientError.new('Cannot parse response')
2016-12-19 18:22:10 -05:00
end
end
end