Sha256: 945871e6c354f18ba33108c26c38af6e60b8e6800e848ba81e26b1a97df9dd7d

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

require 'faraday'
require 'graphql'

module GraphQLDocs
  class Client
    attr_accessor :faraday

    def initialize(options)
      @login = options[:login]
      @password = options[:password]

      if @login.nil? && !@password.nil?
        fail ArgumentError, 'Client provided a login, but no password!'
      end

      if !@login.nil? && @password.nil?
        fail ArgumentError, 'Client provided a password, but no login!'
      end

      @access_token = options[:access_token]

      @url = options[:url]
      @faraday = Faraday.new(url: @url)

      if @login && @password
        @faraday.basic_auth(@login, @password)
      elsif  @access_token
        @faraday.authorization('token', @access_token)
      end
    end

    def fetch
      @faraday.post do |req|
        req.headers['Content-Type'] = 'application/json'
        req.body = "{ \"query\": \"#{GraphQL::Introspection::INTROSPECTION_QUERY.gsub("\n", '')}\" }"
      end
    end

    def inspect
      inspected = super

      # mask password
      inspected = inspected.gsub! @password, '*******' if @password

      # Only show last 4 of token, secret
      if @access_token
        inspected = inspected.gsub! @access_token, "#{'*'*36}#{@access_token[36..-1]}"
      end

      inspected
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
graphql-docs-0.1.1 lib/graphql-docs/client.rb
graphql-docs-0.1.0 lib/graphql-docs/client.rb