bitex_bot 0.6.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -3
  3. data/Gemfile +3 -1
  4. data/bitex_bot.gemspec +5 -2
  5. data/lib/bitex_bot/database.rb +2 -2
  6. data/lib/bitex_bot/models/api_wrappers/api_wrapper.rb +47 -35
  7. data/lib/bitex_bot/models/api_wrappers/bitex/bitex_api_wrapper.rb +178 -0
  8. data/lib/bitex_bot/models/api_wrappers/bitstamp/bitstamp_api_wrapper.rb +62 -45
  9. data/lib/bitex_bot/models/api_wrappers/itbit/itbit_api_wrapper.rb +52 -28
  10. data/lib/bitex_bot/models/api_wrappers/kraken/kraken_api_wrapper.rb +61 -28
  11. data/lib/bitex_bot/models/api_wrappers/kraken/kraken_order.rb +12 -6
  12. data/lib/bitex_bot/models/buy_closing_flow.rb +3 -2
  13. data/lib/bitex_bot/models/buy_opening_flow.rb +31 -6
  14. data/lib/bitex_bot/models/closing_flow.rb +37 -22
  15. data/lib/bitex_bot/models/open_buy.rb +1 -3
  16. data/lib/bitex_bot/models/open_sell.rb +1 -3
  17. data/lib/bitex_bot/models/opening_flow.rb +42 -28
  18. data/lib/bitex_bot/models/order_book_simulator.rb +14 -13
  19. data/lib/bitex_bot/models/sell_closing_flow.rb +3 -2
  20. data/lib/bitex_bot/models/sell_opening_flow.rb +29 -4
  21. data/lib/bitex_bot/robot.rb +28 -43
  22. data/lib/bitex_bot/settings.rb +2 -0
  23. data/lib/bitex_bot/version.rb +1 -1
  24. data/settings.rb.sample +23 -5
  25. data/spec/bitex_bot/settings_spec.rb +13 -6
  26. data/spec/factories/bitex_ask.rb +14 -0
  27. data/spec/factories/bitex_bid.rb +14 -0
  28. data/spec/factories/bitex_buy.rb +7 -7
  29. data/spec/factories/bitex_sell.rb +7 -7
  30. data/spec/factories/buy_opening_flow.rb +10 -10
  31. data/spec/factories/open_buy.rb +8 -8
  32. data/spec/factories/open_sell.rb +8 -8
  33. data/spec/factories/sell_opening_flow.rb +10 -10
  34. data/spec/fixtures/bitstamp/balance.yml +63 -0
  35. data/spec/fixtures/bitstamp/order_book.yml +60 -0
  36. data/spec/fixtures/bitstamp/orders/all.yml +62 -0
  37. data/spec/fixtures/bitstamp/orders/failure_sell.yml +60 -0
  38. data/spec/fixtures/bitstamp/orders/successful_buy.yml +62 -0
  39. data/spec/fixtures/bitstamp/transactions.yml +244 -0
  40. data/spec/fixtures/bitstamp/user_transactions.yml +223 -0
  41. data/spec/models/api_wrappers/bitex_api_wrapper_spec.rb +147 -0
  42. data/spec/models/api_wrappers/bitstamp_api_wrapper_spec.rb +134 -140
  43. data/spec/models/api_wrappers/itbit_api_wrapper_spec.rb +9 -3
  44. data/spec/models/api_wrappers/kraken_api_wrapper_spec.rb +142 -73
  45. data/spec/models/bitex_api_spec.rb +4 -4
  46. data/spec/models/buy_closing_flow_spec.rb +19 -24
  47. data/spec/models/buy_opening_flow_spec.rb +102 -83
  48. data/spec/models/order_book_simulator_spec.rb +5 -0
  49. data/spec/models/robot_spec.rb +7 -4
  50. data/spec/models/sell_closing_flow_spec.rb +21 -25
  51. data/spec/models/sell_opening_flow_spec.rb +100 -80
  52. data/spec/spec_helper.rb +3 -1
  53. data/spec/support/bitex_stubs.rb +80 -40
  54. data/spec/support/bitstamp/bitstamp_api_wrapper_stubs.rb +2 -2
  55. data/spec/support/bitstamp/bitstamp_stubs.rb +3 -3
  56. data/spec/support/vcr.rb +8 -0
  57. data/spec/support/webmock.rb +8 -0
  58. metadata +77 -10
@@ -0,0 +1,244 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.bitstamp.net/api/v2/transactions/btcusd/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: !binary |-
14
+ T0s=
15
+ headers:
16
+ !binary "U2VydmVy":
17
+ - !binary |-
18
+ Y2xvdWRmbGFyZS1uZ2lueA==
19
+ !binary "RGF0ZQ==":
20
+ - !binary |-
21
+ VHVlLCAwMSBPY3QgMjAxMyAxNzozNjoxMCBHTVQ=
22
+ !binary "Q29udGVudC1UeXBl":
23
+ - !binary |-
24
+ YXBwbGljYXRpb24vanNvbg==
25
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
26
+ - !binary |-
27
+ Y2h1bmtlZA==
28
+ !binary "Q29ubmVjdGlvbg==":
29
+ - !binary |-
30
+ a2VlcC1hbGl2ZQ==
31
+ !binary "U2V0LUNvb2tpZQ==":
32
+ - !binary |-
33
+ X19jZmR1aWQ9ZDQ2ZmM2NDlhYzM0MmVkNDliZWExODAwNTg4NzQ4NGQ3MTM4
34
+ MDY0ODk2OTQwODsgZXhwaXJlcz1Nb24sIDIzLURlYy0yMDE5IDIzOjUwOjAw
35
+ IEdNVDsgcGF0aD0vOyBkb21haW49LmJpdHN0YW1wLm5ldA==
36
+ !binary "Q29udGVudC1MYW5ndWFnZQ==":
37
+ - !binary |-
38
+ ZW4=
39
+ !binary "RXhwaXJlcw==":
40
+ - !binary |-
41
+ VHVlLCAwMSBPY3QgMjAxMyAxNzozNjowOSBHTVQ=
42
+ !binary "VmFyeQ==":
43
+ - !binary |-
44
+ QWNjZXB0LUxhbmd1YWdl
45
+ !binary "Q2FjaGUtQ29udHJvbA==":
46
+ - !binary |-
47
+ bWF4LWFnZT0w
48
+ !binary "TGFzdC1Nb2RpZmllZA==":
49
+ - !binary |-
50
+ VHVlLCAwMSBPY3QgMjAxMyAxNzozNjowOSBHTVQ=
51
+ !binary "Q2YtUmF5":
52
+ - !binary |-
53
+ YjZhZTlkYWM1NTgwMTAz
54
+ body:
55
+ encoding: ASCII-8BIT
56
+ string: !binary |-
57
+ W3siZGF0ZSI6ICIxMzgwNjQ4OTUxIiwgInRpZCI6IDE0NjkwNzQsICJwcmlj
58
+ ZSI6ICIxMjYuOTUiLCAiYW1vdW50IjogIjEuMTAwMDAwMDAifSwgeyJkYXRl
59
+ IjogIjEzODA2NDg5NTEiLCAidGlkIjogMTQ2OTA3MywgInByaWNlIjogIjEy
60
+ Ni45NSIsICJhbW91bnQiOiAiMS4zMzAwMDAwMCJ9LCB7ImRhdGUiOiAiMTM4
61
+ MDY0ODk0MSIsICJ0aWQiOiAxNDY5MDcyLCAicHJpY2UiOiAiMTI2Ljk4Iiwg
62
+ ImFtb3VudCI6ICIyLjMzNTA1MTcyIn0sIHsiZGF0ZSI6ICIxMzgwNjQ4OTMx
63
+ IiwgInRpZCI6IDE0NjkwNzEsICJwcmljZSI6ICIxMjYuOTgiLCAiYW1vdW50
64
+ IjogIjAuMDE1NzkwOTMifSwgeyJkYXRlIjogIjEzODA2NDg5MTUiLCAidGlk
65
+ IjogMTQ2OTA3MCwgInByaWNlIjogIjEyNi44NSIsICJhbW91bnQiOiAiMC40
66
+ OTQ5OTQwOSJ9LCB7ImRhdGUiOiAiMTM4MDY0ODkxMiIsICJ0aWQiOiAxNDY5
67
+ MDY5LCAicHJpY2UiOiAiMTI2Ljk4IiwgImFtb3VudCI6ICIwLjc3OTYwOTky
68
+ In0sIHsiZGF0ZSI6ICIxMzgwNjQ4OTEyIiwgInRpZCI6IDE0NjkwNjgsICJw
69
+ cmljZSI6ICIxMjYuOTgiLCAiYW1vdW50IjogIjAuNzcxNzc1MDgifSwgeyJk
70
+ YXRlIjogIjEzODA2NDg4OTciLCAidGlkIjogMTQ2OTA2NywgInByaWNlIjog
71
+ IjEyNi44NCIsICJhbW91bnQiOiAiMC4xMzU5ODE0NCJ9LCB7ImRhdGUiOiAi
72
+ MTM4MDY0ODg1OSIsICJ0aWQiOiAxNDY5MDY2LCAicHJpY2UiOiAiMTI2Ljg0
73
+ IiwgImFtb3VudCI6ICIwLjQ5NDk5MzY5In0sIHsiZGF0ZSI6ICIxMzgwNjQ4
74
+ ODEwIiwgInRpZCI6IDE0NjkwNTgsICJwcmljZSI6ICIxMjYuODQiLCAiYW1v
75
+ dW50IjogIjAuNDk0OTkzMzAifSwgeyJkYXRlIjogIjEzODA2NDg3NDMiLCAi
76
+ dGlkIjogMTQ2OTA1NywgInByaWNlIjogIjEyNi44MSIsICJhbW91bnQiOiAi
77
+ MC40OTQ5OTIxMSJ9LCB7ImRhdGUiOiAiMTM4MDY0ODcyMCIsICJ0aWQiOiAx
78
+ NDY5MDU2LCAicHJpY2UiOiAiMTI3LjAwIiwgImFtb3VudCI6ICIxLjQ4NzU4
79
+ NjcwIn0sIHsiZGF0ZSI6ICIxMzgwNjQ4NzIwIiwgInRpZCI6IDE0NjkwNTUs
80
+ ICJwcmljZSI6ICIxMjYuOTkiLCAiYW1vdW50IjogIjAuNzcxNzE0MzEifSwg
81
+ eyJkYXRlIjogIjEzODA2NDg3MjAiLCAidGlkIjogMTQ2OTA1NCwgInByaWNl
82
+ IjogIjEyNi45OSIsICJhbW91bnQiOiAiMC43OTUzMzgyMiJ9LCB7ImRhdGUi
83
+ OiAiMTM4MDY0ODcyMCIsICJ0aWQiOiAxNDY5MDUzLCAicHJpY2UiOiAiMTI2
84
+ LjgxIiwgImFtb3VudCI6ICIwLjAwMDM5MDc3In0sIHsiZGF0ZSI6ICIxMzgw
85
+ NjQ4Njc5IiwgInRpZCI6IDE0NjkwNTIsICJwcmljZSI6ICIxMjYuNzkiLCAi
86
+ YW1vdW50IjogIjAuMTkzMzkwMjUifSwgeyJkYXRlIjogIjEzODA2NDg2Nzki
87
+ LCAidGlkIjogMTQ2OTA1MSwgInByaWNlIjogIjEyNi43OSIsICJhbW91bnQi
88
+ OiAiMC4zMDE2MDE0NyJ9LCB7ImRhdGUiOiAiMTM4MDY0ODY3MCIsICJ0aWQi
89
+ OiAxNDY5MDUwLCAicHJpY2UiOiAiMTI2LjgwIiwgImFtb3VudCI6ICIwLjQ5
90
+ NDk5MjExIn0sIHsiZGF0ZSI6ICIxMzgwNjQ4NjAyIiwgInRpZCI6IDE0Njkw
91
+ NDgsICJwcmljZSI6ICIxMjYuODAiLCAiYW1vdW50IjogIjAuMTg1NTY3ODIi
92
+ fSwgeyJkYXRlIjogIjEzODA2NDg1NTUiLCAidGlkIjogMTQ2OTA0NywgInBy
93
+ aWNlIjogIjEyNi44MCIsICJhbW91bnQiOiAiMC4zMDk0MjQyOSJ9LCB7ImRh
94
+ dGUiOiAiMTM4MDY0ODUzMyIsICJ0aWQiOiAxNDY5MDQzLCAicHJpY2UiOiAi
95
+ MTI2LjgxIiwgImFtb3VudCI6ICIwLjQ5NDYwMTc0In0sIHsiZGF0ZSI6ICIx
96
+ MzgwNjQ4NTMzIiwgInRpZCI6IDE0NjkwNDIsICJwcmljZSI6ICIxMjYuODEi
97
+ LCAiYW1vdW50IjogIjAuMTI1Mzk4MjYifSwgeyJkYXRlIjogIjEzODA2NDg1
98
+ MTMiLCAidGlkIjogMTQ2OTAzOSwgInByaWNlIjogIjEyNi44MSIsICJhbW91
99
+ bnQiOiAiMC4wMTAwMDAwMCJ9LCB7ImRhdGUiOiAiMTM4MDY0ODUwOSIsICJ0
100
+ aWQiOiAxNDY5MDM4LCAicHJpY2UiOiAiMTI2LjgwIiwgImFtb3VudCI6ICIw
101
+ LjQ5NDk5MjExIn0sIHsiZGF0ZSI6ICIxMzgwNjQ4NDk4IiwgInRpZCI6IDE0
102
+ NjkwMzcsICJwcmljZSI6ICIxMjYuODEiLCAiYW1vdW50IjogIjEuNzkxOTg2
103
+ MjQifSwgeyJkYXRlIjogIjEzODA2NDg0NzkiLCAidGlkIjogMTQ2OTAzNiwg
104
+ InByaWNlIjogIjEyNi44MSIsICJhbW91bnQiOiAiMS4zMDU3OTkwMCJ9LCB7
105
+ ImRhdGUiOiAiMTM4MDY0ODQzMCIsICJ0aWQiOiAxNDY5MDM0LCAicHJpY2Ui
106
+ OiAiMTI2LjgxIiwgImFtb3VudCI6ICIwLjc3MjgwOTcyIn0sIHsiZGF0ZSI6
107
+ ICIxMzgwNjQ4NDExIiwgInRpZCI6IDE0NjkwMzMsICJwcmljZSI6ICIxMjcu
108
+ MTEiLCAiYW1vdW50IjogIjAuNzk0NTg3MzcifSwgeyJkYXRlIjogIjEzODA2
109
+ NDg0MTAiLCAidGlkIjogMTQ2OTAzMiwgInByaWNlIjogIjEyNy4xMiIsICJh
110
+ bW91bnQiOiAiMS43OTI5MTQ3NSJ9LCB7ImRhdGUiOiAiMTM4MDY0ODQxMCIs
111
+ ICJ0aWQiOiAxNDY5MDMxLCAicHJpY2UiOiAiMTI3LjIxIiwgImFtb3VudCI6
112
+ ICIwLjA1MDY0NzU3In0sIHsiZGF0ZSI6ICIxMzgwNjQ4NDEwIiwgInRpZCI6
113
+ IDE0NjkwMzAsICJwcmljZSI6ICIxMjcuMjEiLCAiYW1vdW50IjogIjAuMTk5
114
+ OTk5NzUifSwgeyJkYXRlIjogIjEzODA2NDg0MTAiLCAidGlkIjogMTQ2OTAy
115
+ OSwgInByaWNlIjogIjEyNy4yMiIsICJhbW91bnQiOiAiMS43NDY5MDAwMCJ9
116
+ LCB7ImRhdGUiOiAiMTM4MDY0ODQxMCIsICJ0aWQiOiAxNDY5MDI4LCAicHJp
117
+ Y2UiOiAiMTI3LjIyIiwgImFtb3VudCI6ICIwLjgwMTc2MDczIn0sIHsiZGF0
118
+ ZSI6ICIxMzgwNjQ4Mzg1IiwgInRpZCI6IDE0NjkwMjcsICJwcmljZSI6ICIx
119
+ MjcuMjEiLCAiYW1vdW50IjogIjEuMjc5MzIwMDAifSwgeyJkYXRlIjogIjEz
120
+ ODA2NDgzNzAiLCAidGlkIjogMTQ2OTAyNiwgInByaWNlIjogIjEyNy4yMSIs
121
+ ICJhbW91bnQiOiAiMC44MzU5OTc1MiJ9LCB7ImRhdGUiOiAiMTM4MDY0ODM2
122
+ OSIsICJ0aWQiOiAxNDY5MDI1LCAicHJpY2UiOiAiMTI3LjIxIiwgImFtb3Vu
123
+ dCI6ICIwLjk0Mzc3NjQ2In0sIHsiZGF0ZSI6ICIxMzgwNjQ4MzY5IiwgInRp
124
+ ZCI6IDE0NjkwMjQsICJwcmljZSI6ICIxMjcuMjIiLCAiYW1vdW50IjogIjEu
125
+ NzQ2OTAwMDAifSwgeyJkYXRlIjogIjEzODA2NDgzNjkiLCAidGlkIjogMTQ2
126
+ OTAyMywgInByaWNlIjogIjEyNy40OSIsICJhbW91bnQiOiAiMS4yNzkzMTYw
127
+ MiJ9LCB7ImRhdGUiOiAiMTM4MDY0ODM2MyIsICJ0aWQiOiAxNDY5MDIyLCAi
128
+ cHJpY2UiOiAiMTI3LjQ5IiwgImFtb3VudCI6ICIwLjgwMDA2Mjc1In0sIHsi
129
+ ZGF0ZSI6ICIxMzgwNjQ4MzA5IiwgInRpZCI6IDE0NjkwMjEsICJwcmljZSI6
130
+ ICIxMjcuMjEiLCAiYW1vdW50IjogIjAuNDk0OTY4OTUifSwgeyJkYXRlIjog
131
+ IjEzODA2NDgyOTkiLCAidGlkIjogMTQ2OTAyMCwgInByaWNlIjogIjEyNy41
132
+ MCIsICJhbW91bnQiOiAiMC4wNjQ4NDE0MSJ9LCB7ImRhdGUiOiAiMTM4MDY0
133
+ ODI5OSIsICJ0aWQiOiAxNDY5MDE5LCAicHJpY2UiOiAiMTI3LjI0IiwgImFt
134
+ b3VudCI6ICIyLjEwMzM0ODAxIn0sIHsiZGF0ZSI6ICIxMzgwNjQ4Mjk5Iiwg
135
+ InRpZCI6IDE0NjkwMTgsICJwcmljZSI6ICIxMjcuMjMiLCAiYW1vdW50Ijog
136
+ IjAuMzMxODEwNTgifSwgeyJkYXRlIjogIjEzODA2NDgyNTgiLCAidGlkIjog
137
+ MTQ2OTAxNywgInByaWNlIjogIjEyNy4yMyIsICJhbW91bnQiOiAiMC4xNjMx
138
+ NTkxNiJ9LCB7ImRhdGUiOiAiMTM4MDY0ODIzOSIsICJ0aWQiOiAxNDY5MDE2
139
+ LCAicHJpY2UiOiAiMTI3LjIzIiwgImFtb3VudCI6ICIxLjU5OTc4NzU5In0s
140
+ IHsiZGF0ZSI6ICIxMzgwNjQ4MjM5IiwgInRpZCI6IDE0NjkwMTUsICJwcmlj
141
+ ZSI6ICIxMjcuMjMiLCAiYW1vdW50IjogIjEuNDAwMjEyNDEifSwgeyJkYXRl
142
+ IjogIjEzODA2NDgyMzAiLCAidGlkIjogMTQ2OTAxNCwgInByaWNlIjogIjEy
143
+ Ny4yNCIsICJhbW91bnQiOiAiMC4xMjY0NTM5NCJ9LCB7ImRhdGUiOiAiMTM4
144
+ MDY0ODIxNiIsICJ0aWQiOiAxNDY5MDEzLCAicHJpY2UiOiAiMTI3LjI0Iiwg
145
+ ImFtb3VudCI6ICIwLjc3MDE5ODA1In0sIHsiZGF0ZSI6ICIxMzgwNjQ4MjEz
146
+ IiwgInRpZCI6IDE0NjkwMTIsICJwcmljZSI6ICIxMjcuNTAiLCAiYW1vdW50
147
+ IjogIjAuNDAxNjAwMDAifSwgeyJkYXRlIjogIjEzODA2NDgxOTYiLCAidGlk
148
+ IjogMTQ2OTAxMSwgInByaWNlIjogIjEyNy41MCIsICJhbW91bnQiOiAiMC41
149
+ MDg0MDkxMCJ9LCB7ImRhdGUiOiAiMTM4MDY0ODE5NiIsICJ0aWQiOiAxNDY5
150
+ MDEwLCAicHJpY2UiOiAiMTI3LjQ5IiwgImFtb3VudCI6ICIwLjc2ODY4Nzc0
151
+ In0sIHsiZGF0ZSI6ICIxMzgwNjQ4MTk2IiwgInRpZCI6IDE0NjkwMDksICJw
152
+ cmljZSI6ICIxMjcuMjQiLCAiYW1vdW50IjogIjAuMTUyODc2MTYifSwgeyJk
153
+ YXRlIjogIjEzODA2NDgxOTMiLCAidGlkIjogMTQ2OTAwOCwgInByaWNlIjog
154
+ IjEyNy4yMyIsICJhbW91bnQiOiAiMC40OTQ5Njk3NCJ9LCB7ImRhdGUiOiAi
155
+ MTM4MDY0ODE3NCIsICJ0aWQiOiAxNDY5MDA0LCAicHJpY2UiOiAiMTI3LjIz
156
+ IiwgImFtb3VudCI6ICIxLjU4MDgxMTc3In0sIHsiZGF0ZSI6ICIxMzgwNjQ4
157
+ MTczIiwgInRpZCI6IDE0NjkwMDMsICJwcmljZSI6ICIxMjcuMjMiLCAiYW1v
158
+ dW50IjogIjEuNTU4NDU4MjMifSwgeyJkYXRlIjogIjEzODA2NDgxMzAiLCAi
159
+ dGlkIjogMTQ2ODk5OSwgInByaWNlIjogIjEyNy4yMyIsICJhbW91bnQiOiAi
160
+ MC4xODgyNDE3NyJ9LCB7ImRhdGUiOiAiMTM4MDY0ODEzMCIsICJ0aWQiOiAx
161
+ NDY4OTk4LCAicHJpY2UiOiAiMTI3LjIzIiwgImFtb3VudCI6ICIwLjMwNjcy
162
+ Nzk3In0sIHsiZGF0ZSI6ICIxMzgwNjQ4MDk0IiwgInRpZCI6IDE0Njg5OTcs
163
+ ICJwcmljZSI6ICIxMjcuMjQiLCAiYW1vdW50IjogIjAuMDEwMDAwMDAifSwg
164
+ eyJkYXRlIjogIjEzODA2NDgwNzIiLCAidGlkIjogMTQ2ODk5NiwgInByaWNl
165
+ IjogIjEyNy4yNCIsICJhbW91bnQiOiAiMC4zMzIwOTM5OCJ9LCB7ImRhdGUi
166
+ OiAiMTM4MDY0ODAxMSIsICJ0aWQiOiAxNDY4OTk1LCAicHJpY2UiOiAiMTI3
167
+ LjIzIiwgImFtb3VudCI6ICIwLjQ5NDk2OTc0In0sIHsiZGF0ZSI6ICIxMzgw
168
+ NjQ3OTU5IiwgInRpZCI6IDE0Njg5OTQsICJwcmljZSI6ICIxMjcuNTAiLCAi
169
+ YW1vdW50IjogIjE4LjMzNzQ3MzEzIn0sIHsiZGF0ZSI6ICIxMzgwNjQ3OTU5
170
+ IiwgInRpZCI6IDE0Njg5OTMsICJwcmljZSI6ICIxMjcuNDgiLCAiYW1vdW50
171
+ IjogIjAuMzQ0OTc5NjAifSwgeyJkYXRlIjogIjEzODA2NDc5NTkiLCAidGlk
172
+ IjogMTQ2ODk5MiwgInByaWNlIjogIjEyNy4zNyIsICJhbW91bnQiOiAiMC41
173
+ MjUzMDQ4MCJ9LCB7ImRhdGUiOiAiMTM4MDY0Nzk1OSIsICJ0aWQiOiAxNDY4
174
+ OTkxLCAicHJpY2UiOiAiMTI3LjM2IiwgImFtb3VudCI6ICIwLjc5MjI0MjQ3
175
+ In0sIHsiZGF0ZSI6ICIxMzgwNjQ3OTUwIiwgInRpZCI6IDE0Njg5OTAsICJw
176
+ cmljZSI6ICIxMjcuMjEiLCAiYW1vdW50IjogIjAuNDk0OTY4OTUifSwgeyJk
177
+ YXRlIjogIjEzODA2NDc5MTkiLCAidGlkIjogMTQ2ODk4OSwgInByaWNlIjog
178
+ IjEyNy4zNiIsICJhbW91bnQiOiAiMC4wMDg2MzY5MyJ9LCB7ImRhdGUiOiAi
179
+ MTM4MDY0Nzg4NCIsICJ0aWQiOiAxNDY4OTg3LCAicHJpY2UiOiAiMTI3LjIx
180
+ IiwgImFtb3VudCI6ICIxLjEwMDAwMDAwIn0sIHsiZGF0ZSI6ICIxMzgwNjQ3
181
+ ODM1IiwgInRpZCI6IDE0Njg5ODMsICJwcmljZSI6ICIxMjcuMTIiLCAiYW1v
182
+ dW50IjogIjAuMjExMTM4NjkifSwgeyJkYXRlIjogIjEzODA2NDc4MzIiLCAi
183
+ dGlkIjogMTQ2ODk4MiwgInByaWNlIjogIjEyNy4xMiIsICJhbW91bnQiOiAi
184
+ MC4yODM4MjY3MCJ9LCB7ImRhdGUiOiAiMTM4MDY0Nzc3NyIsICJ0aWQiOiAx
185
+ NDY4OTgxLCAicHJpY2UiOiAiMTI3LjEyIiwgImFtb3VudCI6ICIwLjQ5NDk2
186
+ NDk5In0sIHsiZGF0ZSI6ICIxMzgwNjQ3NzYxIiwgInRpZCI6IDE0Njg5ODAs
187
+ ICJwcmljZSI6ICIxMjcuMzciLCAiYW1vdW50IjogIjAuMjU5ODA5NDMifSwg
188
+ eyJkYXRlIjogIjEzODA2NDc3NjEiLCAidGlkIjogMTQ2ODk3OSwgInByaWNl
189
+ IjogIjEyNy4zNSIsICJhbW91bnQiOiAiMC43OTMwODk5MSJ9LCB7ImRhdGUi
190
+ OiAiMTM4MDY0Nzc2MSIsICJ0aWQiOiAxNDY4OTc4LCAicHJpY2UiOiAiMTI3
191
+ LjExIiwgImFtb3VudCI6ICIwLjAyMzQ1NzY2In0sIHsiZGF0ZSI6ICIxMzgw
192
+ NjQ3NzM4IiwgInRpZCI6IDE0Njg5NzcsICJwcmljZSI6ICIxMjcuMTAiLCAi
193
+ YW1vdW50IjogIjAuNDk0OTkzMzAifSwgeyJkYXRlIjogIjEzODA2NDc3Mjki
194
+ LCAidGlkIjogMTQ2ODk3NiwgInByaWNlIjogIjEyNy4xMCIsICJhbW91bnQi
195
+ OiAiMTguNTQ1ODUwMTcifSwgeyJkYXRlIjogIjEzODA2NDc3MTkiLCAidGlk
196
+ IjogMTQ2ODk3NSwgInByaWNlIjogIjEyNi44MyIsICJhbW91bnQiOiAiMC40
197
+ OTQ5OTMzMCJ9LCB7ImRhdGUiOiAiMTM4MDY0NzcwNCIsICJ0aWQiOiAxNDY4
198
+ OTc0LCAicHJpY2UiOiAiMTI3LjEwIiwgImFtb3VudCI6ICIwLjg5MjM2ODIx
199
+ In0sIHsiZGF0ZSI6ICIxMzgwNjQ3Njk3IiwgInRpZCI6IDE0Njg5NzMsICJw
200
+ cmljZSI6ICIxMjcuMTAiLCAiYW1vdW50IjogIjAuMDI4NjEwMjYifSwgeyJk
201
+ YXRlIjogIjEzODA2NDc2NjAiLCAidGlkIjogMTQ2ODk2OCwgInByaWNlIjog
202
+ IjEyNy4xMCIsICJhbW91bnQiOiAiOC4yNjgwMjE1NiJ9LCB7ImRhdGUiOiAi
203
+ MTM4MDY0NzY2MCIsICJ0aWQiOiAxNDY4OTY3LCAicHJpY2UiOiAiMTI3LjAz
204
+ IiwgImFtb3VudCI6ICIwLjQ5NDk2MTgyIn0sIHsiZGF0ZSI6ICIxMzgwNjQ3
205
+ NjYwIiwgInRpZCI6IDE0Njg5NjYsICJwcmljZSI6ICIxMjcuMDAiLCAiYW1v
206
+ dW50IjogIjExLjg3MTk3NjYyIn0sIHsiZGF0ZSI6ICIxMzgwNjQ3NjU2Iiwg
207
+ InRpZCI6IDE0Njg5NjUsICJwcmljZSI6ICIxMjYuODIiLCAiYW1vdW50Ijog
208
+ IjAuNDk0OTkyNTEifSwgeyJkYXRlIjogIjEzODA2NDc2NDIiLCAidGlkIjog
209
+ MTQ2ODk2NCwgInByaWNlIjogIjEyNy4wMCIsICJhbW91bnQiOiAiMTMuMTI4
210
+ MDIzMzgifSwgeyJkYXRlIjogIjEzODA2NDc2NDEiLCAidGlkIjogMTQ2ODk2
211
+ MywgInByaWNlIjogIjEyNy4wMCIsICJhbW91bnQiOiAiNC4xMzk1MzU2OCJ9
212
+ LCB7ImRhdGUiOiAiMTM4MDY0NzYyOSIsICJ0aWQiOiAxNDY4OTYyLCAicHJp
213
+ Y2UiOiAiMTI3LjAwIiwgImFtb3VudCI6ICIyLjIyMDIzNjIyIn0sIHsiZGF0
214
+ ZSI6ICIxMzgwNjQ3NjIyIiwgInRpZCI6IDE0Njg5NjEsICJwcmljZSI6ICIx
215
+ MjcuMDAiLCAiYW1vdW50IjogIjQuNTAwMDAwMDAifSwgeyJkYXRlIjogIjEz
216
+ ODA2NDc2MTAiLCAidGlkIjogMTQ2ODk2MCwgInByaWNlIjogIjEyNy4wMCIs
217
+ ICJhbW91bnQiOiAiMi40MTY4ODYyMyJ9LCB7ImRhdGUiOiAiMTM4MDY0NzYx
218
+ MCIsICJ0aWQiOiAxNDY4OTU5LCAicHJpY2UiOiAiMTI2Ljk3IiwgImFtb3Vu
219
+ dCI6ICIwLjc4NzU4NzYyIn0sIHsiZGF0ZSI6ICIxMzgwNjQ3NjEwIiwgInRp
220
+ ZCI6IDE0Njg5NTgsICJwcmljZSI6ICIxMjYuOTYiLCAiYW1vdW50IjogIjAu
221
+ Nzk1NTI2MTUifSwgeyJkYXRlIjogIjEzODA2NDc2MDAiLCAidGlkIjogMTQ2
222
+ ODk1NywgInByaWNlIjogIjEyNi43OSIsICJhbW91bnQiOiAiMC40OTQ5OTEz
223
+ MiJ9LCB7ImRhdGUiOiAiMTM4MDY0NzU3NyIsICJ0aWQiOiAxNDY4OTU2LCAi
224
+ cHJpY2UiOiAiMTI2Ljc4IiwgImFtb3VudCI6ICIwLjc4MDg4MDI3In0sIHsi
225
+ ZGF0ZSI6ICIxMzgwNjQ3NTc3IiwgInRpZCI6IDE0Njg5NTUsICJwcmljZSI6
226
+ ICIxMjYuNzgiLCAiYW1vdW50IjogIjAuMDEzMzcxNjYifSwgeyJkYXRlIjog
227
+ IjEzODA2NDc1NzAiLCAidGlkIjogMTQ2ODk1NCwgInByaWNlIjogIjEyNi43
228
+ OCIsICJhbW91bnQiOiAiMC43OTExNjk4NCJ9LCB7ImRhdGUiOiAiMTM4MDY0
229
+ NzU3MCIsICJ0aWQiOiAxNDY4OTUzLCAicHJpY2UiOiAiMTI2Ljc3IiwgImFt
230
+ b3VudCI6ICIwLjc4ODgzMDE2In0sIHsiZGF0ZSI6ICIxMzgwNjQ3NTM1Iiwg
231
+ InRpZCI6IDE0Njg5NTIsICJwcmljZSI6ICIxMjYuNzgiLCAiYW1vdW50Ijog
232
+ IjAuMDAwMDAxODAifSwgeyJkYXRlIjogIjEzODA2NDc1MzUiLCAidGlkIjog
233
+ MTQ2ODk1MSwgInByaWNlIjogIjEyNi42NyIsICJhbW91bnQiOiAiMC4wMDAw
234
+ MDEyMCJ9LCB7ImRhdGUiOiAiMTM4MDY0NzUzNCIsICJ0aWQiOiAxNDY4OTUw
235
+ LCAicHJpY2UiOiAiMTI2LjYzIiwgImFtb3VudCI6ICIwLjIwNTgzMzkyIn0s
236
+ IHsiZGF0ZSI6ICIxMzgwNjQ3NTM0IiwgInRpZCI6IDE0Njg5NDksICJwcmlj
237
+ ZSI6ICIxMjYuNjMiLCAiYW1vdW50IjogIjExLjkyNzMwMzA4In0sIHsiZGF0
238
+ ZSI6ICIxMzgwNjQ3NTIyIiwgInRpZCI6IDE0Njg5NDYsICJwcmljZSI6ICIx
239
+ MjYuNjMiLCAiYW1vdW50IjogIjAuMDA1MDE0NjEifSwgeyJkYXRlIjogIjEz
240
+ ODA2NDc0OTAiLCAidGlkIjogMTQ2ODk0NSwgInByaWNlIjogIjEyNi42NSIs
241
+ ICJhbW91bnQiOiAiMC44ODAwMDAwMCJ9XQ==
242
+ http_version:
243
+ recorded_at: Tue, 01 Oct 2013 17:36:10 GMT
244
+ recorded_with: VCR 2.6.0
@@ -0,0 +1,223 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://www.bitstamp.net/api/v2/user_transactions/btcusd/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: key=BITSTAMP_KEY&nonce=1380238185&signature=7CBA96CEB133CF1E40EB223B8EE85696D75FFFB2AF8DFF9052F9F6651F829C2A&timedelta=3600
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: !binary |-
14
+ T0s=
15
+ headers:
16
+ !binary "U2VydmVy":
17
+ - !binary |-
18
+ Y2xvdWRmbGFyZS1uZ2lueA==
19
+ !binary "RGF0ZQ==":
20
+ - !binary |-
21
+ VGh1LCAyNiBTZXAgMjAxMyAyMzoyOTo0NiBHTVQ=
22
+ !binary "Q29udGVudC1UeXBl":
23
+ - !binary |-
24
+ YXBwbGljYXRpb24vanNvbg==
25
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
26
+ - !binary |-
27
+ Y2h1bmtlZA==
28
+ !binary "Q29ubmVjdGlvbg==":
29
+ - !binary |-
30
+ a2VlcC1hbGl2ZQ==
31
+ !binary "U2V0LUNvb2tpZQ==":
32
+ - !binary |-
33
+ X19jZmR1aWQ9ZDg0ODRmMzI3NTJiOTlmMGMzNzI0YWE1YjNkYjczNjA2MTM4
34
+ MDIzODE4NTY4MzsgZXhwaXJlcz1Nb24sIDIzLURlYy0yMDE5IDIzOjUwOjAw
35
+ IEdNVDsgcGF0aD0vOyBkb21haW49LmJpdHN0YW1wLm5ldA==
36
+ !binary "Q29udGVudC1MYW5ndWFnZQ==":
37
+ - !binary |-
38
+ ZW4=
39
+ !binary "RXhwaXJlcw==":
40
+ - !binary |-
41
+ VGh1LCAyNiBTZXAgMjAxMyAyMzoyOTo0NiBHTVQ=
42
+ !binary "VmFyeQ==":
43
+ - !binary |-
44
+ QWNjZXB0LUxhbmd1YWdl
45
+ !binary "Q2FjaGUtQ29udHJvbA==":
46
+ - !binary |-
47
+ bWF4LWFnZT0w
48
+ !binary "TGFzdC1Nb2RpZmllZA==":
49
+ - !binary |-
50
+ VGh1LCAyNiBTZXAgMjAxMyAyMzoyOTo0NiBHTVQ=
51
+ !binary "Q2YtUmF5":
52
+ - !binary |-
53
+ YjQzYmNmNDg0NjQwMzIw
54
+ body:
55
+ encoding: ASCII-8BIT
56
+ string: !binary |-
57
+ W3sidXNkIjogIjAuMDAiLCAiYnRjIjogIi0zLjAwNzgxMTI0IiwgImJ0Y191
58
+ c2QiOiAiMC4wMCIsICJvcmRlcl9pZCI6IG51bGwsICJmZWUiOiAiMC4wMCIs
59
+ ICJ0eXBlIjogMSwgImlkIjogMTQ0NDQ3NiwgImRhdGV0aW1lIjogIjIwMTMt
60
+ MDktMjYgMTM6NDY6NTkifSwgeyJ1c2QiOiAiLTM3My41MSIsICJidGMiOiAi
61
+ My4wMDc4MTEyNCIsICJidGNfdXNkIjogIjEyNC4xOCIsICJvcmRlcl9pZCI6
62
+ IDc2MjM5NDIsICJmZWUiOiAiMS41MCIsICJ0eXBlIjogMiwgImlkIjogMTQ0
63
+ NDQwNCwgImRhdGV0aW1lIjogIjIwMTMtMDktMjYgMTM6Mjg6NTUifSwgeyJ1
64
+ c2QiOiAiNDUwMC4wMCIsICJidGMiOiAiMC4wMDAwMDAwMCIsICJidGNfdXNk
65
+ IjogIjAuMDAiLCAib3JkZXJfaWQiOiBudWxsLCAiZmVlIjogIjE1LjAwIiwg
66
+ InR5cGUiOiAwLCAiaWQiOiAxNDM5ODY0LCAiZGF0ZXRpbWUiOiAiMjAxMy0w
67
+ OS0yNSAxODoxMjoxOCJ9LCB7InVzZCI6ICIwLjAwIiwgImJ0YyI6ICItMy45
68
+ OTcxOTA3OSIsICJidGNfdXNkIjogIjAuMDAiLCAib3JkZXJfaWQiOiBudWxs
69
+ LCAiZmVlIjogIjAuMDAiLCAidHlwZSI6IDEsICJpZCI6IDE0Mzg2MDksICJk
70
+ YXRldGltZSI6ICIyMDEzLTA5LTI1IDEyOjM4OjA0In0sIHsidXNkIjogIi00
71
+ OTguMDEiLCAiYnRjIjogIjMuOTk3MTkwNzkiLCAiYnRjX3VzZCI6ICIxMjQu
72
+ NTkiLCAib3JkZXJfaWQiOiA3NjAxMzExLCAiZmVlIjogIjIuMDAiLCAidHlw
73
+ ZSI6IDIsICJpZCI6IDE0Mzg1MzcsICJkYXRldGltZSI6ICIyMDEzLTA5LTI1
74
+ IDEyOjMwOjIyIn0sIHsidXNkIjogIjAuMDAiLCAiYnRjIjogIi0xMC45MzU4
75
+ OTg0OCIsICJidGNfdXNkIjogIjAuMDAiLCAib3JkZXJfaWQiOiBudWxsLCAi
76
+ ZmVlIjogIjAuMDAiLCAidHlwZSI6IDEsICJpZCI6IDE0MzM4NjAsICJkYXRl
77
+ dGltZSI6ICIyMDEzLTA5LTI0IDE3OjU5OjIxIn0sIHsidXNkIjogIi0yMC4z
78
+ MCIsICJidGMiOiAiMC4xNjUwOTg0OCIsICJidGNfdXNkIjogIjEyMi45MyIs
79
+ ICJvcmRlcl9pZCI6IDc1ODEzOTYsICJmZWUiOiAiMC4wOSIsICJ0eXBlIjog
80
+ MiwgImlkIjogMTQzMzAxMywgImRhdGV0aW1lIjogIjIwMTMtMDktMjQgMTU6
81
+ MDQ6MjAifSwgeyJ1c2QiOiAiLTM2OC43OSIsICJidGMiOiAiMy4wMDAwMDAw
82
+ MCIsICJidGNfdXNkIjogIjEyMi45MyIsICJvcmRlcl9pZCI6IDc1ODEzOTYs
83
+ ICJmZWUiOiAiMS40OCIsICJ0eXBlIjogMiwgImlkIjogMTQzMzAxMSwgImRh
84
+ dGV0aW1lIjogIjIwMTMtMDktMjQgMTU6MDE6MTMifSwgeyJ1c2QiOiAiLTgy
85
+ OS44OCIsICJidGMiOiAiNi43NTA4MDAwMCIsICJidGNfdXNkIjogIjEyMi45
86
+ MyIsICJvcmRlcl9pZCI6IDc1ODEzOTYsICJmZWUiOiAiMy4zMiIsICJ0eXBl
87
+ IjogMiwgImlkIjogMTQzMzAwOCwgImRhdGV0aW1lIjogIjIwMTMtMDktMjQg
88
+ MTU6MDA6MzQifSwgeyJ1c2QiOiAiLTIuNDYiLCAiYnRjIjogIjAuMDIwMDAw
89
+ MDAiLCAiYnRjX3VzZCI6ICIxMjIuOTMiLCAib3JkZXJfaWQiOiA3NTgxMzk2
90
+ LCAiZmVlIjogIjAuMDEiLCAidHlwZSI6IDIsICJpZCI6IDE0MzMwMDcsICJk
91
+ YXRldGltZSI6ICIyMDEzLTA5LTI0IDE1OjAwOjI4In0sIHsidXNkIjogIi0x
92
+ MjIuOTMiLCAiYnRjIjogIjEuMDAwMDAwMDAiLCAiYnRjX3VzZCI6ICIxMjIu
93
+ OTMiLCAib3JkZXJfaWQiOiA3NTgxMzk2LCAiZmVlIjogIjAuNTIiLCAidHlw
94
+ ZSI6IDIsICJpZCI6IDE0MzMwMDYsICJkYXRldGltZSI6ICIyMDEzLTA5LTI0
95
+ IDE1OjAwOjAyIn0sIHsidXNkIjogIjAuMDAiLCAiYnRjIjogIi0xMS45OTk2
96
+ MDg2OSIsICJidGNfdXNkIjogIjAuMDAiLCAib3JkZXJfaWQiOiBudWxsLCAi
97
+ ZmVlIjogIjAuMDAiLCAidHlwZSI6IDEsICJpZCI6IDEzOTM5NDQsICJkYXRl
98
+ dGltZSI6ICIyMDEzLTA5LTE3IDEzOjE2OjA0In0sIHsidXNkIjogIi01Njku
99
+ MjAiLCAiYnRjIjogIjQuNDgwNDc4NTgiLCAiYnRjX3VzZCI6ICIxMjcuMDQi
100
+ LCAib3JkZXJfaWQiOiA3NDI5NjA0LCAiZmVlIjogIjIuMjgiLCAidHlwZSI6
101
+ IDIsICJpZCI6IDEzOTM4MTAsICJkYXRldGltZSI6ICIyMDEzLTA5LTE3IDEy
102
+ OjU3OjIzIn0sIHsidXNkIjogIi05OS4wMCIsICJidGMiOiAiMC43NzkyODIx
103
+ MiIsICJidGNfdXNkIjogIjEyNy4wNCIsICJvcmRlcl9pZCI6IDc0Mjk2MDQs
104
+ ICJmZWUiOiAiMC40MCIsICJ0eXBlIjogMiwgImlkIjogMTM5MzgwOCwgImRh
105
+ dGV0aW1lIjogIjIwMTMtMDktMTcgMTI6NTc6MTYifSwgeyJ1c2QiOiAiLTk5
106
+ LjAwIiwgImJ0YyI6ICIwLjc3OTI4MjEyIiwgImJ0Y191c2QiOiAiMTI3LjA0
107
+ IiwgIm9yZGVyX2lkIjogNzQyOTYwNCwgImZlZSI6ICIwLjQwIiwgInR5cGUi
108
+ OiAyLCAiaWQiOiAxMzkzODA3LCAiZGF0ZXRpbWUiOiAiMjAxMy0wOS0xNyAx
109
+ Mjo1NzoxNCJ9LCB7InVzZCI6ICItNzU2LjQwIiwgImJ0YyI6ICI1Ljk2MDU2
110
+ NTg3IiwgImJ0Y191c2QiOiAiMTI2LjkwIiwgIm9yZGVyX2lkIjogNzQyOTYw
111
+ NCwgImZlZSI6ICIzLjE4IiwgInR5cGUiOiAyLCAiaWQiOiAxMzkzNzU3LCAi
112
+ ZGF0ZXRpbWUiOiAiMjAxMy0wOS0xNyAxMjo0NTo0NSJ9LCB7InVzZCI6ICI0
113
+ MzQ1LjAwIiwgImJ0YyI6ICIwLjAwMDAwMDAwIiwgImJ0Y191c2QiOiAiMC4w
114
+ MCIsICJvcmRlcl9pZCI6IG51bGwsICJmZWUiOiAiMTUuMDAiLCAidHlwZSI6
115
+ IDAsICJpZCI6IDEzOTE5MTIsICJkYXRldGltZSI6ICIyMDEzLTA5LTE3IDA4
116
+ OjI5OjAzIn0sIHsidXNkIjogIjAuMDAiLCAiYnRjIjogIi00LjczOTc4ODky
117
+ IiwgImJ0Y191c2QiOiAiMC4wMCIsICJvcmRlcl9pZCI6IG51bGwsICJmZWUi
118
+ OiAiMC4wMCIsICJ0eXBlIjogMSwgImlkIjogMTM4Nzg5MSwgImRhdGV0aW1l
119
+ IjogIjIwMTMtMDktMTYgMTQ6MTE6MDMifSwgeyJ1c2QiOiAiLTI3LjcyIiwg
120
+ ImJ0YyI6ICIwLjIyMDM2NzI4IiwgImJ0Y191c2QiOiAiMTI1Ljc5IiwgIm9y
121
+ ZGVyX2lkIjogNzQwOTgwNCwgImZlZSI6ICIwLjEyIiwgInR5cGUiOiAyLCAi
122
+ aWQiOiAxMzg3ODgxLCAiZGF0ZXRpbWUiOiAiMjAxMy0wOS0xNiAxNDowNDow
123
+ MiJ9LCB7InVzZCI6ICItOTguMDAiLCAiYnRjIjogIjAuNzc5MDc2MjQiLCAi
124
+ YnRjX3VzZCI6ICIxMjUuNzkiLCAib3JkZXJfaWQiOiA3NDA5ODA0LCAiZmVl
125
+ IjogIjAuNDIiLCAidHlwZSI6IDIsICJpZCI6IDEzODc4NzksICJkYXRldGlt
126
+ ZSI6ICIyMDEzLTA5LTE2IDE0OjAzOjEwIn0sIHsidXNkIjogIi0xMjUuMzYi
127
+ LCAiYnRjIjogIjEuMDAwMDAwMDAiLCAiYnRjX3VzZCI6ICIxMjUuMzYiLCAi
128
+ b3JkZXJfaWQiOiA3Mzk0NzE1LCAiZmVlIjogIjAuNTMiLCAidHlwZSI6IDIs
129
+ ICJpZCI6IDEzODQzNjksICJkYXRldGltZSI6ICIyMDEzLTA5LTE1IDIwOjIw
130
+ OjQzIn0sIHsidXNkIjogIi0zMS44MSIsICJidGMiOiAiMC4yNDgyNzgzMCIs
131
+ ICJidGNfdXNkIjogIjEyOC4xMyIsICJvcmRlcl9pZCI6IDczNDAwOTYsICJm
132
+ ZWUiOiAiMC4xNCIsICJ0eXBlIjogMiwgImlkIjogMTM3NTM1NCwgImRhdGV0
133
+ aW1lIjogIjIwMTMtMDktMTMgMjA6MjQ6MzIifSwgeyJ1c2QiOiAiLTguODMi
134
+ LCAiYnRjIjogIjAuMDY4OTE0MzkiLCAiYnRjX3VzZCI6ICIxMjguMTMiLCAi
135
+ b3JkZXJfaWQiOiA3MzQwMDk2LCAiZmVlIjogIjAuMDQiLCAidHlwZSI6IDIs
136
+ ICJpZCI6IDEzNzUzNDUsICJkYXRldGltZSI6ICIyMDEzLTA5LTEzIDIwOjIw
137
+ OjA4In0sIHsidXNkIjogIi0xNzUuNTQiLCAiYnRjIjogIjEuMzcwMDAwMDAi
138
+ LCAiYnRjX3VzZCI6ICIxMjguMTMiLCAib3JkZXJfaWQiOiA3MzQwMDk2LCAi
139
+ ZmVlIjogIjAuNzQiLCAidHlwZSI6IDIsICJpZCI6IDEzNzUzNDQsICJkYXRl
140
+ dGltZSI6ICIyMDEzLTA5LTEzIDIwOjE5OjUyIn0sIHsidXNkIjogIi0xMDIu
141
+ MDAiLCAiYnRjIjogIjAuNzk2MDY2NDkiLCAiYnRjX3VzZCI6ICIxMjguMTMi
142
+ LCAib3JkZXJfaWQiOiA3MzQwMDk2LCAiZmVlIjogIjAuNDMiLCAidHlwZSI6
143
+ IDIsICJpZCI6IDEzNzUzMjEsICJkYXRldGltZSI6ICIyMDEzLTA5LTEzIDIw
144
+ OjE2OjAzIn0sIHsidXNkIjogIi0zMi45MiIsICJidGMiOiAiMC4yNTcwODYy
145
+ MiIsICJidGNfdXNkIjogIjEyOC4wNiIsICJvcmRlcl9pZCI6IDczNDAwOTYs
146
+ ICJmZWUiOiAiMC4xNCIsICJ0eXBlIjogMiwgImlkIjogMTM3NTI4NCwgImRh
147
+ dGV0aW1lIjogIjIwMTMtMDktMTMgMjA6MDU6MDIifSwgeyJ1c2QiOiAiMC4w
148
+ MCIsICJidGMiOiAiLTMuMjA3MTQ5NjMiLCAiYnRjX3VzZCI6ICIwLjAwIiwg
149
+ Im9yZGVyX2lkIjogbnVsbCwgImZlZSI6ICIwLjAwIiwgInR5cGUiOiAxLCAi
150
+ aWQiOiAxMzc1MjcxLCAiZGF0ZXRpbWUiOiAiMjAxMy0wOS0xMyAyMDowMTow
151
+ MyJ9LCB7InVzZCI6ICItMjA3LjcwIiwgImJ0YyI6ICIxLjYyMTY0MjczIiwg
152
+ ImJ0Y191c2QiOiAiMTI4LjA4IiwgIm9yZGVyX2lkIjogNzM0MDE4OSwgImZl
153
+ ZSI6ICIwLjg4IiwgInR5cGUiOiAyLCAiaWQiOiAxMzc1MjY0LCAiZGF0ZXRp
154
+ bWUiOiAiMjAxMy0wOS0xMyAxOTo1ODo1OCJ9LCB7InVzZCI6ICItMTAxLjAw
155
+ IiwgImJ0YyI6ICIwLjc4ODU2OTY0IiwgImJ0Y191c2QiOiAiMTI4LjA4Iiwg
156
+ Im9yZGVyX2lkIjogNzM0MDE4OSwgImZlZSI6ICIwLjQzIiwgInR5cGUiOiAy
157
+ LCAiaWQiOiAxMzc1MjYzLCAiZGF0ZXRpbWUiOiAiMjAxMy0wOS0xMyAxOTo1
158
+ ODo1NyJ9LCB7InVzZCI6ICItMTAyLjAwIiwgImJ0YyI6ICIwLjc5NjkzNzI2
159
+ IiwgImJ0Y191c2QiOiAiMTI3Ljk5IiwgIm9yZGVyX2lkIjogNzM0MDA5Niwg
160
+ ImZlZSI6ICIwLjQzIiwgInR5cGUiOiAyLCAiaWQiOiAxMzc1MjU1LCAiZGF0
161
+ ZXRpbWUiOiAiMjAxMy0wOS0xMyAxOTo1NDowNCJ9LCB7InVzZCI6ICIwLjAw
162
+ IiwgImJ0YyI6ICItMi4xMTA2MDUyMyIsICJidGNfdXNkIjogIjAuMDAiLCAi
163
+ b3JkZXJfaWQiOiBudWxsLCAiZmVlIjogIjAuMDAiLCAidHlwZSI6IDEsICJp
164
+ ZCI6IDEzNzMyNTAsICJkYXRldGltZSI6ICIyMDEzLTA5LTEzIDEyOjI4OjEz
165
+ In0sIHsidXNkIjogIi0yNjguODciLCAiYnRjIjogIjIuMTEwNjA1MjMiLCAi
166
+ YnRjX3VzZCI6ICIxMjcuMzkiLCAib3JkZXJfaWQiOiA3MzMxNDkyLCAiZmVl
167
+ IjogIjEuMTMiLCAidHlwZSI6IDIsICJpZCI6IDEzNzMxNTMsICJkYXRldGlt
168
+ ZSI6ICIyMDEzLTA5LTEzIDEyOjIwOjM3In0sIHsidXNkIjogIjAuMDAiLCAi
169
+ YnRjIjogIi03LjE0Mjc2NjA0IiwgImJ0Y191c2QiOiAiMC4wMCIsICJvcmRl
170
+ cl9pZCI6IG51bGwsICJmZWUiOiAiMC4wMCIsICJ0eXBlIjogMSwgImlkIjog
171
+ MTM2NTUxNCwgImRhdGV0aW1lIjogIjIwMTMtMDktMTIgMTI6NTc6MDQifSwg
172
+ eyJ1c2QiOiAiLTg5Ni4wNiIsICJidGMiOiAiNy4xNDI3NjYwNCIsICJidGNf
173
+ dXNkIjogIjEyNS40NSIsICJvcmRlcl9pZCI6IDcyOTYzMTcsICJmZWUiOiAi
174
+ My45NSIsICJ0eXBlIjogMiwgImlkIjogMTM2NTQ4MCwgImRhdGV0aW1lIjog
175
+ IjIwMTMtMDktMTIgMTI6NDM6MjkifSwgeyJ1c2QiOiAiMC4wMCIsICJidGMi
176
+ OiAiLTIxLjU2OTYzMjc3IiwgImJ0Y191c2QiOiAiMC4wMCIsICJvcmRlcl9p
177
+ ZCI6IG51bGwsICJmZWUiOiAiMC4wMCIsICJ0eXBlIjogMSwgImlkIjogMTM1
178
+ ODg2MiwgImRhdGV0aW1lIjogIjIwMTMtMDktMTEgMTk6NDk6MDUifSwgeyJ1
179
+ c2QiOiAiMC4wMCIsICJidGMiOiAiLTEuMDAwMDAwMDAiLCAiYnRjX3VzZCI6
180
+ ICIwLjAwIiwgIm9yZGVyX2lkIjogbnVsbCwgImZlZSI6ICIwLjAwIiwgInR5
181
+ cGUiOiAxLCAiaWQiOiAxMzU3Mjc1LCAiZGF0ZXRpbWUiOiAiMjAxMy0wOS0x
182
+ MSAxNToyNzozNCJ9LCB7InVzZCI6ICItNjEuOTAiLCAiYnRjIjogIjAuNTAw
183
+ MDAwMDAiLCAiYnRjX3VzZCI6ICIxMjMuNzkiLCAib3JkZXJfaWQiOiA3MjY0
184
+ MzYyLCAiZmVlIjogIjAuMjgiLCAidHlwZSI6IDIsICJpZCI6IDEzNTcwNDcs
185
+ ICJkYXRldGltZSI6ICIyMDEzLTA5LTExIDE0OjU2OjA1In0sIHsidXNkIjog
186
+ Ii0yMTAyLjQwIiwgImJ0YyI6ICIxNi45NjQzODAwMCIsICJidGNfdXNkIjog
187
+ IjEyMy45MyIsICJvcmRlcl9pZCI6IDcyNjU5NjcsICJmZWUiOiAiOS42OCIs
188
+ ICJ0eXBlIjogMiwgImlkIjogMTM1NzAzNSwgImRhdGV0aW1lIjogIjIwMTMt
189
+ MDktMTEgMTQ6NTU6MDYifSwgeyJ1c2QiOiAiLTI0Ny44NiIsICJidGMiOiAi
190
+ Mi4wMDAwMDAwMCIsICJidGNfdXNkIjogIjEyMy45MyIsICJvcmRlcl9pZCI6
191
+ IDcyNjU5NjcsICJmZWUiOiAiMS4xNSIsICJ0eXBlIjogMiwgImlkIjogMTM1
192
+ NzAzNCwgImRhdGV0aW1lIjogIjIwMTMtMDktMTEgMTQ6NTQ6MzcifSwgeyJ1
193
+ c2QiOiAiLTIzNC44MCIsICJidGMiOiAiMS44OTQ2NTMzMiIsICJidGNfdXNk
194
+ IjogIjEyMy45MyIsICJvcmRlcl9pZCI6IDcyNjU5NjcsICJmZWUiOiAiMS4w
195
+ OSIsICJ0eXBlIjogMiwgImlkIjogMTM1NzAyNywgImRhdGV0aW1lIjogIjIw
196
+ MTMtMDktMTEgMTQ6NTQ6MDkifSwgeyJ1c2QiOiAiLTI1LjkzIiwgImJ0YyI6
197
+ ICIwLjIwOTIzMTAyIiwgImJ0Y191c2QiOiAiMTIzLjkzIiwgIm9yZGVyX2lk
198
+ IjogNzI2NTk2NywgImZlZSI6ICIwLjEyIiwgInR5cGUiOiAyLCAiaWQiOiAx
199
+ MzU3MDIyLCAiZGF0ZXRpbWUiOiAiMjAxMy0wOS0xMSAxNDo1Mjo0NiJ9LCB7
200
+ InVzZCI6ICItMTI0LjI3IiwgImJ0YyI6ICIxLjAwMTM2ODQzIiwgImJ0Y191
201
+ c2QiOiAiMTI0LjEwIiwgIm9yZGVyX2lkIjogNzI2NTIyNCwgImZlZSI6ICIw
202
+ LjYwIiwgInR5cGUiOiAyLCAiaWQiOiAxMzU2ODM0LCAiZGF0ZXRpbWUiOiAi
203
+ MjAxMy0wOS0xMSAxNDoyNzoxMyJ9LCB7InVzZCI6ICI0NDYwLjAwIiwgImJ0
204
+ YyI6ICIwLjAwMDAwMDAwIiwgImJ0Y191c2QiOiAiMC4wMCIsICJvcmRlcl9p
205
+ ZCI6IG51bGwsICJmZWUiOiAiMTUuMDAiLCAidHlwZSI6IDAsICJpZCI6IDEz
206
+ NTUyNDcsICJkYXRldGltZSI6ICIyMDEzLTA5LTExIDEyOjA1OjI2In0sIHsi
207
+ dXNkIjogIjI0NjAuMDAiLCAiYnRjIjogIjAuMDAwMDAwMDAiLCAiYnRjX3Vz
208
+ ZCI6ICIwLjAwIiwgIm9yZGVyX2lkIjogbnVsbCwgImZlZSI6ICIxNS4wMCIs
209
+ ICJ0eXBlIjogMCwgImlkIjogMTMzOTA4NCwgImRhdGV0aW1lIjogIjIwMTMt
210
+ MDktMDkgMTA6NDQ6MzQifSwgeyJ1c2QiOiAiMC4wMCIsICJidGMiOiAiLTku
211
+ NTUyNTM0MTEiLCAiYnRjX3VzZCI6ICIwLjAwIiwgIm9yZGVyX2lkIjogbnVs
212
+ bCwgImZlZSI6ICIwLjAwIiwgInR5cGUiOiAxLCAiaWQiOiAxMjIwOTIwLCAi
213
+ ZGF0ZXRpbWUiOiAiMjAxMy0wOC0xOSAyMjowNTowMyJ9LCB7InVzZCI6ICIt
214
+ OTgwLjA5IiwgImJ0YyI6ICI5LjU1MjUzNDExIiwgImJ0Y191c2QiOiAiMTAy
215
+ LjYwIiwgIm9yZGVyX2lkIjogbnVsbCwgImZlZSI6ICI0LjkxIiwgInR5cGUi
216
+ OiAyLCAiaWQiOiAxMjIwODk2LCAiZGF0ZXRpbWUiOiAiMjAxMy0wOC0xOSAy
217
+ MjowMDowOCJ9LCB7InVzZCI6ICIxMDAwLjAwIiwgImJ0YyI6ICIwLjAwMDAw
218
+ MDAwIiwgImJ0Y191c2QiOiAiMC4wMCIsICJvcmRlcl9pZCI6IG51bGwsICJm
219
+ ZWUiOiAiMTUuMDAiLCAidHlwZSI6IDAsICJpZCI6IDEyMTgzODUsICJkYXRl
220
+ dGltZSI6ICIyMDEzLTA4LTE5IDEzOjA0OjM5In1d
221
+ http_version:
222
+ recorded_at: Thu, 26 Sep 2013 23:29:46 GMT
223
+ recorded_with: VCR 2.6.0
@@ -0,0 +1,147 @@
1
+ require 'spec_helper'
2
+
3
+ describe BitexApiWrapper do
4
+ let(:taker_settings) do
5
+ BitexBot::SettingsClass.new(
6
+ bitex: {
7
+ api_key: 'taker_api_key',
8
+ ssl_version: nil,
9
+ debug: false,
10
+ sandbox: false,
11
+ order_book: 'btc_usd'
12
+ }
13
+ )
14
+ end
15
+
16
+ before(:each) do
17
+ BitexBot::Settings.stub(taker: taker_settings)
18
+ BitexBot::Robot.setup
19
+ end
20
+
21
+ let(:api_wrapper) { BitexBot::Robot.taker }
22
+
23
+ it 'Sends User-Agent header' do
24
+ url = "https://bitex.la/api-v1/rest/private/profile?api_key=#{BitexBot::Robot.taker.api_key}"
25
+ stub_stuff = stub_request(:get, url).with(headers: { 'User-Agent': BitexBot.user_agent })
26
+
27
+ # we don't care about the response
28
+ api_wrapper.balance rescue nil
29
+
30
+ expect(stub_stuff).to have_been_requested
31
+ end
32
+
33
+ it '#base_quote' do
34
+ expect(api_wrapper.base_quote).to eq('btc_usd')
35
+ end
36
+
37
+ it '#base' do
38
+ expect(api_wrapper.base).to eq('btc')
39
+ end
40
+
41
+ it '#quote' do
42
+ expect(api_wrapper.quote).to eq('usd')
43
+ end
44
+
45
+ it '#balance' do
46
+ stub_bitex_balance
47
+
48
+ balance = api_wrapper.balance
49
+ balance.should be_a(ApiWrapper::BalanceSummary)
50
+ balance.crypto.should be_a(ApiWrapper::Balance)
51
+ balance.fiat.should be_a(ApiWrapper::Balance)
52
+
53
+ crypto = balance.crypto
54
+ crypto.total.should be_a(BigDecimal)
55
+ crypto.reserved.should be_a(BigDecimal)
56
+ crypto.available.should be_a(BigDecimal)
57
+
58
+ fiat = balance.fiat
59
+ fiat.total.should be_a(BigDecimal)
60
+ fiat.reserved.should be_a(BigDecimal)
61
+ fiat.available.should be_a(BigDecimal)
62
+
63
+ balance.fee.should be_a(BigDecimal)
64
+ end
65
+
66
+ it '#cancel' do
67
+ stub_bitex_orders
68
+
69
+ expect(api_wrapper.orders.sample).to respond_to(:cancel!)
70
+ end
71
+
72
+ it '#order_book' do
73
+ stub_bitex_order_book
74
+
75
+ order_book = api_wrapper.order_book
76
+ order_book.should be_a(ApiWrapper::OrderBook)
77
+ order_book.bids.all? { |bid| bid.should be_a(ApiWrapper::OrderSummary) }
78
+ order_book.asks.all? { |ask| ask.should be_a(ApiWrapper::OrderSummary) }
79
+ order_book.timestamp.should be_a(Integer)
80
+
81
+ bid = order_book.bids.sample
82
+ bid.price.should be_a(BigDecimal)
83
+ bid.quantity.should be_a(BigDecimal)
84
+
85
+ ask = order_book.asks.sample
86
+ ask.price.should be_a(BigDecimal)
87
+ ask.quantity.should be_a(BigDecimal)
88
+ end
89
+
90
+ it '#orders' do
91
+ stub_bitex_orders
92
+
93
+ api_wrapper.orders.all? { |o| o.should be_a(BitexApiWrapper::Order) }
94
+
95
+ order = api_wrapper.orders.sample
96
+ order.id.should be_a(String)
97
+ order.type.should be_a(Symbol)
98
+ order.price.should be_a(BigDecimal)
99
+ order.amount.should be_a(BigDecimal)
100
+ order.timestamp.should be_a(Integer)
101
+ end
102
+
103
+ context '#place_order' do
104
+ it 'raises OrderNotFound error on Bitex errors' do
105
+ Bitex::Bid.stub(create!: nil)
106
+ Bitex::Ask.stub(create!: nil)
107
+ api_wrapper.stub(find_lost: nil)
108
+
109
+ expect { api_wrapper.place_order(:buy, 10, 100) }.to raise_exception(OrderNotFound)
110
+ expect { api_wrapper.place_order(:sell, 10, 100) }.to raise_exception(OrderNotFound)
111
+ end
112
+ end
113
+
114
+ it '#transactions' do
115
+ stub_bitex_transactions
116
+
117
+ api_wrapper.transactions.all? { |o| o.should be_a(ApiWrapper::Transaction) }
118
+
119
+ transaction = api_wrapper.transactions.sample
120
+ transaction.id.should be_a(Integer)
121
+ transaction.price.should be_a(BigDecimal)
122
+ transaction.amount.should be_a(BigDecimal)
123
+ transaction.timestamp.should be_a(Integer)
124
+ end
125
+
126
+ it '#user_transaction' do
127
+ stub_bitex_trades
128
+
129
+ api_wrapper.user_transactions.should be_a(Array)
130
+ api_wrapper.user_transactions.all? { |o| o.should be_a(ApiWrapper::UserTransaction) }
131
+
132
+ user_transaction = api_wrapper.user_transactions.sample
133
+ user_transaction.order_id.should be_a(Integer)
134
+ user_transaction.fiat.should be_a(BigDecimal)
135
+ user_transaction.crypto.should be_a(BigDecimal)
136
+ user_transaction.crypto_fiat.should be_a(BigDecimal)
137
+ user_transaction.fee.should be_a(BigDecimal)
138
+ user_transaction.type.should be_a(Integer)
139
+ user_transaction.timestamp.should be_a(Integer)
140
+ end
141
+
142
+ it '#find_lost' do
143
+ stub_bitex_orders
144
+
145
+ api_wrapper.orders.all? { |o| api_wrapper.find_lost(o.type, o.price, o.amount).present? }
146
+ end
147
+ end