gitlab-org--gitlab-foss/lib/mattermost/client.rb
gfyoung c8755543f0 Enable even more frozen string in lib/**/*.rb
Enables frozen string for the following files:

* lib/generators/**/*.rb
* lib/gitaly/**/*.rb
* lib/google_api/**/*.rb
* lib/haml_lint/**/*.rb
* lib/json_web_token/**/*.rb
* lib/mattermost/**/*.rb
* lib/microsoft_teams/**/*.rb
* lib/object_storage/**/*.rb
* lib/omni_auth/**/*.rb
* lib/peek/**/*.rb
* lib/rouge/**/*.rb
* lib/rspec_flaky/**/*.rb
* lib/system_check/**/*.rb

Partially addresses #47424.
2018-10-08 11:16:49 -07:00

63 lines
1.4 KiB
Ruby

# 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 = JSON.parse(response.body)
unless response.success?
raise Mattermost::ClientError.new(json_response['message'] || 'Undefined error')
end
json_response
rescue JSON::JSONError
raise Mattermost::ClientError.new('Cannot parse response')
end
end
end