Sha256: 0b88d6492dfef46d444eb4a83464d61ae7f3b86495eb05d9bb64b3ee97c64970

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require 'socket'
require 'faraday'
require 'faraday_middleware'

require 'frenetic/version'
require 'frenetic/concerns/configurable'
require 'frenetic/middleware/hal_json'
require 'frenetic/resource'
require 'frenetic/resource_collection'

class Frenetic
  extend Forwardable
  include Configurable

  def_delegators :connection, :get, :put, :post, :delete

  Error           = Class.new(StandardError)
  ConfigError     = Class.new(Error)
  ClientError     = Class.new(Error)
  ServerError     = Class.new(Error)
  ParsingError    = Class.new(Error)
  HypermediaError = Class.new(Error)

  def connection
    @connection ||= begin
      validate_configuration!

      Faraday.new( config ) do |builder|
        configure_authentication builder

        builder.response :hal_json

        configure_caching builder

        @builder_config.call( builder ) if @builder_config

        builder.adapter config.adapter
      end
    end
  end

  # It is highly advised that the server responds with some cache headers and
  # the API Client is configured to use a Faraday caching strategy
  def description
    if response = get( config.url.to_s ) and response.success?
      response.body
    end
  end

  def schema
    description['_embedded']['schema']
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
frenetic-0.0.20.alpha.1 lib/frenetic.rb