Installation


gem 'quandl_client'

Configuration


require 'quandl/client'

Quandl::Client.use 'http://localhost:3000/api/'
Quandl::Client.token = ENV['QUANDL_AUTH_TOKEN']


Usage

Quandl::Client::Dataset

scope :rows, :exclude_data, :exclude_headers, :trim_start, :trim_end, :transform, :collapse


datasets = Quandl::Client::Dataset.query('cobalt').source_code('ofdp').all
=> [#<Quandl::Client::Dataset(datasets) source_code="OFDP" code="COBALT_51">, ...]

Show

attributes :data, :source_code, :code, :name, :urlize_name, :description, :updated_at, :frequency, :from_date, :to_date, :column_names, :private, :type


d = Quandl::Client::Dataset.find('OFDP/COBALT_51')
d.full_code
d.data


d = Quandl::Client::Dataset.collapse('weekly').trim_start("2012-03-31").trim_end("2013-06-30").find('OFDP/COBALT_51')
d.data


d = Quandl::Client::Dataset.exclude_data('true').find('OFDP/COBALT_51')
d.data

Create


attributes = {
  code:         "TEST_#{Time.now.to_i}",
  source_code:  'OFDP',
  name:         "Test Upload #{Time.now.to_i}",
  frequency:    'daily',
  locations: 
  [
    { 
      type:       'http', 
      url:        'http://test.com',
      post_data:  '[magic]', 
      cookie_url: 'http://cookies.com' 
    }
  ]
}
d = Dataset.create( attributes )

Update


d = Dataset.find( d.full_code )
d.name = 'New Name'
d.data = Quandl::Fabricate::Data.rand.to_csv
d.save

d = Dataset.collapse(:weekly).find( d.full_code )
d.data
=> [[...],...]

Delete


Dataset.destroy_existing('SOME_SOURCE/SOME_CODE')
Dataset.destroy_existing(52352)

Dataset.find('SOME_SOURCE/SOME_CODE')
=> nil

Delete Data


d = Dataset.find('SOME_SOURCE/SOME_CODE')
d.delete_data
d.data
=> nil

d.delete_rows( '1998-02-01','1998-03-03' )
d.data
=> # given rows are deleted

Error Handling


d = Dataset.create(code: 'TEST', source_code: 'OFDP', locations: [{ type: 'http', url: 'test.com' }] )
d.error_messages
=>  {:name=>["can't be blank"]}

d = Dataset.create(name: 'asdfs', code: 'TEST', source_code: 'OFDP', locations: [{ type: 'http', url: 'test.com' }] )
d.error_messages
=>  {"code"=>["has already been taken"], "frequency"=>["is not included in the list"]}

Quandl::Client::Source


sources = Quandl::Client::Source.query('can').all

=> [#<Quandl::Client::Source(sources/413) code="STATSCAN5" datasets_count=1>...]

Show


s = Quandl::Client::Source.find('STATSCAN5')

Create


s = Source.create( code: 'test' )
s.valid?
s.error_messages
=> {:code=>["is invalid"], :host=>["can't be blank"], :name=>["can't be blank"]}

s = Source.create(code: %Q{TEST_#{Time.now.to_i}}, name: 'asdf', host: "http://asdf#{Time.now}.com" )
s.saved?
=> true

Update


s = Source.find(s.code)
s.name = "Updated Name #{Time.now.to_i}"
s.code = "DATA_#{Time.now.to_i}"
s.save

Delete


Source.destroy_existing('SOMESOURCE')
Source.destroy_existing(52352)

Quandl::Client::Sheet


sheets = Quandl::Client::Sheet.query('canada').all
=> [[#<Quandl::Client::Sheet(sheets) title="La Canada Flintridge>,...]

Show


sheet = Quandl::Client::Sheet.find('housing/hood')

Create


s = Quandl::Client::Sheet.create( title: 'ocean' )
s = Quandl::Client::Sheet.create( full_url_title: 'ocean/river', title: 'River' )
s = Quandl::Client::Sheet.create( full_url_title: 'ocean/river/lake', title: 'Lake!' )

Sheet.find('ocean/river/lake').title
=> 'Lake!'

Sheet.find('ocean').children.first.title
=> River

Update


s = Quandl::Client::Sheet.find('ocean/river')
s.title = "River #{Time.now.to_i}"
s.save

Delete


Quandl::Client::Sheet.destroy_existing('ocean/river/lake')

Quandl::Client::Sheet.destroy_existing(15252)

Authentication


require 'quandl/client'

Quandl::Client.use 'http://localhost:3000/api/'
Quandl::Client.token = 'xyz'


s = Quandl::Client::Sheet.find_by_url_title('testing')
s.title = 'more testing'
s.save
=> true