virtex 1.0.1

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.
@@ -0,0 +1,10 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+ require 'spec_helper'
4
+ require 'webmock/rspec'
5
+ require 'vcr'
6
+
7
+ VCR.configure do |c|
8
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
9
+ c.hook_into :webmock
10
+ end
@@ -0,0 +1,163 @@
1
+ require 'spec_helper'
2
+ require 'virtex'
3
+
4
+ describe Virtex::Client do
5
+
6
+ context "Unauthenticated" do
7
+
8
+ before(:each) do
9
+ @virtex = Virtex::Client.new
10
+ end
11
+
12
+ it "can retrieve the orderbook" do
13
+ VCR.use_cassette('virtex_unauthenticated_cassette') do
14
+ book = @virtex.orderbook('BTCCAD').orderbook
15
+ bids = book.bids
16
+ asks = book.asks
17
+
18
+ best_bid = bids.first
19
+ expect(best_bid[0]).to eq(631.481850000)
20
+ expect(best_bid[1]).to eq(1.367900000)
21
+
22
+ best_ask = asks.last
23
+ expect(best_ask[0]).to eq(634.974840000)
24
+ expect(best_ask[1]).to eq(9.727400000)
25
+ end
26
+ end
27
+
28
+ it "can retrieve the tradebook" do
29
+ VCR.use_cassette('virtex_unauthenticated_cassette') do
30
+ trades = @virtex.tradebook('BTCCAD').trades
31
+ latest = trades.first
32
+
33
+ expect(latest.for_currency).to eq("BTC")
34
+ expect(latest.price).to eq(631.570300000)
35
+ expect(latest.rate).to eq(631.570300000)
36
+ expect(latest.amount).to eq(3.610000000)
37
+ expect(latest.for_currency_amount).to eq(3.610000000)
38
+ expect(latest.trade_currency).to eq("CAD")
39
+ expect(latest.date).to eq(1407049994.0)
40
+ expect(latest.id).to eq(202614)
41
+ expect(latest.trade_currency_amount).to eq(2279.968700000)
42
+ end
43
+ end
44
+
45
+ it "can retrieve the ticker" do
46
+ VCR.use_cassette('virtex_unauthenticated_cassette') do
47
+ ticker = @virtex.ticker("BTCCAD").ticker.BTCCAD
48
+
49
+ expect(ticker.sell).to eq(634.91992)
50
+ expect(ticker.volume).to eq(64.912800000)
51
+ expect(ticker.buy).to eq(632.14943)
52
+ expect(ticker.last).to eq(632.071010000)
53
+ expect(ticker.high).to eq(647.999990000)
54
+ expect(ticker.low).to eq(630.000000000)
55
+ end
56
+ end
57
+ end
58
+
59
+ context "Authenticated" do
60
+
61
+ before(:each) do
62
+ @virtex = Virtex::Client.new(ENV['VIRTEX_API_KEY'], ENV['VIRTEX_API_SECRET'])
63
+ end
64
+
65
+ it "can retrieve the balance" do
66
+ VCR.use_cassette('virtex_authenticated_cassette') do
67
+ expect(@virtex.balance.balance.CAD).to eq(0.0385)
68
+ end
69
+ end
70
+
71
+ it "can retrieve transactions" do
72
+ VCR.use_cassette('virtex_authenticated_cassette') do
73
+ transactions = @virtex.transactions("BTC").transactions
74
+ latest = transactions.first
75
+
76
+ expect(latest.currency).to eq("BTC")
77
+ expect(latest.reason).to eq("deposit")
78
+ expect(latest.total).to eq(0.171200000)
79
+ expect(latest.id).to eq(2355387)
80
+ expect(latest.processed).to eq(1407051921)
81
+ end
82
+ end
83
+
84
+ it "can place an order" do
85
+ VCR.use_cassette('virtex_authenticated_cassette') do
86
+ new_order = @virtex.new_order!('sell', 0.1, 'BTCCAD', 1000.00).order
87
+
88
+ expect(new_order.status).to eq("open")
89
+ expect(new_order.id).to eq(543468)
90
+ end
91
+ end
92
+
93
+ it "can cancel an order" do
94
+ VCR.use_cassette('virtex_authenticated_cassette') do
95
+ r = @virtex.cancel_order! 543468
96
+
97
+ expect(r.status).to eq("ok")
98
+ end
99
+ end
100
+
101
+ it "can retrieve orders" do
102
+ VCR.use_cassette('virtex_authenticated_cassette') do
103
+ orders = @virtex.orders.orders
104
+ latest = orders.first
105
+
106
+ expect(latest.id).to eq(543468)
107
+ expect(latest.status).to eq("canceled")
108
+ expect(latest.requested).to eq(1000)
109
+ expect(latest.created).to eq(1407052408)
110
+ expect(latest.price).to eq(1000)
111
+ expect(latest.completed).to eq(1407052466)
112
+ expect(latest.remaining).to eq(0.1)
113
+ expect(latest.currency).to eq("BTC")
114
+ expect(latest.amount).to eq(0.1)
115
+ expect(latest.mode).to eq("sell")
116
+ expect(latest.with_currency).to eq("CAD")
117
+ end
118
+ end
119
+
120
+ it "can retrieve trades" do
121
+ VCR.use_cassette('virtex_authenticated_cassette') do
122
+ trades = @virtex.trades.trades
123
+ latest = trades.first
124
+
125
+ expect(latest.oid).to eq(543503)
126
+ expect(latest.id).to eq(202617)
127
+ expect(latest.rate).to eq(632.071010000)
128
+ expect(latest.date).to eq(1407053027.0)
129
+ expect(latest.price).to eq(0.00158)
130
+ expect(latest.trade_currency_amount).to eq(0.001000000)
131
+ expect(latest.trade_currency).to eq("BTC")
132
+ expect(latest.amount).to eq(0.632000000)
133
+ expect(latest.for_currency_amount).to eq(0.632000000)
134
+ expect(latest.for_currency).to eq("CAD")
135
+ end
136
+ end
137
+
138
+ it "can withdraw" do
139
+ VCR.use_cassette('virtex_authenticated_cassette') do
140
+ withdrawal = @virtex.withdraw!(0.01, 'BTC', '1DWYffTxhXgBtbswMjNViw9nNCvx3Drpvn').result
141
+
142
+ expect(withdrawal.currency).to eq("BTC")
143
+ expect(withdrawal.reason).to eq("withdrawal")
144
+ expect(withdrawal.fee).to eq(0)
145
+ expect(withdrawal.user).to eq("aianus")
146
+ expect(withdrawal.wallet).to eq("1DWYffTxhXgBtbswMjNViw9nNCvx3Drpvn")
147
+ expect(withdrawal.withdrawalfee).to eq(-0.0005)
148
+ expect(withdrawal.amount).to eq(-0.01)
149
+ expect(withdrawal.publictransactionid).to eq("1592b009ebeb1bdc2b53a0ffe1a2ae7a56ef4fe011f235a14fa1d7ba085b3c8a")
150
+ end
151
+ end
152
+
153
+ context "Error handling" do
154
+ it "throws an error when creating an order you can't pay for" do
155
+ VCR.use_cassette('virtex_authenticated_error_cassette') do
156
+ expect{@virtex.new_order! 'sell', 1.0, 'BTCCAD', 1000.00}.to raise_error(Virtex::Error)
157
+ end
158
+ end
159
+ end
160
+
161
+ end
162
+
163
+ end
data/virtex.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ Gem::Specification.new do |gem|
3
+ gem.name = 'virtex'
4
+ gem.version = '1.0.1'
5
+ gem.authors = ['aianus']
6
+ gem.email = ['hire@alexianus.com']
7
+ gem.summary = %q{A thin wrapper around the CaVirtex API}
8
+ gem.description = %q{A thin wrapper around the CaVirtex API}
9
+ gem.homepage = 'https://github.com/aianus/virtex'
10
+ gem.license = 'MIT'
11
+
12
+ gem.files = `git ls-files`.split($/)
13
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
+ gem.require_paths = ["lib"]
16
+
17
+ gem.add_dependency 'httparty', '~> 0.8'
18
+ gem.add_dependency 'hashie', '~> 1.2'
19
+
20
+ gem.add_development_dependency 'vcr', '~> 2.9'
21
+ gem.add_development_dependency 'rspec', '~> 3.0'
22
+ gem.add_development_dependency 'webmock', '~> 1.18'
23
+ gem.add_development_dependency 'simplecov', '~> 0.7'
24
+ end
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: virtex
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - aianus
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: hashie
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: vcr
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.18'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.18'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.7'
97
+ description: A thin wrapper around the CaVirtex API
98
+ email:
99
+ - hire@alexianus.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - Gemfile
106
+ - LICENSE
107
+ - README.md
108
+ - lib/virtex.rb
109
+ - lib/virtex/client.rb
110
+ - lib/virtex/exception.rb
111
+ - lib/virtex/version.rb
112
+ - spec/fixtures/vcr_cassettes/virtex_authenticated_cassette.yml
113
+ - spec/fixtures/vcr_cassettes/virtex_authenticated_error_cassette.yml
114
+ - spec/fixtures/vcr_cassettes/virtex_unauthenticated_cassette.yml
115
+ - spec/spec_helper.rb
116
+ - spec/virtex_spec.rb
117
+ - virtex.gemspec
118
+ homepage: https://github.com/aianus/virtex
119
+ licenses:
120
+ - MIT
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 2.4.1
139
+ signing_key:
140
+ specification_version: 4
141
+ summary: A thin wrapper around the CaVirtex API
142
+ test_files:
143
+ - spec/fixtures/vcr_cassettes/virtex_authenticated_cassette.yml
144
+ - spec/fixtures/vcr_cassettes/virtex_authenticated_error_cassette.yml
145
+ - spec/fixtures/vcr_cassettes/virtex_unauthenticated_cassette.yml
146
+ - spec/spec_helper.rb
147
+ - spec/virtex_spec.rb