2018-10-08 10:50:39 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-12-19 18:22:10 -05:00
|
|
|
module Mattermost
|
2021-05-31 23:10:06 -04:00
|
|
|
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)
|
2021-05-31 23:10:06 -04:00
|
|
|
::Mattermost::Session.new(user).with_session(&blk)
|
2016-12-19 18:22:10 -05:00
|
|
|
end
|
|
|
|
|
2017-01-23 06:58:51 -05:00
|
|
|
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
|
|
|
|
|
2017-05-14 06:57:08 -04:00
|
|
|
def delete(session, path, options)
|
|
|
|
json_response session.delete(path, options)
|
|
|
|
end
|
|
|
|
|
2017-01-23 06:58:51 -05:00
|
|
|
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
|
|
|
|
|
2017-01-23 06:58:51 -05:00
|
|
|
def session_post(path, options = {})
|
2016-12-19 18:22:10 -05:00
|
|
|
with_session do |session|
|
2017-01-23 06:58:51 -05:00
|
|
|
post(session, path, options)
|
2016-12-19 18:22:10 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-05-14 06:57:08 -04:00
|
|
|
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)
|
2020-05-08 05:09:39 -04:00
|
|
|
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?
|
2021-05-31 23:10:06 -04:00
|
|
|
raise ::Mattermost::ClientError, 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
|
2021-05-31 23:10:06 -04:00
|
|
|
raise ::Mattermost::ClientError, 'Cannot parse response'
|
2016-12-19 18:22:10 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|