1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
# frozen_string_literal: true
module Mattermost
ClientError = Class.new(::Mattermost::Error)
class Client
attr_reader :user
def initialize(user)
@user = user
end
def with_session(&blk)
::Mattermost::Session.new(user).with_session(&blk)
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 = {})
with_session do |session|
get(session, path, options)
end
end
def session_post(path, options = {})
with_session do |session|
post(session, path, options)
end
end
def session_delete(path, options = {})
with_session do |session|
delete(session, path, options)
end
end
def json_response(response)
json_response = Gitlab::Json.parse(response.body, legacy_mode: true)
unless response.success?
raise ::Mattermost::ClientError, json_response['message'] || 'Undefined error'
end
json_response
rescue JSON::JSONError
raise ::Mattermost::ClientError, 'Cannot parse response'
end
end
end
|