cryptum 0.0.380 → 0.0.382
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/.rubocop_todo.yml +3 -8
- data/Gemfile +1 -2
- data/bin/cryptum +3 -3
- data/bin/cryptum-forecast +3 -3
- data/lib/cryptum/api/exchange_rates.rb +42 -0
- data/lib/cryptum/api/fees.rb +36 -0
- data/lib/cryptum/api/order_history.rb +56 -0
- data/lib/cryptum/api/orders.rb +261 -0
- data/lib/cryptum/api/portfolio.rb +79 -0
- data/lib/cryptum/api/products.rb +65 -0
- data/lib/cryptum/api/rest.rb +177 -0
- data/lib/cryptum/api/signature.rb +79 -0
- data/lib/cryptum/api.rb +9 -692
- data/lib/cryptum/bot_conf.rb +14 -3
- data/lib/cryptum/event/buy.rb +1 -1
- data/lib/cryptum/event/cancel.rb +1 -1
- data/lib/cryptum/event/exit.rb +1 -1
- data/lib/cryptum/event/gtfo.rb +1 -1
- data/lib/cryptum/event/history.rb +4 -1
- data/lib/cryptum/event/parse.rb +1 -1
- data/lib/cryptum/event/sell.rb +1 -1
- data/lib/cryptum/option/choice.rb +1 -1
- data/lib/cryptum/order_book/generate.rb +4 -5
- data/lib/cryptum/portfolio/balance.rb +3 -5
- data/lib/cryptum/ui/command.rb +1 -1
- data/lib/cryptum/ui/exit.rb +43 -0
- data/lib/cryptum/ui/key_press_event.rb +1 -1
- data/lib/cryptum/ui/market_trend.rb +4 -1
- data/lib/cryptum/ui/matrix.rb +187 -0
- data/lib/cryptum/ui/order_execute_details.rb +4 -1
- data/lib/cryptum/ui/order_execution.rb +8 -3
- data/lib/cryptum/ui/order_plan.rb +6 -2
- data/lib/cryptum/ui/order_plan_details.rb +4 -1
- data/lib/cryptum/ui/order_timer.rb +5 -1
- data/lib/cryptum/ui/portfolio.rb +5 -1
- data/lib/cryptum/ui/signal_engine.rb +1 -1
- data/lib/cryptum/ui/terminal_window.rb +1 -1
- data/lib/cryptum/ui/ticker.rb +4 -1
- data/lib/cryptum/ui.rb +19 -17
- data/lib/cryptum/version.rb +1 -1
- data/lib/cryptum/web_sock/coinbase.rb +2 -2
- data/lib/cryptum/web_sock/event_machine.rb +1 -1
- data/lib/cryptum.rb +0 -31
- data/spec/lib/cryptum/api/exchange_rates_spec.rb +10 -0
- data/spec/lib/cryptum/api/fees_spec.rb +10 -0
- data/spec/lib/cryptum/api/order_history_spec.rb +10 -0
- data/spec/lib/cryptum/api/orders_spec.rb +10 -0
- data/spec/lib/cryptum/api/portfolio_spec.rb +10 -0
- data/spec/lib/cryptum/api/products_spec.rb +10 -0
- data/spec/lib/cryptum/api/rest_spec.rb +10 -0
- data/spec/lib/cryptum/api/signature_spec.rb +10 -0
- data/spec/lib/cryptum/{matrix_spec.rb → ui/exit_spec.rb} +2 -2
- data/spec/lib/cryptum/ui/matrix_spec.rb +10 -0
- metadata +24 -20
- data/lib/cryptum/matrix.rb +0 -181
    
        data/lib/cryptum/bot_conf.rb
    CHANGED
    
    | @@ -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. | 
| 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. | 
| 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. | 
| 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
         | 
    
        data/lib/cryptum/event/buy.rb
    CHANGED
    
    | @@ -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,
         | 
    
        data/lib/cryptum/event/cancel.rb
    CHANGED
    
    
    
        data/lib/cryptum/event/exit.rb
    CHANGED
    
    
    
        data/lib/cryptum/event/gtfo.rb
    CHANGED
    
    
| @@ -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. | 
| 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
         | 
    
        data/lib/cryptum/event/parse.rb
    CHANGED
    
    | @@ -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. | 
| 155 | 
            +
                    Cryptum::UI::Exit.gracefully(
         | 
| 156 156 | 
             
                      which_self: self,
         | 
| 157 157 | 
             
                      event_history: event_history,
         | 
| 158 158 | 
             
                      option_choice: option_choice,
         | 
    
        data/lib/cryptum/event/sell.rb
    CHANGED
    
    | @@ -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. | 
| 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. | 
| 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. | 
| 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. | 
| 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}. | 
| 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. | 
| 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. | 
| 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. | 
| 81 | 
            +
                      fees = Cryptum::API::Fees.get(
         | 
| 84 82 | 
             
                        option_choice: option_choice,
         | 
| 85 83 | 
             
                        env: env
         | 
| 86 84 | 
             
                      )
         | 
    
        data/lib/cryptum/ui/command.rb
    CHANGED
    
    | @@ -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. | 
| 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. | 
| 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. | 
| 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. | 
| 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. | 
| 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. | 
| 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. | 
| 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. | 
| 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
         | 
    
        data/lib/cryptum/ui/portfolio.rb
    CHANGED
    
    | @@ -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. | 
| 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
         | 
| @@ -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. | 
| 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
         | 
    
        data/lib/cryptum/ui/ticker.rb
    CHANGED
    
    | @@ -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. | 
| 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
         |