quandl_client 2.7.5 → 2.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/.gitignore +7 -7
  2. data/.rspec +1 -1
  3. data/.travis.yml +20 -20
  4. data/.yardopts +2 -2
  5. data/Gemfile +12 -12
  6. data/Guardfile +8 -8
  7. data/LICENSE +7 -7
  8. data/README.md +303 -303
  9. data/Rakefile +31 -35
  10. data/UPGRADE.md +190 -213
  11. data/VERSION +1 -1
  12. data/examples/create.rb +32 -32
  13. data/examples/find.rb +17 -17
  14. data/examples/login.rb +12 -12
  15. data/examples/search.rb +12 -12
  16. data/examples/trims.rb +15 -15
  17. data/lib/quandl/client.rb +49 -49
  18. data/lib/quandl/client/base.rb +91 -91
  19. data/lib/quandl/client/base/attributes.rb +15 -15
  20. data/lib/quandl/client/base/model.rb +40 -40
  21. data/lib/quandl/client/base/search.rb +74 -74
  22. data/lib/quandl/client/base/validation.rb +101 -101
  23. data/lib/quandl/client/middleware.rb +9 -9
  24. data/lib/quandl/client/middleware/parse_json.rb +85 -85
  25. data/lib/quandl/client/models/dataset.rb +261 -245
  26. data/lib/quandl/client/models/dataset/data.rb +57 -57
  27. data/lib/quandl/client/models/location.rb +10 -10
  28. data/lib/quandl/client/models/report.rb +14 -14
  29. data/lib/quandl/client/models/scraper.rb +16 -16
  30. data/lib/quandl/client/models/sheet.rb +50 -50
  31. data/lib/quandl/client/models/source.rb +48 -40
  32. data/lib/quandl/client/models/superset.rb +59 -59
  33. data/lib/quandl/client/models/user.rb +7 -7
  34. data/lib/quandl/client/version.rb +14 -14
  35. data/lib/quandl/her/remove_method_data.rb +8 -8
  36. data/lib/quandl/pattern.rb +37 -37
  37. data/lib/quandl/pattern/client.rb +8 -8
  38. data/quandl_client.gemspec +33 -33
  39. data/spec/factories/dataset.rb +10 -10
  40. data/spec/factories/sheet.rb +7 -7
  41. data/spec/factories/source.rb +9 -9
  42. data/spec/fixtures/scraper.rb +5 -5
  43. data/spec/lib/quandl/client/dataset/attributes_spec.rb +63 -63
  44. data/spec/lib/quandl/client/dataset/data_spec.rb +92 -92
  45. data/spec/lib/quandl/client/dataset/location_spec.rb +65 -65
  46. data/spec/lib/quandl/client/dataset/persistence_spec.rb +104 -104
  47. data/spec/lib/quandl/client/dataset/search_spec.rb +19 -19
  48. data/spec/lib/quandl/client/dataset/source_spec.rb +47 -47
  49. data/spec/lib/quandl/client/dataset/trim_spec.rb +35 -35
  50. data/spec/lib/quandl/client/dataset/validation_spec.rb +68 -68
  51. data/spec/lib/quandl/client/dataset_spec.rb +57 -57
  52. data/spec/lib/quandl/client/scraper_spec.rb +71 -71
  53. data/spec/lib/quandl/client/sheet_spec.rb +37 -37
  54. data/spec/lib/quandl/client/source_spec.rb +51 -51
  55. data/spec/spec_helper.rb +30 -30
  56. metadata +27 -5
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.7.5
1
+ 2.7.6
data/examples/create.rb CHANGED
@@ -1,32 +1,32 @@
1
- $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
-
3
- # load quandl api client
4
- require "quandl/client"
5
-
6
- # tools for debugging
7
- require "quandl/fabricate"
8
- require 'securerandom'
9
- require 'pry'
10
-
11
- # Make Dataset available in global namespace
12
- include Quandl::Client
13
-
14
- # configure quandl client
15
- Quandl::Client.use ENV['QUANDL_TEST_URL']
16
- Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
17
-
18
- # set some attributes
19
- d = Dataset.new(
20
- code: "MY_DATASET_#{Time.now.to_i.to_s(16)}",
21
- name: "My dataset has a name.",
22
- description: "This is the description.",
23
- data: [[ 2014, 1, 2 ]]
24
- )
25
- # POST to server
26
- d.save
27
-
28
- if d.saved?
29
- puts "View your new dataset at: #{d.full_url}"
30
- else
31
- puts "Something went wrong:\n#{d.human_status}\n#{d.human_error_messages}"
32
- end
1
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
+
3
+ # load quandl api client
4
+ require "quandl/client"
5
+
6
+ # tools for debugging
7
+ require "quandl/fabricate"
8
+ require 'securerandom'
9
+ require 'pry'
10
+
11
+ # Make Dataset available in global namespace
12
+ include Quandl::Client
13
+
14
+ # configure quandl client
15
+ Quandl::Client.use ENV['QUANDL_TEST_URL']
16
+ Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
17
+
18
+ # set some attributes
19
+ d = Dataset.new(
20
+ code: "MY_DATASET_#{Time.now.to_i.to_s(16)}",
21
+ name: "My dataset has a name.",
22
+ description: "This is the description.",
23
+ data: [[ 2014, 1, 2 ]]
24
+ )
25
+ # POST to server
26
+ d.save
27
+
28
+ if d.saved?
29
+ puts "View your new dataset at: #{d.full_url}"
30
+ else
31
+ puts "Something went wrong:\n#{d.human_status}\n#{d.human_error_messages}"
32
+ end
data/examples/find.rb CHANGED
@@ -1,18 +1,18 @@
1
- $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
-
3
- # DEBUGGING
4
- require 'pry'
5
- require "quandl/fabricate"
6
-
7
- # LOAD
8
- require "quandl/client"
9
- include Quandl::Client
10
-
11
- # CONFIGURE
12
- Quandl::Client.use ENV['QUANDL_URL']
13
- Quandl::Client.token = ENV['QUANDL_TOKEN']
14
-
15
- # FIND
16
- d = Dataset.find('MCX.ALMG2014')
17
-
1
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
+
3
+ # DEBUGGING
4
+ require 'pry'
5
+ require "quandl/fabricate"
6
+
7
+ # LOAD
8
+ require "quandl/client"
9
+ include Quandl::Client
10
+
11
+ # CONFIGURE
12
+ Quandl::Client.use ENV['QUANDL_URL']
13
+ Quandl::Client.token = ENV['QUANDL_TOKEN']
14
+
15
+ # FIND
16
+ d = Dataset.find('MCX.ALMG2014')
17
+
18
18
  binding.pry
data/examples/login.rb CHANGED
@@ -1,13 +1,13 @@
1
- $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
-
3
- require 'pry'
4
- require "quandl/client"
5
-
6
- include Quandl::Client
7
-
8
- Quandl::Client.use ENV['QUANDL_TEST_URL']
9
- Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
10
-
11
- u = User.login( login: 'blakehil', password: 'example' )
12
-
1
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
+
3
+ require 'pry'
4
+ require "quandl/client"
5
+
6
+ include Quandl::Client
7
+
8
+ Quandl::Client.use ENV['QUANDL_TEST_URL']
9
+ Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
10
+
11
+ u = User.login( login: 'blakehil', password: 'example' )
12
+
13
13
  binding.pry
data/examples/search.rb CHANGED
@@ -1,13 +1,13 @@
1
- $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
-
3
- require 'pry'
4
- require "quandl/client"
5
-
6
- include Quandl::Client
7
-
8
- Quandl::Client.use ENV['QUANDL_TEST_URL']
9
- Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
10
-
11
- datasets = Dataset.query('water').all
12
-
1
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
+
3
+ require 'pry'
4
+ require "quandl/client"
5
+
6
+ include Quandl::Client
7
+
8
+ Quandl::Client.use ENV['QUANDL_TEST_URL']
9
+ Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
10
+
11
+ datasets = Dataset.query('water').all
12
+
13
13
  binding.pry
data/examples/trims.rb CHANGED
@@ -1,16 +1,16 @@
1
- $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
-
3
- require 'pry'
4
- require "quandl/client"
5
-
6
- include Quandl::Client
7
-
8
- Quandl::Client.use 'http://quandl.com/api/'
9
- Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
10
-
11
- # create dataset
12
- d = Dataset.find('NSE/OIL')
13
-
14
- data = d.data.trim_start( 3.weeks.ago ).limit(10)
15
-
1
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
+
3
+ require 'pry'
4
+ require "quandl/client"
5
+
6
+ include Quandl::Client
7
+
8
+ Quandl::Client.use 'http://quandl.com/api/'
9
+ Quandl::Client.token = ENV['QUANDL_TEST_TOKEN']
10
+
11
+ # create dataset
12
+ d = Dataset.find('NSE/OIL')
13
+
14
+ data = d.data.trim_start( 3.weeks.ago ).limit(10)
15
+
16
16
  binding.pry
data/lib/quandl/client.rb CHANGED
@@ -1,50 +1,50 @@
1
- require "quandl/client/version"
2
-
3
- require 'scope_composer'
4
- require 'her'
5
- require 'quandl/her/remove_method_data'
6
- require 'quandl/logger'
7
- require "quandl/data"
8
-
9
- require 'quandl/pattern'
10
- require 'quandl/pattern/client'
11
-
12
- require 'quandl/client/middleware'
13
- require 'quandl/client/base'
14
- require 'quandl/client/models/dataset'
15
- require 'quandl/client/models/sheet'
16
- require 'quandl/client/models/source'
17
- require 'quandl/client/models/user'
18
- require 'quandl/client/models/location'
19
- require 'quandl/client/models/scraper'
20
- require 'quandl/client/models/report'
21
- require 'quandl/client/models/superset'
22
-
23
- module Quandl
24
- module Client
25
-
26
- class << self
27
-
28
- attr_accessor :request_source, :request_version
29
-
30
- def request_source
31
- @request_source ||= "quandl_client"
32
- end
33
-
34
- def request_version
35
- @request_version ||= Quandl::Client::VERSION
36
- end
37
-
38
- end
39
-
40
- def self.use(url)
41
- Quandl::Client::Base.use(url)
42
- end
43
- def self.token=(value)
44
- Quandl::Client::Base.token = value
45
- end
46
-
47
- HTTP_STATUS_CODES = {100=>"Continue", 101=>"Switching Protocols", 102=>"Processing", 200=>"OK", 201=>"Created", 202=>"Accepted", 203=>"Non-Authoritative Information", 204=>"No Content", 205=>"Reset Content", 206=>"Partial Content", 207=>"Multi-Status", 208=>"Already Reported", 226=>"IM Used", 300=>"Multiple Choices", 301=>"Moved Permanently", 302=>"Found", 303=>"See Other", 304=>"Not Modified", 305=>"Use Proxy", 306=>"Reserved", 307=>"Temporary Redirect", 308=>"Permanent Redirect", 400=>"Bad Request", 401=>"Unauthorized", 402=>"Payment Required", 403=>"Forbidden", 404=>"Not Found", 405=>"Method Not Allowed", 406=>"Not Acceptable", 407=>"Proxy Authentication Required", 408=>"Request Timeout", 409=>"Conflict", 410=>"Gone", 411=>"Length Required", 412=>"Precondition Failed", 413=>"Request Entity Too Large", 414=>"Request-URI Too Long", 415=>"Unsupported Media Type", 416=>"Requested Range Not Satisfiable", 417=>"Expectation Failed", 422=>"Unprocessable Entity", 423=>"Locked", 424=>"Failed Dependency", 425=>"Reserved for WebDAV advanced collections expired proposal", 426=>"Upgrade Required", 427=>"Unassigned", 428=>"Precondition Required", 429=>"Too Many Requests", 430=>"Unassigned", 431=>"Request Header Fields Too Large", 500=>"Internal Server Error", 501=>"Not Implemented", 502=>"Bad Gateway", 503=>"Service Unavailable", 504=>"Gateway Timeout", 505=>"HTTP Version Not Supported", 506=>"Variant Also Negotiates (Experimental)", 507=>"Insufficient Storage", 508=>"Loop Detected", 509=>"Unassigned", 510=>"Not Extended", 511=>"Network Authentication Required"}
48
-
49
- end
1
+ require "quandl/client/version"
2
+
3
+ require 'scope_composer'
4
+ require 'her'
5
+ require 'quandl/her/remove_method_data'
6
+ require 'quandl/logger'
7
+ require "quandl/data"
8
+
9
+ require 'quandl/pattern'
10
+ require 'quandl/pattern/client'
11
+
12
+ require 'quandl/client/middleware'
13
+ require 'quandl/client/base'
14
+ require 'quandl/client/models/dataset'
15
+ require 'quandl/client/models/sheet'
16
+ require 'quandl/client/models/source'
17
+ require 'quandl/client/models/user'
18
+ require 'quandl/client/models/location'
19
+ require 'quandl/client/models/scraper'
20
+ require 'quandl/client/models/report'
21
+ require 'quandl/client/models/superset'
22
+
23
+ module Quandl
24
+ module Client
25
+
26
+ class << self
27
+
28
+ attr_accessor :request_source, :request_version
29
+
30
+ def request_source
31
+ @request_source ||= "quandl_client"
32
+ end
33
+
34
+ def request_version
35
+ @request_version ||= Quandl::Client::VERSION
36
+ end
37
+
38
+ end
39
+
40
+ def self.use(url)
41
+ Quandl::Client::Base.use(url)
42
+ end
43
+ def self.token=(value)
44
+ Quandl::Client::Base.token = value
45
+ end
46
+
47
+ HTTP_STATUS_CODES = {100=>"Continue", 101=>"Switching Protocols", 102=>"Processing", 200=>"OK", 201=>"Created", 202=>"Accepted", 203=>"Non-Authoritative Information", 204=>"No Content", 205=>"Reset Content", 206=>"Partial Content", 207=>"Multi-Status", 208=>"Already Reported", 226=>"IM Used", 300=>"Multiple Choices", 301=>"Moved Permanently", 302=>"Found", 303=>"See Other", 304=>"Not Modified", 305=>"Use Proxy", 306=>"Reserved", 307=>"Temporary Redirect", 308=>"Permanent Redirect", 400=>"Bad Request", 401=>"Unauthorized", 402=>"Payment Required", 403=>"Forbidden", 404=>"Not Found", 405=>"Method Not Allowed", 406=>"Not Acceptable", 407=>"Proxy Authentication Required", 408=>"Request Timeout", 409=>"Conflict", 410=>"Gone", 411=>"Length Required", 412=>"Precondition Failed", 413=>"Request Entity Too Large", 414=>"Request-URI Too Long", 415=>"Unsupported Media Type", 416=>"Requested Range Not Satisfiable", 417=>"Expectation Failed", 422=>"Unprocessable Entity", 423=>"Locked", 424=>"Failed Dependency", 425=>"Reserved for WebDAV advanced collections expired proposal", 426=>"Upgrade Required", 427=>"Unassigned", 428=>"Precondition Required", 429=>"Too Many Requests", 430=>"Unassigned", 431=>"Request Header Fields Too Large", 500=>"Internal Server Error", 501=>"Not Implemented", 502=>"Bad Gateway", 503=>"Service Unavailable", 504=>"Gateway Timeout", 505=>"HTTP Version Not Supported", 506=>"Variant Also Negotiates (Experimental)", 507=>"Insufficient Storage", 508=>"Loop Detected", 509=>"Unassigned", 510=>"Not Extended", 511=>"Network Authentication Required"}
48
+
49
+ end
50
50
  end
@@ -1,92 +1,92 @@
1
- require "active_support"
2
- require "active_support/inflector"
3
- require "active_support/core_ext/hash"
4
- require "active_support/core_ext/object"
5
-
6
- require 'quandl/client/base/model'
7
- require 'quandl/client/base/attributes'
8
- require 'quandl/client/base/validation'
9
- require 'quandl/client/base/search'
10
-
11
- I18n.enforce_available_locales = false
12
-
13
- class Quandl::Client::Base
14
-
15
- class << self
16
-
17
- attr_accessor :url, :token
18
-
19
- def use(url)
20
- self.url = url
21
- models_use_her_api!
22
- end
23
-
24
- def token=(token)
25
- @token = token
26
- models_use_her_api!
27
- end
28
-
29
- def her_api
30
- Her::API.new.setup url: url_with_version do |c|
31
- c.use TokenAuthentication
32
- c.use TrackRequestSource
33
- c.use Faraday::Request::Multipart
34
- c.use Faraday::Request::UrlEncoded
35
- c.use Quandl::Client::Middleware::ParseJSON
36
- c.use Faraday::Adapter::NetHttp
37
- end
38
- end
39
-
40
- def url
41
- @url ||= "http://quandl.com/api/"
42
- end
43
-
44
- def url_with_version
45
- File.join( url.to_s, Quandl::Client.api_version.to_s )
46
- end
47
-
48
- def inherited(subclass)
49
- # remember models that inherit from base
50
- models << subclass unless models.include?(subclass)
51
- # include model behaviour
52
- subclass.class_eval do
53
- include Quandl::Client::Base::Model
54
- include Quandl::Client::Base::Attributes
55
- include Quandl::Client::Base::Validation
56
- include Quandl::Client::Base::Search
57
- end
58
- end
59
-
60
- def models
61
- @@models ||= []
62
- end
63
-
64
- protected
65
-
66
- def models_use_her_api!
67
- models.each{|m|
68
- m.url = url_with_version
69
- m.use_api( her_api )
70
- }
71
- end
72
-
73
- class TokenAuthentication < Faraday::Middleware
74
- def call(env)
75
- env[:request_headers]["X-API-Token"] = Quandl::Client::Base.token if Quandl::Client::Base.token.present?
76
- @app.call(env)
77
- end
78
- end
79
-
80
- class TrackRequestSource < Faraday::Middleware
81
- def call(env)
82
- env[:body] ||= {}
83
- env[:body][:request_source] = Quandl::Client.request_source
84
- env[:body][:request_version] = Quandl::Client.request_version
85
- env[:body][:request_platform] = RUBY_PLATFORM
86
- @app.call(env)
87
- end
88
- end
89
-
90
- end
91
-
1
+ require "active_support"
2
+ require "active_support/inflector"
3
+ require "active_support/core_ext/hash"
4
+ require "active_support/core_ext/object"
5
+
6
+ require 'quandl/client/base/model'
7
+ require 'quandl/client/base/attributes'
8
+ require 'quandl/client/base/validation'
9
+ require 'quandl/client/base/search'
10
+
11
+ I18n.enforce_available_locales = false
12
+
13
+ class Quandl::Client::Base
14
+
15
+ class << self
16
+
17
+ attr_accessor :url, :token
18
+
19
+ def use(url)
20
+ self.url = url
21
+ models_use_her_api!
22
+ end
23
+
24
+ def token=(token)
25
+ @token = token
26
+ models_use_her_api!
27
+ end
28
+
29
+ def her_api
30
+ Her::API.new.setup url: url_with_version do |c|
31
+ c.use TokenAuthentication
32
+ c.use TrackRequestSource
33
+ c.use Faraday::Request::Multipart
34
+ c.use Faraday::Request::UrlEncoded
35
+ c.use Quandl::Client::Middleware::ParseJSON
36
+ c.use Faraday::Adapter::NetHttp
37
+ end
38
+ end
39
+
40
+ def url
41
+ @url ||= "http://quandl.com/api/"
42
+ end
43
+
44
+ def url_with_version
45
+ File.join( url.to_s, Quandl::Client.api_version.to_s )
46
+ end
47
+
48
+ def inherited(subclass)
49
+ # remember models that inherit from base
50
+ models << subclass unless models.include?(subclass)
51
+ # include model behaviour
52
+ subclass.class_eval do
53
+ include Quandl::Client::Base::Model
54
+ include Quandl::Client::Base::Attributes
55
+ include Quandl::Client::Base::Validation
56
+ include Quandl::Client::Base::Search
57
+ end
58
+ end
59
+
60
+ def models
61
+ @@models ||= []
62
+ end
63
+
64
+ protected
65
+
66
+ def models_use_her_api!
67
+ models.each{|m|
68
+ m.url = url_with_version
69
+ m.use_api( her_api )
70
+ }
71
+ end
72
+
73
+ class TokenAuthentication < Faraday::Middleware
74
+ def call(env)
75
+ env[:request_headers]["X-API-Token"] = Quandl::Client::Base.token if Quandl::Client::Base.token.present?
76
+ @app.call(env)
77
+ end
78
+ end
79
+
80
+ class TrackRequestSource < Faraday::Middleware
81
+ def call(env)
82
+ env[:body] ||= {}
83
+ env[:body][:request_source] = Quandl::Client.request_source
84
+ env[:body][:request_version] = Quandl::Client.request_version
85
+ env[:body][:request_platform] = RUBY_PLATFORM
86
+ @app.call(env)
87
+ end
88
+ end
89
+
90
+ end
91
+
92
92
  end