class ActiveGraphql::Client::Adapters::GraphlientMultipartAdapter

Adapter enabling multipart data transfer

Public Instance Methods

execute(document:, operation_name:, variables:, context:) click to toggle source
# File lib/active_graphql/client/adapters/graphlient_multipart_adapter.rb, line 14
def execute(document:, operation_name:, variables:, context:)
  response = execute_request(
    document: document, operation_name: operation_name,
    variables: variables, context: context
  )
  response.body
rescue Faraday::ClientError => e
  raise Graphlient::Errors::FaradayServerError, e
end

Private Instance Methods

connection() { |c| ... } click to toggle source
# File lib/active_graphql/client/adapters/graphlient_multipart_adapter.rb, line 37
def connection
  @connection ||= Faraday.new(url: url, headers: headers) do |c|
    c.adapter Faraday::Response::RaiseError
    c.request :multipart
    c.request :url_encoded
    c.response :json

    block_given? ? yield(c) : c.adapter(Faraday::Adapter::NetHttp)
  end
end
execute_request(document:, operation_name:, variables:, context:) click to toggle source
# File lib/active_graphql/client/adapters/graphlient_multipart_adapter.rb, line 26
def execute_request(document:, operation_name:, variables:, context:)
  connection.post do |req|
    req.headers.merge!(context[:headers] || {})
    req.body = {
      query: document.to_query_string,
      operationName: operation_name,
      variables: FormatMultipartVariables.new(variables).call
    }
  end
end