bitex_bot 0.6.1 → 0.9.0

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 (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