module Sanity::Http::Query
Attributes
resource_klass[R]
result_wrapper[R]
Public Class Methods
included(base)
click to toggle source
# File lib/sanity/http/query.rb, line 11 def included(base) base.extend(ClassMethods) base.extend(Forwardable) base.delegate(%i[project_id api_version dataset token] => :"Sanity.config") end
new(**args)
click to toggle source
@todo Add query support
# File lib/sanity/http/query.rb, line 27 def initialize(**args) @resource_klass = args.delete(:resource_klass) @result_wrapper = args.delete(:result_wrapper) || Sanity::Http::Results end
Public Instance Methods
call() { |call| ... }
click to toggle source
@todo Add query support
# File lib/sanity/http/query.rb, line 33 def call http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == "https" request = Module.const_get("Net::HTTP::#{method.to_s.classify}").new(uri, headers) request.body = request_body http.request(request).then do |result| data = JSON.parse(result.body) block_given? ? yield(result_wrapper.call(data)) : result_wrapper.call(data) end end
Private Instance Methods
base_url()
click to toggle source
# File lib/sanity/http/query.rb, line 58 def base_url "https://#{project_id}.api.sanity.io/#{api_version}/#{api_endpoint}/#{dataset}" end
headers()
click to toggle source
# File lib/sanity/http/query.rb, line 62 def headers { "Content-Type": "application/json", Authorization: "Bearer #{token}" } end
method()
click to toggle source
# File lib/sanity/http/query.rb, line 54 def method :get end
request_body()
click to toggle source
# File lib/sanity/http/query.rb, line 51 def request_body end
uri()
click to toggle source
# File lib/sanity/http/query.rb, line 69 def uri URI(base_url) end