itbit 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 93a2a11e017a8d9050ed59d9d3f8ffa16625a8a4
4
+ data.tar.gz: ff55f359fe89998a745b49cfc2da16cb06dbad85
5
+ SHA512:
6
+ metadata.gz: 96c4782330c4119eae9a266538d84bd71b57a7dcdc78d6a7a721a5d34d6c033298c5110078ed8b3407da41d36b7c61b63e93730668607a95eb0ddbf32e40c2b5
7
+ data.tar.gz: b30c3fbcb307ae0628ea9b0600d37423f1e77352498349957bcb8bc55454fe10d27df704a598b51b23d9aa77ec9a188c86fb29ea1e531cf521a24d1cd8a541f4
@@ -1,55 +1,65 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- itbit (0.0.5)
4
+ itbit (0.0.6)
5
5
  activesupport
6
6
  rest-client
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (4.1.2)
12
- i18n (~> 0.6, >= 0.6.9)
11
+ activesupport (4.2.6)
12
+ i18n (~> 0.7)
13
13
  json (~> 1.7, >= 1.7.7)
14
14
  minitest (~> 5.1)
15
- thread_safe (~> 0.1)
15
+ thread_safe (~> 0.3, >= 0.3.4)
16
16
  tzinfo (~> 1.1)
17
- addressable (2.3.6)
18
- crack (0.4.2)
17
+ addressable (2.4.0)
18
+ crack (0.4.3)
19
19
  safe_yaml (~> 1.0.0)
20
20
  diff-lcs (1.2.5)
21
- i18n (0.6.9)
22
- json (1.8.1)
23
- mime-types (1.25.1)
24
- minitest (5.3.5)
25
- rake (10.3.2)
26
- rdoc (4.2.0)
27
- json (~> 1.4)
28
- rest-client (1.6.8)
29
- mime-types (~> 1.16)
30
- rdoc (>= 2.4.2)
31
- rspec (3.0.0)
32
- rspec-core (~> 3.0.0)
33
- rspec-expectations (~> 3.0.0)
34
- rspec-mocks (~> 3.0.0)
35
- rspec-core (3.0.2)
36
- rspec-support (~> 3.0.0)
37
- rspec-expectations (3.0.2)
21
+ domain_name (0.5.20160310)
22
+ unf (>= 0.0.5, < 1.0.0)
23
+ hashdiff (0.3.0)
24
+ http-cookie (1.0.2)
25
+ domain_name (~> 0.5)
26
+ i18n (0.7.0)
27
+ json (1.8.3)
28
+ mime-types (2.99.1)
29
+ minitest (5.8.4)
30
+ netrc (0.11.0)
31
+ rake (11.1.2)
32
+ rest-client (1.8.0)
33
+ http-cookie (>= 1.0.2, < 2.0)
34
+ mime-types (>= 1.16, < 3.0)
35
+ netrc (~> 0.7)
36
+ rspec (3.4.0)
37
+ rspec-core (~> 3.4.0)
38
+ rspec-expectations (~> 3.4.0)
39
+ rspec-mocks (~> 3.4.0)
40
+ rspec-core (3.4.4)
41
+ rspec-support (~> 3.4.0)
42
+ rspec-expectations (3.4.0)
43
+ diff-lcs (>= 1.2.0, < 2.0)
44
+ rspec-support (~> 3.4.0)
45
+ rspec-mocks (3.4.1)
38
46
  diff-lcs (>= 1.2.0, < 2.0)
39
- rspec-support (~> 3.0.0)
40
- rspec-mocks (3.0.2)
41
- rspec-support (~> 3.0.0)
42
- rspec-support (3.0.2)
43
- safe_yaml (1.0.3)
44
- shoulda-matchers (2.6.1)
45
- activesupport (>= 3.0.0)
46
- thread_safe (0.3.4)
47
- timecop (0.7.1)
48
- tzinfo (1.2.1)
47
+ rspec-support (~> 3.4.0)
48
+ rspec-support (3.4.1)
49
+ safe_yaml (1.0.4)
50
+ shoulda-matchers (3.1.1)
51
+ activesupport (>= 4.0.0)
52
+ thread_safe (0.3.5)
53
+ timecop (0.8.1)
54
+ tzinfo (1.2.2)
49
55
  thread_safe (~> 0.1)
50
- webmock (1.18.0)
56
+ unf (0.1.4)
57
+ unf_ext
58
+ unf_ext (0.0.7.2)
59
+ webmock (1.24.2)
51
60
  addressable (>= 2.3.6)
52
61
  crack (>= 0.3.2)
62
+ hashdiff
53
63
 
54
64
  PLATFORMS
55
65
  ruby
@@ -19,15 +19,15 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "activesupport"
23
- spec.add_dependency "rest-client"
22
+ spec.add_dependency "activesupport", "~> 4.2"
23
+ spec.add_dependency "rest-client", "~> 1.8"
24
24
 
25
25
  spec.required_ruby_version = '>= 1.9.3'
26
26
  spec.add_development_dependency "bundler", "~> 1.3"
27
- spec.add_development_dependency "rake"
28
- spec.add_development_dependency "rspec"
29
- spec.add_development_dependency "rspec-mocks"
30
- spec.add_development_dependency "timecop"
31
- spec.add_development_dependency "webmock"
32
- spec.add_development_dependency "shoulda-matchers"
27
+ spec.add_development_dependency "rake", "~> 0"
28
+ spec.add_development_dependency "rspec", "~> 0"
29
+ spec.add_development_dependency "rspec-mocks", "~> 0"
30
+ spec.add_development_dependency "timecop", "~> 0"
31
+ spec.add_development_dependency "webmock", "~> 0"
32
+ spec.add_development_dependency "shoulda-matchers", "~> 0"
33
33
  end
@@ -1,8 +1,8 @@
1
+ require 'active_support'
1
2
  require 'active_support/core_ext'
2
3
  require 'json'
3
4
  require 'rest_client'
4
5
  require 'bigdecimal'
5
- require 'active_support'
6
6
  require 'digest/sha2'
7
7
  require 'base64'
8
8
  Dir[File.expand_path("../itbit/*.rb", __FILE__)].each {|f| require f}
@@ -17,8 +17,12 @@ module Itbit
17
17
  x_auth_nonce: nonce,
18
18
  content_type: 'application/json'
19
19
  }
20
- response = RestClient::Request
21
- .execute(:method => verb, :url => url, :payload => payload, :headers => headers)
20
+ response = RestClient::Request.execute(
21
+ :method => verb,
22
+ :url => url,
23
+ :payload => payload,
24
+ :headers => headers,
25
+ :ssl_version => 'SSLv23')
22
26
  JSON.parse(response.to_str) if response.to_str.presence
23
27
  end
24
28
 
@@ -7,10 +7,7 @@ module Itbit
7
7
  # The symbol ticker conveniently formatted as a ruby Hash with
8
8
  # symbolized keys.
9
9
  def self.ticker
10
- url = "#{Api.api_url}/markets/#{symbol.upcase}/ticker"
11
- rest_cl = RestClient::Request.execute :method => :get, :url => url, :ssl_version => 'SSLv23'
12
- raw_ticker = JSON.parse(rest_cl)
13
- raw_ticker.reduce({}) do |ticker, pair|
10
+ public_request("/markets/#{symbol.upcase}/ticker").reduce({}) do |ticker, pair|
14
11
  key = pair.first.underscore.to_sym
15
12
  value = case key
16
13
  when :pair then pair[1].underscore.to_sym
@@ -25,7 +22,7 @@ module Itbit
25
22
  # The symbol order book as a Hash with two keys: bids and asks.
26
23
  # Each of them is a list of list consisting of [price, quantity]
27
24
  def self.orders
28
- order_book = old_request("/markets/#{symbol.upcase}/orders").symbolize_keys
25
+ order_book = public_request("/markets/#{symbol.upcase}/order_book").symbolize_keys
29
26
  order_book.each do |key, value|
30
27
  order_book[key] = value.collect { |tuple| tuple.collect(&:to_d) }
31
28
  end
@@ -34,16 +31,17 @@ module Itbit
34
31
  # The symbol trades since tid (transaction id) as a list of hashes
35
32
  # that look like {date: unix_timestamp, price: 123.5, amount: 1.97, tid: 98375}
36
33
  def self.trades(tid = 0)
37
- trades = old_request("/markets/#{symbol.upcase}/trades", since: tid)
38
- trades.collect do |t|
39
- t.merge(price: t['price'].to_d, amount: t['amount'].to_d)
40
- .with_indifferent_access
34
+ trades = public_request("/markets/#{symbol.upcase}/trades", since: tid)
35
+ trades['recentTrades'].collect do |t|
36
+ { price: t['price'].to_d, amount: t['amount'].to_d,
37
+ tid: t['matchNumber'], date: DateTime.parse(t['timestamp']).to_i
38
+ }.with_indifferent_access
41
39
  end
42
40
  end
43
41
 
44
42
  # @visibility private
45
- def self.old_request(path, options = { })
46
- url = "https://www.itbit.com/api/v2#{path}"
43
+ def self.public_request(path, options = { })
44
+ url = "#{Api.api_url}#{path}"
47
45
  url << "?#{options.to_query}" if options.any?
48
46
  rest_cl = RestClient::Request.execute :method => :get, :url => url, :ssl_version => 'SSLv23'
49
47
  JSON.parse(rest_cl)
@@ -1,3 +1,3 @@
1
1
  module Itbit
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1 +1 @@
1
- [{"date":1415218064,"price":"340.00000000","amount":"1.97180000","tid":98375},{"date":1415218064,"price":"340.00000000","amount":"1.44730000","tid":98374},{"date":1415217474,"price":"339.75000000","amount":"1.93820000","tid":98373},{"date":1415217473,"price":"339.75000000","amount":"1.62210000","tid":98372},{"date":1415217455,"price":"339.75000000","amount":"1.31850000","tid":98371},{"date":1415217454,"price":"339.75000000","amount":"1.96260000","tid":98370}]
1
+ {"recentTrades":[{"timestamp":"2016-04-09T00:18:46.3800000Z","matchNumber":601855,"price":"418.14000000","amount":"0.01900000"},{"timestamp":"2016-04-09T00:18:37.7730000Z","matchNumber":601854,"price":"418.14000000","amount":"0.01540000"},{"timestamp":"2016-04-09T00:18:18.9430000Z","matchNumber":601853,"price":"418.31000000","amount":"0.01000000"},{"timestamp":"2016-04-09T00:17:56.3330000Z","matchNumber":601851,"price":"418.33000000","amount":"3.29100000"}],"count":4}
@@ -31,7 +31,7 @@ describe Itbit::MarketData do
31
31
  end
32
32
 
33
33
  it "gets the order book" do
34
- stub_old("/markets/#{symbol.upcase}/orders", 'order_book')
34
+ stub_get("/markets/#{symbol.upcase}/order_book", 'order_book')
35
35
  market_data.orders.should == {
36
36
  bids: [[639.21,1.95],[637.0,0.47],[630.0,1.58]],
37
37
  asks: [[642.4,0.4],[643.3,0.95],[644.3,0.25]]
@@ -39,14 +39,14 @@ describe Itbit::MarketData do
39
39
  end
40
40
 
41
41
  it "gets the trades" do
42
- stub_old("/markets/#{symbol.upcase}/trades", 'trades', since: 0)
42
+ stub_get("/markets/#{symbol.upcase}/trades", 'trades', since: 0)
43
43
  trades = market_data.trades
44
- trades.size.should == 6
44
+ trades.size.should == 4
45
45
  trades.first.tap do |t|
46
- t[:date].should == 1415218064
47
- t[:price].should == 340.0
48
- t[:amount].should == 1.9718
49
- t[:tid].should == 98375
46
+ t[:date].should == 1460161126
47
+ t[:price].should == 418.14
48
+ t[:amount].should == 0.019
49
+ t[:tid].should == 601855
50
50
  end
51
51
  end
52
52
  end
@@ -6,24 +6,21 @@ module RequestStubs
6
6
  end
7
7
  end
8
8
 
9
- def stub_old(path, fixture, options = { })
10
- stub_api(:get, "https://www.itbit.com/api/v2#{path}", fixture, options)
11
- end
12
-
13
9
  def stub_api(method, url, fixture, options)
14
10
  response_body = if fixture
15
11
  File.read(File.expand_path("../../fixtures/#{fixture}.json", __FILE__))
16
12
  else
17
13
  ''
18
14
  end
19
- with = if options.empty?
20
- {}
21
- elsif method == :get
22
- {query: options}
23
- else
24
- {body: options.to_json}
15
+ request = stub_request(method, url)
16
+
17
+ unless options.empty?
18
+ request = if method == :get
19
+ request.with(query: options)
20
+ else
21
+ request.with(body: options.to_json)
22
+ end
25
23
  end
26
- stub_request(method, url)
27
- .with(with).to_return(status: 200, body: response_body)
24
+ request.to_return(status: 200, body: response_body)
28
25
  end
29
26
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itbit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
- prerelease:
4
+ version: 0.0.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nubis
@@ -10,154 +9,137 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2015-03-13 00:00:00.000000000 Z
12
+ date: 2016-04-09 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activesupport
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
- version: '0'
20
+ version: '4.2'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - "~>"
29
26
  - !ruby/object:Gem::Version
30
- version: '0'
27
+ version: '4.2'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rest-client
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - "~>"
37
33
  - !ruby/object:Gem::Version
38
- version: '0'
34
+ version: '1.8'
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - "~>"
45
40
  - !ruby/object:Gem::Version
46
- version: '0'
41
+ version: '1.8'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: bundler
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ~>
46
+ - - "~>"
53
47
  - !ruby/object:Gem::Version
54
48
  version: '1.3'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ~>
53
+ - - "~>"
61
54
  - !ruby/object:Gem::Version
62
55
  version: '1.3'
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: rake
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
- - - ! '>='
60
+ - - "~>"
69
61
  - !ruby/object:Gem::Version
70
62
  version: '0'
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
- - - ! '>='
67
+ - - "~>"
77
68
  - !ruby/object:Gem::Version
78
69
  version: '0'
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: rspec
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
- - - ! '>='
74
+ - - "~>"
85
75
  - !ruby/object:Gem::Version
86
76
  version: '0'
87
77
  type: :development
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
- - - ! '>='
81
+ - - "~>"
93
82
  - !ruby/object:Gem::Version
94
83
  version: '0'
95
84
  - !ruby/object:Gem::Dependency
96
85
  name: rspec-mocks
97
86
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
87
  requirements:
100
- - - ! '>='
88
+ - - "~>"
101
89
  - !ruby/object:Gem::Version
102
90
  version: '0'
103
91
  type: :development
104
92
  prerelease: false
105
93
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
94
  requirements:
108
- - - ! '>='
95
+ - - "~>"
109
96
  - !ruby/object:Gem::Version
110
97
  version: '0'
111
98
  - !ruby/object:Gem::Dependency
112
99
  name: timecop
113
100
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
101
  requirements:
116
- - - ! '>='
102
+ - - "~>"
117
103
  - !ruby/object:Gem::Version
118
104
  version: '0'
119
105
  type: :development
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
108
  requirements:
124
- - - ! '>='
109
+ - - "~>"
125
110
  - !ruby/object:Gem::Version
126
111
  version: '0'
127
112
  - !ruby/object:Gem::Dependency
128
113
  name: webmock
129
114
  requirement: !ruby/object:Gem::Requirement
130
- none: false
131
115
  requirements:
132
- - - ! '>='
116
+ - - "~>"
133
117
  - !ruby/object:Gem::Version
134
118
  version: '0'
135
119
  type: :development
136
120
  prerelease: false
137
121
  version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
122
  requirements:
140
- - - ! '>='
123
+ - - "~>"
141
124
  - !ruby/object:Gem::Version
142
125
  version: '0'
143
126
  - !ruby/object:Gem::Dependency
144
127
  name: shoulda-matchers
145
128
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
129
  requirements:
148
- - - ! '>='
130
+ - - "~>"
149
131
  - !ruby/object:Gem::Version
150
132
  version: '0'
151
133
  type: :development
152
134
  prerelease: false
153
135
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
136
  requirements:
156
- - - ! '>='
137
+ - - "~>"
157
138
  - !ruby/object:Gem::Version
158
139
  version: '0'
159
- description: ! "API client library for itbit.com. Fetch public market\n data
160
- and build trading robots"
140
+ description: |-
141
+ API client library for itbit.com. Fetch public market
142
+ data and build trading robots
161
143
  email:
162
144
  - nb@bitex.la
163
145
  - tr@bitex.la
@@ -165,8 +147,8 @@ executables: []
165
147
  extensions: []
166
148
  extra_rdoc_files: []
167
149
  files:
168
- - .gitignore
169
- - .rspec
150
+ - ".gitignore"
151
+ - ".rspec"
170
152
  - Gemfile
171
153
  - Gemfile.lock
172
154
  - LICENSE.txt
@@ -200,27 +182,26 @@ files:
200
182
  homepage: http://github.com/bitex-la/itbit
201
183
  licenses:
202
184
  - MIT
185
+ metadata: {}
203
186
  post_install_message:
204
187
  rdoc_options: []
205
188
  require_paths:
206
189
  - lib
207
190
  required_ruby_version: !ruby/object:Gem::Requirement
208
- none: false
209
191
  requirements:
210
- - - ! '>='
192
+ - - ">="
211
193
  - !ruby/object:Gem::Version
212
194
  version: 1.9.3
213
195
  required_rubygems_version: !ruby/object:Gem::Requirement
214
- none: false
215
196
  requirements:
216
- - - ! '>='
197
+ - - ">="
217
198
  - !ruby/object:Gem::Version
218
199
  version: '0'
219
200
  requirements: []
220
201
  rubyforge_project:
221
- rubygems_version: 1.8.23
202
+ rubygems_version: 2.4.5
222
203
  signing_key:
223
- specification_version: 3
204
+ specification_version: 4
224
205
  summary: API client library for itbit.com
225
206
  test_files:
226
207
  - spec/fixtures/market_ticker_xbteur.json
@@ -240,4 +221,3 @@ test_files:
240
221
  - spec/support/request_stubs.rb
241
222
  - spec/trade_spec.rb
242
223
  - spec/wallet_spec.rb
243
- has_rdoc: