class Okay::GraphQL::Query

A class for submitting GraphQL queries.

Public Class Methods

new(raw_query = nil, &query) click to toggle source
# File lib/okay/graphql.rb, line 75
def initialize(raw_query = nil, &query)
  @query = raw_query || QueryDSL.new(&query)
end

Public Instance Methods

submit!(url, headers = {}) click to toggle source
# File lib/okay/graphql.rb, line 85
def submit!(url, headers = {})
  if url == :github
    url = "https://api.github.com/graphql"

    bearer_token = headers[:bearer_token]

    if bearer_token.nil?
      raise ArgumentError, "missing keyword: bearer_token"
    end

    headers = default_github_headers(bearer_token).merge(headers)
  end

  data = {
    "query" => to_s,
  }.to_json
  Okay::HTTP.post(url, headers: headers, data: data)
end
to_s() click to toggle source
# File lib/okay/graphql.rb, line 79
def to_s
  "query {\n" +
    @query.to_s.gsub(/^/, "  ") +
  "}"
end

Private Instance Methods

default_github_headers(token) click to toggle source
# File lib/okay/graphql.rb, line 106
def default_github_headers(token)
  {
    "Accept" => "application/vnd.github.v4.idl",
    "Authorization" => "bearer #{token}",
  }
end