require 'finix/version' unless defined? Finix::VERSION require 'finix/client' require 'finix/error' module Finix @client = nil @config = {:root_url => 'https://localhost/processing'} @hypermedia_registry = {} @errors_registry = { :unknown => Finix::ResourceErrors, 400 => Finix::BadRequest, 401 => Finix::Unauthorized, 402 => Finix::UpstreamProcessorError, 403 => Finix::Forbidden, 404 => Finix::NotFound, 405 => Finix::MethodNotAllowed, 422 => Finix::UnprocessableEntity, 500 => Finix::InternalServerError } class << self attr_accessor :client attr_accessor :config attr_accessor :hypermedia_registry attr_accessor :errors_registry def configure(options={}) unless options[:root_url].nil? @config = {} end @config = @config.merge(options) @config[:user] = @config[:user].strip unless @config[:user].nil? @config[:password] = @config[:password].strip unless @config[:password].nil? @client = Finix::Client.new @config end def split_the_href(href) URI.parse(href).path.sub(/\/$/, '').split('/') end def get_href(cls) href = Finix.hypermedia_registry.key(cls) href = Finix.hypermedia_registry.key(cls.superclass) if href.nil? if href.nil? # support wrapper module mod = cls.name.split('::').first scls = cls.superclass.superclass.name.split('::').last href = Finix.hypermedia_registry.key(self.instance_eval "#{mod}::#{scls}") end href end def from_hypermedia_registry(href, attributes={}) split_uri = split_the_href(href) split_uri.reverse!.each do |resource| cls = Finix.hypermedia_registry[resource] cls = cls.send :hypermedia_subtype, attributes if not cls.nil? and cls.respond_to?(:hypermedia_subtype) return cls unless cls.nil? end Finix::Utils.eval_class self, 'UnknownResource' end def get(*args, &block) self.client.get *args end def post(*args, &block) self.client.post *args end def put(*args, &block) self.client.put *args end end end require 'finix/resources'