Sha256: 381d4756abcbebe4072d0a129c43eefb28299db8030bc3d7bd566376ecc4584e

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 KB

Contents

$:.unshift File.join(File.dirname(__FILE__), "balanced", "resources")

require 'uri'
require 'balanced/version' unless defined? Balanced::VERSION
require 'balanced/client'
require 'balanced/utils'
require 'balanced/resources'

module Balanced

  @client = nil
  @config = {
      :scheme => 'https',
      :host => 'api.balancedpayments.com',
      :port => 443,
      :version => '1',
  }

  class << self

    attr_accessor :client
    attr_accessor :config

    def configure(api_key=nil, options={})
      @client = Balanced::Client.new(api_key, @config.merge(options))
    end

    def split_the_uri uri
      URI.parse(uri).path.sub(/\/$/, '').split('/')
    end

    def from_uri uri
      split_uri = split_the_uri(uri)
      # this is such an ugly hack, basically, we're trying to
      # see if we have the symbol that matches the capitalized
      #
      class_name = Balanced::Utils.classify(split_uri[-1])
      begin
        klass = Balanced.const_get class_name
      rescue NameError
        class_name = Utils.classify(split_uri[-2])
        klass = Balanced.const_get(class_name)
      end
      klass
    end

    def is_collection uri
      split_uri = split_the_uri(uri)
      class_name = Balanced::Utils.classify(split_uri[-1])
      begin
        Balanced.const_get class_name
      rescue NameError
        return false
      end
      true
    end

    def method_missing(method, *args, &block)
      case method
        when :get, :post, :put, :delete
          self.client.send method, *args
        else
          super
      end
    end
  end

  # configure on import so we don't have to configure for creating
  # an api key
  configure
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
balanced-0.3.3 lib/balanced.rb
balanced-0.3.2 lib/balanced.rb
balanced-0.3.1 lib/balanced.rb
balanced-0.3.0 lib/balanced.rb