trabajo-afectivo/lib/gitlab/http_client.rb

63 lines
1.4 KiB
Ruby
Raw Permalink Normal View History

2022-01-01 13:38:12 +00:00
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
2021-03-10 16:11:14 +00:00
require 'uri'
2021-03-10 16:11:14 +00:00
class GitLab
class HttpClient
attr_reader :api_token, :endpoint
2021-03-10 16:11:14 +00:00
def initialize(endpoint, api_token)
raise 'api_token required' if api_token.blank?
raise 'endpoint required' if endpoint.blank? || endpoint.exclude?('/graphql') || endpoint.scan(URI::DEFAULT_PARSER.make_regexp).blank?
2021-03-10 16:11:14 +00:00
@api_token = api_token
@endpoint = endpoint
end
# returns path of the subfolder of the endpoint if exists
def endpoint_path
path = URI.parse(endpoint).path
return if path.blank?
return if path == '/api/graphql'
if path.start_with?('/')
path = path[1..]
end
path.sub('api/graphql', '')
end
def perform(payload)
response = UserAgent.post(
endpoint,
payload,
{
headers: headers,
json: true,
open_timeout: 6,
read_timeout: 16,
log: {
facility: 'GitLab',
},
verify_ssl: true,
},
)
2021-03-10 16:11:14 +00:00
if !response.success?
Rails.logger.error response.error
raise __('GitLab request failed! Please have a look at the log file for details')
end
response.data
2021-03-10 16:11:14 +00:00
end
private
def headers
2021-03-10 16:11:14 +00:00
{
'PRIVATE-TOKEN': @api_token
2021-03-10 16:11:14 +00:00
}
end
end
end