Sha256: 83a377800ba322420054aef50bc0c40709988a62a2f66709ab8c86de9bcf28cf

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

require "active_support"
require "active_support/inflector"
require "active_support/core_ext/hash"
require "active_support/core_ext/object"

require 'quandl/cassinatra/base/model'
require 'quandl/cassinatra/base/attributes'
require 'quandl/cassinatra/base/validation'
require 'quandl/cassinatra/base/search'

class Quandl::Cassinatra::Base
  
  class << self
    
    attr_accessor :url
  
    def use(url)
      self.url = url
      models_use_her_api!
    end
  
    def her_api
      Her::API.new.setup url: url do |c|
        c.use Faraday::Request::UrlEncoded
        c.use Quandl::Cassinatra::Middleware::ParseJSON
        c.use Faraday::Adapter::NetHttp
      end
    end

    def url
      @url ||= 'http://localhost:9292/'
    end
    
    def inherited(subclass)
      # remember models that inherit from base
      models << subclass unless models.include?(subclass)
      # include model behaviour
      subclass.class_eval do
        include Quandl::Cassinatra::Base::Model
        include Quandl::Cassinatra::Base::Attributes
        include Quandl::Cassinatra::Base::Validation
        include Quandl::Cassinatra::Base::Search
      end
    end
    
    def models
      @@models ||= []
    end
    
    protected
    
    def models_use_her_api!
      models.each{|m| m.use_api( her_api ) }
    end
 
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quandl_cassinatra-0.2.3 lib/quandl/cassinatra/base.rb