cryptum 0.0.380 → 0.0.382

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/.rubocop_todo.yml +3 -8
  4. data/Gemfile +1 -2
  5. data/bin/cryptum +3 -3
  6. data/bin/cryptum-forecast +3 -3
  7. data/lib/cryptum/api/exchange_rates.rb +42 -0
  8. data/lib/cryptum/api/fees.rb +36 -0
  9. data/lib/cryptum/api/order_history.rb +56 -0
  10. data/lib/cryptum/api/orders.rb +261 -0
  11. data/lib/cryptum/api/portfolio.rb +79 -0
  12. data/lib/cryptum/api/products.rb +65 -0
  13. data/lib/cryptum/api/rest.rb +177 -0
  14. data/lib/cryptum/api/signature.rb +79 -0
  15. data/lib/cryptum/api.rb +9 -692
  16. data/lib/cryptum/bot_conf.rb +14 -3
  17. data/lib/cryptum/event/buy.rb +1 -1
  18. data/lib/cryptum/event/cancel.rb +1 -1
  19. data/lib/cryptum/event/exit.rb +1 -1
  20. data/lib/cryptum/event/gtfo.rb +1 -1
  21. data/lib/cryptum/event/history.rb +4 -1
  22. data/lib/cryptum/event/parse.rb +1 -1
  23. data/lib/cryptum/event/sell.rb +1 -1
  24. data/lib/cryptum/option/choice.rb +1 -1
  25. data/lib/cryptum/order_book/generate.rb +4 -5
  26. data/lib/cryptum/portfolio/balance.rb +3 -5
  27. data/lib/cryptum/ui/command.rb +1 -1
  28. data/lib/cryptum/ui/exit.rb +43 -0
  29. data/lib/cryptum/ui/key_press_event.rb +1 -1
  30. data/lib/cryptum/ui/market_trend.rb +4 -1
  31. data/lib/cryptum/ui/matrix.rb +187 -0
  32. data/lib/cryptum/ui/order_execute_details.rb +4 -1
  33. data/lib/cryptum/ui/order_execution.rb +8 -3
  34. data/lib/cryptum/ui/order_plan.rb +6 -2
  35. data/lib/cryptum/ui/order_plan_details.rb +4 -1
  36. data/lib/cryptum/ui/order_timer.rb +5 -1
  37. data/lib/cryptum/ui/portfolio.rb +5 -1
  38. data/lib/cryptum/ui/signal_engine.rb +1 -1
  39. data/lib/cryptum/ui/terminal_window.rb +1 -1
  40. data/lib/cryptum/ui/ticker.rb +4 -1
  41. data/lib/cryptum/ui.rb +19 -17
  42. data/lib/cryptum/version.rb +1 -1
  43. data/lib/cryptum/web_sock/coinbase.rb +2 -2
  44. data/lib/cryptum/web_sock/event_machine.rb +1 -1
  45. data/lib/cryptum.rb +0 -31
  46. data/spec/lib/cryptum/api/exchange_rates_spec.rb +10 -0
  47. data/spec/lib/cryptum/api/fees_spec.rb +10 -0
  48. data/spec/lib/cryptum/api/order_history_spec.rb +10 -0
  49. data/spec/lib/cryptum/api/orders_spec.rb +10 -0
  50. data/spec/lib/cryptum/api/portfolio_spec.rb +10 -0
  51. data/spec/lib/cryptum/api/products_spec.rb +10 -0
  52. data/spec/lib/cryptum/api/rest_spec.rb +10 -0
  53. data/spec/lib/cryptum/api/signature_spec.rb +10 -0
  54. data/spec/lib/cryptum/{matrix_spec.rb → ui/exit_spec.rb} +2 -2
  55. data/spec/lib/cryptum/ui/matrix_spec.rb +10 -0
  56. metadata +24 -20
  57. data/lib/cryptum/matrix.rb +0 -181
@@ -45,7 +45,11 @@ module Cryptum
45
45
  retry
46
46
  rescue Interrupt
47
47
  # Exit Gracefully if CTRL+C is Pressed During Session
48
- Cryptum.exit_gracefully(which_self: self)
48
+ Cryptum::UI::Exit.gracefully(
49
+ which_self: self,
50
+ event_history: event_history,
51
+ option_choice: option_choice
52
+ )
49
53
  rescue StandardError => e
50
54
  # Produce a Stacktrace for anything else
51
55
  Curses.close_screen
@@ -148,7 +152,11 @@ module Cryptum
148
152
  retry
149
153
  rescue Interrupt
150
154
  # Exit Gracefully if CTRL+C is Pressed During Session
151
- Cryptum.exit_gracefully(which_self: self)
155
+ Cryptum::UI::Exit.gracefully(
156
+ which_self: self,
157
+ event_history: event_history,
158
+ option_choice: option_choice
159
+ )
152
160
  rescue StandardError => e
153
161
  # Produce a Stacktrace for anything else
154
162
  Curses.close_screen
@@ -178,7 +186,10 @@ module Cryptum
178
186
  retry
179
187
  rescue Interrupt
180
188
  # Exit Gracefully if CTRL+C is Pressed During Session
181
- Cryptum.exit_gracefully(which_self: self)
189
+ Cryptum::UI::Exit.gracefully(
190
+ which_self: self,
191
+ option_choice: option_choice
192
+ )
182
193
  rescue StandardError => e
183
194
  # Produce a Stacktrace for anything else
184
195
  Curses.close_screen
@@ -117,7 +117,7 @@ module Cryptum
117
117
  event_history.order_submitted = true
118
118
  event_history.event_notes = "{ \"event_type\": \"#{event_history.event_type}\", \"cancel\": \"#{event_history.order_canceled}\", \"submitted\": \"#{event_history.order_submitted}\" }" if option_choice.proxy
119
119
 
120
- event_history = Cryptum::API.submit_limit_order(
120
+ event_history = Cryptum::API::Orders.submit_limit_order(
121
121
  option_choice: option_choice,
122
122
  env: env,
123
123
  price: price,
@@ -16,7 +16,7 @@ module Cryptum
16
16
  # order_action = opts[:order_action]
17
17
 
18
18
  terminal_win.key_press_event.key_c = false
19
- Cryptum::API.cancel_all_open_orders(
19
+ Cryptum::API::Orders.cancel_all_open_orders(
20
20
  env: env,
21
21
  option_choice: option_choice
22
22
  )
@@ -14,7 +14,7 @@ module Cryptum
14
14
  env = opts[:env]
15
15
 
16
16
  terminal_win.key_press_event.key_x = false
17
- Cryptum.exit_gracefully(
17
+ Cryptum::UI::Exit.gracefully(
18
18
  which_self: self,
19
19
  event_history: event_history,
20
20
  option_choice: option_choice,
@@ -15,7 +15,7 @@ module Cryptum
15
15
  bot_conf = opts[:bot_conf]
16
16
 
17
17
  terminal_win.key_press_event.key_g = false
18
- Cryptum::API.gtfo(
18
+ Cryptum::API::Orders.gtfo(
19
19
  option_choice: option_choice,
20
20
  env: env,
21
21
  event_history: event_history,
@@ -195,7 +195,10 @@ module Cryptum
195
195
  end
196
196
  rescue Interrupt
197
197
  # Exit Gracefully if CTRL+C is Pressed During Session
198
- Cryptum.exit_gracefully(which_self: self)
198
+ Cryptum::UI::Exit.gracefully(
199
+ which_self: self,
200
+ option_choice: option_choice
201
+ )
199
202
  rescue StandardError => e
200
203
  # Produce a Stacktrace for anything else
201
204
  raise e
@@ -152,7 +152,7 @@ module Cryptum
152
152
  event_history
153
153
  rescue Interrupt
154
154
  # Exit Gracefully if CTRL+C is Pressed During Session
155
- Cryptum.exit_gracefully(
155
+ Cryptum::UI::Exit.gracefully(
156
156
  which_self: self,
157
157
  event_history: event_history,
158
158
  option_choice: option_choice,
@@ -96,7 +96,7 @@ module Cryptum
96
96
  event_history.order_submitted = true
97
97
  event_history.event_notes = "{ \"event_type\": \"#{event_history.event_type}\", \"cancel\": \"#{event_history.order_canceled}\", \"submitted\": \"#{event_history.order_submitted}\" }" if option_choice.proxy
98
98
 
99
- event_history = Cryptum::API.submit_limit_order(
99
+ event_history = Cryptum::API::Orders.submit_limit_order(
100
100
  option_choice: option_choice,
101
101
  env: env,
102
102
  price: price,
@@ -18,7 +18,7 @@ module Cryptum
18
18
 
19
19
  rescue Interrupt
20
20
  # Exit Gracefully if CTRL+C is Pressed During Session
21
- Cryptum.exit_gracefully(which_self: self)
21
+ Cryptum::UI::Exit.gracefully(which_self: self)
22
22
  rescue StandardError => e
23
23
  # Produce a Stacktrace for anything else
24
24
  Curses.close_screen
@@ -3,19 +3,18 @@
3
3
  require 'io/console'
4
4
  require 'json'
5
5
  require 'logger'
6
- require 'tty-spinner'
7
6
 
8
7
  module Cryptum
9
8
  # This module is used to define the Order Book Data Structure
10
9
  module OrderBook
11
10
  module Generate
12
11
  # Supported Method Parameters::
13
- # Cryptum::OrderBook.generate(
12
+ # Cryptum::OrderBook::Generate.new(
14
13
  # symbol: 'required - target symbol (e.g. btc-usd)',
15
14
  # this_product: 'required - this_product',
16
15
  # )
17
16
 
18
- public_class_method def self.new_order_book(opts = {})
17
+ public_class_method def self.new(opts = {})
19
18
  start_time = opts[:start_time]
20
19
  option_choice = opts[:option_choice]
21
20
  env = opts[:env]
@@ -25,7 +24,7 @@ module Cryptum
25
24
  order_book_file = "#{session_root}/order_books/#{symbol}.ORDER_BOOK.json"
26
25
 
27
26
  # Only need to retrieve a product list once / session.
28
- products = Cryptum::API.get_products(
27
+ products = Cryptum::API::Products.get(
29
28
  option_choice: option_choice,
30
29
  env: env
31
30
  )
@@ -103,7 +102,7 @@ module Cryptum
103
102
 
104
103
  public_class_method def self.help
105
104
  puts "USAGE:
106
- order_book = #{self}.new_order_book(
105
+ order_book = #{self}.new(
107
106
  symbol: 'required - target symbol (e.g. btc-usd)',
108
107
  this_product: 'required - this_product'
109
108
  )
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'logger'
4
-
5
3
  module Cryptum
6
4
  # This plugin is used to instantiate a Cryptum logger with a custom message format
7
5
  module Portfolio
@@ -64,7 +62,7 @@ module Cryptum
64
62
  enotes = "{ \"event_type\": \"#{etype}\", \"cancel\": \"#{ocancel}\", \"submitted\": \"#{osubmit}\" }" if option_choice.proxy
65
63
  event_history.event_notes = enotes
66
64
 
67
- portfolio = Cryptum::API.get_portfolio(
65
+ portfolio = Cryptum::API::Portfolio.get(
68
66
  option_choice: option_choice,
69
67
  env: env,
70
68
  crypto: crypto,
@@ -74,13 +72,13 @@ module Cryptum
74
72
  )
75
73
  event_history.order_book[:portfolio] = portfolio unless portfolio.empty?
76
74
 
77
- order_history = Cryptum::API.get_order_history(
75
+ order_history = Cryptum::API::OrderHistory.get(
78
76
  option_choice: option_choice,
79
77
  env: env
80
78
  )
81
79
  event_history.order_book[:order_history] = order_history unless order_history.empty?
82
80
 
83
- fees = Cryptum::API.get_fees(
81
+ fees = Cryptum::API::Fees.get(
84
82
  option_choice: option_choice,
85
83
  env: env
86
84
  )
@@ -295,7 +295,7 @@ module Cryptum
295
295
  key_press_event.key_x
296
296
  rescue Interrupt
297
297
  # Exit Gracefully if CTRL+C is Pressed During Session
298
- Cryptum.exit_gracefully(which_self: self)
298
+ Cryptum::UI::Exit.gracefully(which_self: self)
299
299
  rescue StandardError => e
300
300
  raise e
301
301
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cryptum
4
+ module UI
5
+ # This Class is Used to Detect Key Press Events
6
+ module Exit
7
+ public_class_method def self.gracefully(opts = {})
8
+ which_self = opts[:which_self]
9
+ event_history = opts[:event_history]
10
+ # option_choice = opts[:option_choice]
11
+ # env = opts[:env]
12
+
13
+ # Clear out candle data to ensure
14
+ # Cryptum Statistics Only Apply to
15
+ # Live Sessions
16
+ if event_history
17
+ File.write(
18
+ order_book_file,
19
+ JSON.pretty_generate(event_history.order_book)
20
+ )
21
+ end
22
+
23
+ Curses.close_screen
24
+ puts "Interrupt detected in #{which_self}...goodbye."
25
+
26
+ exit 0
27
+ rescue NameError
28
+ puts "\nInterrupt detected in #{which_self}...goodbye."
29
+
30
+ exit 0
31
+ rescue StandardError => e
32
+ # Produce a Stacktrace for anything else
33
+ raise e
34
+ end
35
+
36
+ # Display a List of Every UI Module
37
+
38
+ public_class_method def self.help
39
+ constants.sort
40
+ end
41
+ end
42
+ end
43
+ end
@@ -23,7 +23,7 @@ module Cryptum
23
23
 
24
24
  rescue Interrupt
25
25
  # Exit Gracefully if CTRL+C is Pressed During Session
26
- Cryptum.exit_gracefully(which_self: self)
26
+ Cryptum::UI::Exit.gracefully(which_self: self)
27
27
  rescue StandardError => e
28
28
  # Produce a Stacktrace for anything else
29
29
  Curses.close_screen
@@ -57,7 +57,10 @@ module Cryptum
57
57
  event_history
58
58
  rescue Interrupt
59
59
  # Exit Gracefully if CTRL+C is Pressed During Session
60
- Cryptum.exit_gracefully(which_self: self)
60
+ Cryptum::UI::Exit.gracefully(
61
+ which_self: self,
62
+ event_history: event_history
63
+ )
61
64
  rescue StandardError => e
62
65
  raise e
63
66
  end
@@ -0,0 +1,187 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ module Cryptum
6
+ # This plugin is used to Refresh the Cryptum console UI
7
+ module UI
8
+ # This plugin is used as a visual representation of being in a, "Red Pill" state
9
+ module Matrix
10
+ # Supported Method Parameters::
11
+ # Cryptum::Matrix.generate(
12
+ # cols: cols
13
+ # )
14
+
15
+ public_class_method def self.generate(opts = {})
16
+ # Need to divide by two for wide characters
17
+ cols = opts[:cols].to_i
18
+
19
+ matrix_arr = [
20
+ 0x30a0.chr('UTF-8'),
21
+ 0x30a1.chr('UTF-8'),
22
+ 0x30a2.chr('UTF-8'),
23
+ 0x30a3.chr('UTF-8'),
24
+ 0x30a4.chr('UTF-8'),
25
+ 0x30a5.chr('UTF-8'),
26
+ 0x30a6.chr('UTF-8'),
27
+ 0x30a7.chr('UTF-8'),
28
+ 0x30a8.chr('UTF-8'),
29
+ 0x30a9.chr('UTF-8'),
30
+ 0x30aa.chr('UTF-8'),
31
+ 0x30ab.chr('UTF-8'),
32
+ 0x30ac.chr('UTF-8'),
33
+ 0x30ad.chr('UTF-8'),
34
+ 0x30ae.chr('UTF-8'),
35
+ 0x30af.chr('UTF-8'),
36
+ 0x30b0.chr('UTF-8'),
37
+ 0x30b1.chr('UTF-8'),
38
+ 0x30b2.chr('UTF-8'),
39
+ 0x30b3.chr('UTF-8'),
40
+ 0x30b4.chr('UTF-8'),
41
+ 0x30b5.chr('UTF-8'),
42
+ 0x30b6.chr('UTF-8'),
43
+ 0x30b7.chr('UTF-8'),
44
+ 0x30b8.chr('UTF-8'),
45
+ 0x30b9.chr('UTF-8'),
46
+ 0x30ba.chr('UTF-8'),
47
+ 0x30bb.chr('UTF-8'),
48
+ 0x30bc.chr('UTF-8'),
49
+ 0x30bd.chr('UTF-8'),
50
+ 0x30be.chr('UTF-8'),
51
+ 0x30bf.chr('UTF-8'),
52
+ 0x30c0.chr('UTF-8'),
53
+ 0x30c1.chr('UTF-8'),
54
+ 0x30c2.chr('UTF-8'),
55
+ 0x30c3.chr('UTF-8'),
56
+ 0x30c4.chr('UTF-8'),
57
+ 0x30c5.chr('UTF-8'),
58
+ 0x30c6.chr('UTF-8'),
59
+ 0x30c7.chr('UTF-8'),
60
+ 0x30c8.chr('UTF-8'),
61
+ 0x30c9.chr('UTF-8'),
62
+ 0x30ca.chr('UTF-8'),
63
+ 0x30cb.chr('UTF-8'),
64
+ 0x30cc.chr('UTF-8'),
65
+ 0x30cd.chr('UTF-8'),
66
+ 0x30ce.chr('UTF-8'),
67
+ 0x30cf.chr('UTF-8'),
68
+ 0x30d0.chr('UTF-8'),
69
+ 0x30d1.chr('UTF-8'),
70
+ 0x30d2.chr('UTF-8'),
71
+ 0x30d3.chr('UTF-8'),
72
+ 0x30d4.chr('UTF-8'),
73
+ 0x30d5.chr('UTF-8'),
74
+ 0x30d6.chr('UTF-8'),
75
+ 0x30d7.chr('UTF-8'),
76
+ 0x30d8.chr('UTF-8'),
77
+ 0x30d9.chr('UTF-8'),
78
+ 0x30da.chr('UTF-8'),
79
+ 0x30db.chr('UTF-8'),
80
+ 0x30dc.chr('UTF-8'),
81
+ 0x30dd.chr('UTF-8'),
82
+ 0x30de.chr('UTF-8'),
83
+ 0x30df.chr('UTF-8'),
84
+ 0x30e0.chr('UTF-8'),
85
+ 0x30e1.chr('UTF-8'),
86
+ 0x30e2.chr('UTF-8'),
87
+ 0x30e3.chr('UTF-8'),
88
+ 0x30e4.chr('UTF-8'),
89
+ 0x30e5.chr('UTF-8'),
90
+ 0x30e6.chr('UTF-8'),
91
+ 0x30e7.chr('UTF-8'),
92
+ 0x30e8.chr('UTF-8'),
93
+ 0x30e9.chr('UTF-8'),
94
+ 0x30ea.chr('UTF-8'),
95
+ 0x30eb.chr('UTF-8'),
96
+ 0x30ec.chr('UTF-8'),
97
+ 0x30ed.chr('UTF-8'),
98
+ 0x30ee.chr('UTF-8'),
99
+ 0x30ef.chr('UTF-8'),
100
+ 0x30f0.chr('UTF-8'),
101
+ 0x30f1.chr('UTF-8'),
102
+ 0x30f2.chr('UTF-8'),
103
+ 0x30f3.chr('UTF-8'),
104
+ 0x30f4.chr('UTF-8'),
105
+ 0x30f5.chr('UTF-8'),
106
+ 0x30f6.chr('UTF-8'),
107
+ 0x30f7.chr('UTF-8'),
108
+ 0x30f8.chr('UTF-8'),
109
+ 0x30f9.chr('UTF-8'),
110
+ 0x30fa.chr('UTF-8'),
111
+ 0x30fb.chr('UTF-8'),
112
+ 0x30fc.chr('UTF-8'),
113
+ 0x30fd.chr('UTF-8'),
114
+ 0x30fe.chr('UTF-8'),
115
+ '0 ',
116
+ '1 ',
117
+ '2 ',
118
+ '3 ',
119
+ '4 ',
120
+ '5 ',
121
+ '6 ',
122
+ '7 ',
123
+ '8 ',
124
+ '9 ',
125
+ 'A ',
126
+ 'c ',
127
+ 'R ',
128
+ 'y ',
129
+ 'P ',
130
+ 't ',
131
+ 'U ',
132
+ 'm ',
133
+ 'x ',
134
+ 'Z ',
135
+ ': ',
136
+ '{ ',
137
+ '[ ',
138
+ '} ',
139
+ '] ',
140
+ '| ',
141
+ '` ',
142
+ '~ ',
143
+ '! ',
144
+ '@ ',
145
+ '# ',
146
+ '$ ',
147
+ '% ',
148
+ '^ ',
149
+ '& ',
150
+ '* ',
151
+ '( ',
152
+ ') ',
153
+ '_ ',
154
+ '- ',
155
+ '= ',
156
+ '+ ',
157
+ '> ',
158
+ '< ',
159
+ '. ',
160
+ ', '
161
+ ]
162
+
163
+ last_index = matrix_arr.length - 1
164
+
165
+ matrix_row = ''
166
+ most_cols = cols - 1
167
+ most_cols.times.each do
168
+ matrix_row += "#{matrix_arr[Random.rand(0..last_index)]} "
169
+ end
170
+ matrix_row += matrix_arr[Random.rand(0..last_index)]
171
+ rescue Interrupt
172
+ # Exit Gracefully if CTRL+C is Pressed During Session
173
+ Cryptum::UI::Exit.gracefully(which_self: self)
174
+ rescue StandardError => e
175
+ raise e
176
+ end
177
+
178
+ # Display Usage for this Module
179
+
180
+ public_class_method def self.help
181
+ puts "USAGE:
182
+ matrix_row = #{self}.generate(cols: Curses.cols)
183
+ "
184
+ end
185
+ end
186
+ end
187
+ end
@@ -279,7 +279,10 @@ module Cryptum
279
279
  event_history
280
280
  rescue Interrupt
281
281
  # Exit Gracefully if CTRL+C is Pressed During Session
282
- Cryptum.exit_gracefully(which_self: self)
282
+ Cryptum::UI::Exit.gracefully(
283
+ which_self: self,
284
+ event_history: event_history
285
+ )
283
286
  rescue StandardError => e
284
287
  raise e
285
288
  end
@@ -127,7 +127,7 @@ module Cryptum
127
127
  event_history.red_pill = true if fiat_invested_this_order > fiat_avail_to_trade.to_f
128
128
 
129
129
  unless event_history.red_pill
130
- event_history = Cryptum::API.submit_limit_order(
130
+ event_history = Cryptum::API::Orders.submit_limit_order(
131
131
  option_choice: option_choice,
132
132
  env: env,
133
133
  price: price,
@@ -253,7 +253,7 @@ module Cryptum
253
253
 
254
254
  size = order_ready_to_sell[:size]
255
255
 
256
- Cryptum::API.submit_limit_order(
256
+ Cryptum::API::Orders.submit_limit_order(
257
257
  option_choice: option_choice,
258
258
  env: env,
259
259
  price: price,
@@ -604,7 +604,12 @@ module Cryptum
604
604
  event_history
605
605
  rescue Interrupt
606
606
  # Exit Gracefully if CTRL+C is Pressed During Session
607
- Cryptum.exit_gracefully(which_self: self)
607
+ Cryptum::UI::Exit.gracefully(
608
+ which_self: self,
609
+ event_history: event_history,
610
+ option_choice: option_choice,
611
+ env: env
612
+ )
608
613
  rescue StandardError => e
609
614
  raise e
610
615
  end
@@ -334,7 +334,7 @@ module Cryptum
334
334
 
335
335
  max_rows_to_display.times.each do
336
336
  out_line_no += 1
337
- this_matrix_row = Cryptum::Matrix.generate(cols: Curses.cols)
337
+ this_matrix_row = Cryptum::UI::Matrix.generate(cols: Curses.cols)
338
338
  order_plan_win.setpos(out_line_no, Cryptum::UI.col_first)
339
339
  order_plan_win.clrtoeol
340
340
  Cryptum::UI.colorize(
@@ -494,7 +494,11 @@ module Cryptum
494
494
  event_history
495
495
  rescue Interrupt
496
496
  # Exit Gracefully if CTRL+C is Pressed During Session
497
- Cryptum.exit_gracefully(which_self: self)
497
+ Cryptum::UI::Exit.gracefully(
498
+ which_self: self,
499
+ event_history: event_history,
500
+ option_choice: option_choice
501
+ )
498
502
  rescue StandardError => e
499
503
  raise e
500
504
  end
@@ -222,7 +222,10 @@ module Cryptum
222
222
  event_history
223
223
  rescue Interrupt
224
224
  # Exit Gracefully if CTRL+C is Pressed During Session
225
- Cryptum.exit_gracefully(which_self: self)
225
+ Cryptum::UI::Exit.gracefully(
226
+ which_self: self,
227
+ event_history: event_history
228
+ )
226
229
  rescue StandardError => e
227
230
  raise e
228
231
  end
@@ -118,7 +118,11 @@ module Cryptum
118
118
  order_countdown.to_f
119
119
  rescue Interrupt
120
120
  # Exit Gracefully if CTRL+C is Pressed During Session
121
- Cryptum.exit_gracefully(which_self: self)
121
+ Cryptum::UI::Exit.gracefully(
122
+ which_self: self,
123
+ event_history: event_history,
124
+ option_choice: option_choice
125
+ )
122
126
  rescue StandardError => e
123
127
  raise e
124
128
  end
@@ -201,7 +201,11 @@ module Cryptum
201
201
  event_history
202
202
  rescue Interrupt
203
203
  # Exit Gracefully if CTRL+C is Pressed During Session
204
- Cryptum.exit_gracefully(which_self: self)
204
+ Cryptum::UI::Exit.gracefully(
205
+ which_self: self,
206
+ event_history: event_history,
207
+ option_choice: option_choice
208
+ )
205
209
  rescue StandardError => e
206
210
  raise e
207
211
  end
@@ -89,7 +89,7 @@ module Cryptum
89
89
  indicator_status
90
90
  rescue Interrupt
91
91
  # Exit Gracefully if CTRL+C is Pressed During Session
92
- Cryptum.exit_gracefully(which_self: self)
92
+ Cryptum::UI::Exit.gracefully(which_self: self)
93
93
  rescue StandardError => e
94
94
  raise e
95
95
  end
@@ -101,7 +101,7 @@ module Cryptum
101
101
  end
102
102
  rescue Interrupt
103
103
  # Exit Gracefully if CTRL+C is Pressed During Session
104
- Cryptum.exit_gracefully(which_self: self)
104
+ Cryptum::UI::Exit.gracefully(which_self: self)
105
105
  rescue StandardError => e
106
106
  # Produce a Stacktrace for anything else
107
107
  Curses.close_screen
@@ -299,7 +299,10 @@ module Cryptum
299
299
  event_history
300
300
  rescue Interrupt
301
301
  # Exit Gracefully if CTRL+C is Pressed During Session
302
- Cryptum.exit_gracefully(which_self: self)
302
+ Cryptum::UI::Exit.gracefully(
303
+ which_self: self,
304
+ event_history: event_history
305
+ )
303
306
  rescue StandardError => e
304
307
  raise e
305
308
  end