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