diff options
Diffstat (limited to 'lib/bulk_imports/clients/graphql.rb')
-rw-r--r-- | lib/bulk_imports/clients/graphql.rb | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/lib/bulk_imports/clients/graphql.rb b/lib/bulk_imports/clients/graphql.rb index 89698cb53ef..b067431aeae 100644 --- a/lib/bulk_imports/clients/graphql.rb +++ b/lib/bulk_imports/clients/graphql.rb @@ -3,6 +3,24 @@ module BulkImports module Clients class Graphql + class HTTP < Graphlient::Adapters::HTTP::Adapter + def execute(document:, operation_name: nil, variables: {}, context: {}) + response = ::Gitlab::HTTP.post( + url, + headers: headers, + follow_redirects: false, + body: { + query: document.to_query_string, + operationName: operation_name, + variables: variables + }.to_json + ) + + ::Gitlab::Json.parse(response.body) + end + end + private_constant :HTTP + attr_reader :client delegate :query, :parse, :execute, to: :client @@ -12,19 +30,19 @@ module BulkImports @token = token @client = Graphlient::Client.new( @url, - request_headers + options(http: HTTP) ) end - def request_headers - return {} unless @token + def options(extra = {}) + return extra unless @token { headers: { 'Content-Type' => 'application/json', 'Authorization' => "Bearer #{@token}" } - } + }.merge(extra) end end end |