class Jsonism::Client
Public Class Methods
new(schema: nil)
click to toggle source
@param schema [Hash] JSON Schema @raise [JsonSchema::SchemaError]
# File lib/jsonism/client.rb, line 5 def initialize(schema: nil) @schema = ::JsonSchema.parse!(schema).tap(&:expand_references!) define end
Public Instance Methods
base_url()
click to toggle source
@return [String] Base URL of API @note Base URL is gained from the top-level link property whose `rel` is self @raise [Jsonism::Client::BaseUrlNotFound]
# File lib/jsonism/client.rb, line 22 def base_url @base_url ||= root_link.try(:href) or raise BaseUrlNotFound end
connection()
click to toggle source
@return [Faraday::Connection]
# File lib/jsonism/client.rb, line 11 def connection @connection ||= Faraday.new(url: base_url) do |connection| connection.request :json connection.response :json connection.adapter :net_http end end
resource_classes()
click to toggle source
@return [Hash<String, Class>] @example
resource_classes #=> { "App" #=> #<Class> }
# File lib/jsonism/client.rb, line 29 def resource_classes @resource_classes ||= {} end
Private Instance Methods
define()
click to toggle source
Defines some methods into itself from its JSON Schema
# File lib/jsonism/client.rb, line 36 def define Definer.call(client: self, schema: @schema) end
root_link()
click to toggle source
Finds link that has “self” rel to resolve API base URL @return [JsonSchema::Schema::Link, nil]
# File lib/jsonism/client.rb, line 42 def root_link @schema.links.find do |link| link.rel == "self" end end