ig_markets 0.34 → 0.35
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/CHANGELOG.md +5 -0
- data/README.md +5 -5
- data/lib/ig_markets/boolean.rb +1 -1
- data/lib/ig_markets/cli/commands/console_command.rb +1 -1
- data/lib/ig_markets/cli/commands/performance_command.rb +3 -3
- data/lib/ig_markets/cli/commands/positions_command.rb +1 -1
- data/lib/ig_markets/cli/commands/stream_command.rb +2 -2
- data/lib/ig_markets/cli/main.rb +4 -4
- data/lib/ig_markets/cli/tables/accounts_table.rb +1 -1
- data/lib/ig_markets/cli/tables/market_overviews_table.rb +2 -2
- data/lib/ig_markets/cli/tables/performances_table.rb +1 -1
- data/lib/ig_markets/cli/tables/positions_table.rb +4 -4
- data/lib/ig_markets/cli/tables/sprint_market_positions_table.rb +2 -2
- data/lib/ig_markets/cli/tables/table.rb +1 -1
- data/lib/ig_markets/cli/tables/transactions_table.rb +1 -1
- data/lib/ig_markets/dealing_platform.rb +3 -2
- data/lib/ig_markets/format.rb +1 -1
- data/lib/ig_markets/model/typecasters.rb +1 -1
- data/lib/ig_markets/model.rb +5 -4
- data/lib/ig_markets/position.rb +3 -2
- data/lib/ig_markets/regex.rb +1 -1
- data/lib/ig_markets/request_body_formatter.rb +1 -1
- data/lib/ig_markets/request_formatter.rb +3 -3
- data/lib/ig_markets/response_parser.rb +3 -2
- data/lib/ig_markets/session.rb +1 -1
- data/lib/ig_markets/streaming/account_state.rb +3 -1
- data/lib/ig_markets/streaming/market_subscription_manager.rb +1 -1
- data/lib/ig_markets/streaming/subscription.rb +3 -1
- data/lib/ig_markets/transaction.rb +1 -1
- data/lib/ig_markets/version.rb +1 -1
- metadata +34 -33
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 04e98ad7849a63ce3005fd84aa7ae03a9ff3f560efbcc302ba2b68cecbef4023
         | 
| 4 | 
            +
              data.tar.gz: 91df31e0fe72ff4ab68384191e59b70a7456d09ab164d73fae0321d6bac53d0b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: fd774702efad7e59a4e724b2dfc826bb11fdb8f1c6e1d9ac8197a14af0d28f3fd3be0d8658f0a4fd5f09b468898b9743e131e50befe3442eab6441c57eccf909
         | 
| 7 | 
            +
              data.tar.gz: 31404cd38fc63edac4f4d35e3afeb21778e9a1f125f510096ad53e7b3d6bea86d9c36fe3d4a69e4a7457967d00b3f166dec3f74e883d274f0b22f96ee64e8acd
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -165,7 +165,7 @@ ig_markets console --verbose | |
| 165 165 |  | 
| 166 166 | 
             
            #### Documentation
         | 
| 167 167 |  | 
| 168 | 
            -
            API documentation is available [here](http://www.rubydoc.info/github/richard-viney/ig_markets/ | 
| 168 | 
            +
            API documentation is available [here](http://www.rubydoc.info/github/richard-viney/ig_markets/main).
         | 
| 169 169 |  | 
| 170 170 | 
             
            #### Examples
         | 
| 171 171 |  | 
| @@ -266,8 +266,8 @@ Gem created by Richard Viney. All contributions welcome. | |
| 266 266 | 
             
            [gem-link]: https://rubygems.org/gems/ig_markets
         | 
| 267 267 | 
             
            [gem-badge]: https://badge.fury.io/rb/ig_markets.svg
         | 
| 268 268 | 
             
            [ci-link]: https://github.com/richard-viney/ig_markets/actions
         | 
| 269 | 
            -
            [ci-badge]: https://github.com/richard-viney/ig_markets/workflows/ci/badge.svg
         | 
| 270 | 
            -
            [documentation-link]: https://inch-ci.org/github/richard-viney/ig_markets
         | 
| 271 | 
            -
            [documentation-badge]: https://inch-ci.org/github/richard-viney/ig_markets.svg?branch= | 
| 272 | 
            -
            [license-link]: https://github.com/richard-viney/ig_markets/blob/ | 
| 269 | 
            +
            [ci-badge]: https://github.com/richard-viney/ig_markets/workflows/ci/badge.svg?branch=main
         | 
| 270 | 
            +
            [documentation-link]: https://inch-ci.org/github/richard-viney/ig_markets?branch=main
         | 
| 271 | 
            +
            [documentation-badge]: https://inch-ci.org/github/richard-viney/ig_markets.svg?branch=main
         | 
| 272 | 
            +
            [license-link]: https://github.com/richard-viney/ig_markets/blob/main/LICENSE.md
         | 
| 273 273 | 
             
            [license-badge]: https://img.shields.io/badge/license-MIT-blue.svg
         | 
    
        data/lib/ig_markets/boolean.rb
    CHANGED
    
    
| @@ -25,7 +25,7 @@ module IGMarkets | |
| 25 25 |  | 
| 26 26 | 
             
                  def gather_performances(dealing_platform)
         | 
| 27 27 | 
             
                    performances = deal_transactions_by_epic(dealing_platform).map do |epic, transactions|
         | 
| 28 | 
            -
                      profit_loss = transactions. | 
| 28 | 
            +
                      profit_loss = transactions.sum(&:profit_and_loss_amount)
         | 
| 29 29 |  | 
| 30 30 | 
             
                      { epic: epic, transactions: transactions, profit_loss: profit_loss }
         | 
| 31 31 | 
             
                    end
         | 
| @@ -38,7 +38,7 @@ module IGMarkets | |
| 38 38 |  | 
| 39 39 | 
             
                    deal_transactions(dealing_platform).group_by do |transaction|
         | 
| 40 40 | 
             
                      activities.detect do |activity|
         | 
| 41 | 
            -
                        Regexp.new("^Position( | 
| 41 | 
            +
                        Regexp.new("^Position(/s| partially) closed:.*#{transaction.reference}").match activity.description
         | 
| 42 42 | 
             
                      end.epic
         | 
| 43 43 | 
             
                    end
         | 
| 44 44 | 
             
                  end
         | 
| @@ -58,7 +58,7 @@ module IGMarkets | |
| 58 58 | 
             
                  end
         | 
| 59 59 |  | 
| 60 60 | 
             
                  def print_summary(performances)
         | 
| 61 | 
            -
                    profit_loss = performances. | 
| 61 | 
            +
                    profit_loss = performances.sum { |h| h[:profit_loss] }
         | 
| 62 62 | 
             
                    currency = performances.first[:transactions].first.currency
         | 
| 63 63 |  | 
| 64 64 | 
             
                    puts <<~MSG
         | 
| @@ -130,7 +130,7 @@ module IGMarkets | |
| 130 130 |  | 
| 131 131 | 
             
                  def print_position_totals(positions)
         | 
| 132 132 | 
             
                    currency_totals = positions.group_by(&:currency).map do |currency, subset|
         | 
| 133 | 
            -
                      total = subset. | 
| 133 | 
            +
                      total = subset.sum(&:profit_loss)
         | 
| 134 134 |  | 
| 135 135 | 
             
                      Format.colored_currency total, currency
         | 
| 136 136 | 
             
                    end
         | 
| @@ -36,7 +36,7 @@ module IGMarkets | |
| 36 36 | 
             
                      @dealing_platform = dealing_platform
         | 
| 37 37 | 
             
                      @queue = Queue.new
         | 
| 38 38 |  | 
| 39 | 
            -
                      @dealing_platform.streaming.on_error | 
| 39 | 
            +
                      @dealing_platform.streaming.on_error { |error| on_error error }
         | 
| 40 40 | 
             
                      @dealing_platform.streaming.connect
         | 
| 41 41 | 
             
                      start_raw_subscriptions
         | 
| 42 42 |  | 
| @@ -51,7 +51,7 @@ module IGMarkets | |
| 51 51 | 
             
                                     chart_ticks_subscription].compact
         | 
| 52 52 |  | 
| 53 53 | 
             
                    subscriptions.each do |subscription|
         | 
| 54 | 
            -
                      subscription.on_data | 
| 54 | 
            +
                      subscription.on_data { |data, merged_data| on_data data, merged_data }
         | 
| 55 55 | 
             
                    end
         | 
| 56 56 |  | 
| 57 57 | 
             
                    @dealing_platform.streaming.start_subscriptions subscriptions, snapshot: true
         | 
    
        data/lib/ig_markets/cli/main.rb
    CHANGED
    
    | @@ -36,7 +36,7 @@ module IGMarkets | |
| 36 36 | 
             
                        to: history_options_parse_time(options[:to])
         | 
| 37 37 | 
             
                      }
         | 
| 38 38 | 
             
                    else
         | 
| 39 | 
            -
                      { from: Time.now.utc - options[:days] * 86_400 }
         | 
| 39 | 
            +
                      { from: Time.now.utc - (options[:days] * 86_400) }
         | 
| 40 40 | 
             
                    end
         | 
| 41 41 | 
             
                  end
         | 
| 42 42 |  | 
| @@ -108,14 +108,14 @@ module IGMarkets | |
| 108 108 | 
             
                    def parse_date_time(attributes, attribute, klass, format, display_format)
         | 
| 109 109 | 
             
                      return unless attributes.key? attribute
         | 
| 110 110 |  | 
| 111 | 
            -
                      if  | 
| 111 | 
            +
                      if ['', attribute.to_s].include? attributes[attribute].to_s
         | 
| 112 | 
            +
                        attributes[attribute] = nil
         | 
| 113 | 
            +
                      else
         | 
| 112 114 | 
             
                        begin
         | 
| 113 115 | 
             
                          attributes[attribute] = klass.strptime attributes[attribute], format
         | 
| 114 116 | 
             
                        rescue ArgumentError
         | 
| 115 117 | 
             
                          raise ArgumentError, %(invalid #{attribute}, use format "#{display_format}")
         | 
| 116 118 | 
             
                        end
         | 
| 117 | 
            -
                      else
         | 
| 118 | 
            -
                        attributes[attribute] = nil
         | 
| 119 119 | 
             
                      end
         | 
| 120 120 | 
             
                    end
         | 
| 121 121 |  | 
| @@ -24,9 +24,9 @@ module IGMarkets | |
| 24 24 | 
             
                    end
         | 
| 25 25 |  | 
| 26 26 | 
             
                    def cell_color(value, _model, _row_index, column_index)
         | 
| 27 | 
            -
                      return unless  | 
| 27 | 
            +
                      return unless headings[column_index].include?('Change')
         | 
| 28 28 |  | 
| 29 | 
            -
                      if  | 
| 29 | 
            +
                      if value.include?('-')
         | 
| 30 30 | 
             
                        :red
         | 
| 31 31 | 
             
                      else
         | 
| 32 32 | 
             
                        :green
         | 
| @@ -33,7 +33,7 @@ module IGMarkets | |
| 33 33 | 
             
                    def cell_color(value, _model, _row_index, column_index)
         | 
| 34 34 | 
             
                      return unless headings[column_index] == 'Profit/loss'
         | 
| 35 35 |  | 
| 36 | 
            -
                      if  | 
| 36 | 
            +
                      if value.include?('-')
         | 
| 37 37 | 
             
                        :red
         | 
| 38 38 | 
             
                      else
         | 
| 39 39 | 
             
                        :green
         | 
| @@ -73,15 +73,15 @@ module IGMarkets | |
| 73 73 | 
             
                      Position.new(contract_size: first.contract_size, currency: first.currency,
         | 
| 74 74 | 
             
                                   deal_id: combine_position_deal_ids(positions), direction: first.direction,
         | 
| 75 75 | 
             
                                   level: combine_position_levels(positions), market: first.market,
         | 
| 76 | 
            -
                                   size: positions. | 
| 76 | 
            +
                                   size: positions.sum(&:size)).tap do |combined|
         | 
| 77 77 | 
             
                        combined.level /= combined.size
         | 
| 78 78 | 
             
                      end
         | 
| 79 79 | 
             
                    end
         | 
| 80 80 |  | 
| 81 81 | 
             
                    def combine_position_levels(positions)
         | 
| 82 | 
            -
                      positions. | 
| 82 | 
            +
                      positions.sum do |position|
         | 
| 83 83 | 
             
                        position.level * position.size
         | 
| 84 | 
            -
                      end | 
| 84 | 
            +
                      end
         | 
| 85 85 | 
             
                    end
         | 
| 86 86 |  | 
| 87 87 | 
             
                    def combine_position_deal_ids(positions)
         | 
| @@ -32,8 +32,8 @@ module IGMarkets | |
| 32 32 | 
             
                    def cell_color(_value, sprint, _row_index, column_index)
         | 
| 33 33 | 
             
                      return unless headings[column_index] == 'Payout'
         | 
| 34 34 |  | 
| 35 | 
            -
                      if current_level(sprint) > sprint.strike_level && sprint.direction == :buy ||
         | 
| 36 | 
            -
                         current_level(sprint) < sprint.strike_level && sprint.direction == :sell
         | 
| 35 | 
            +
                      if (current_level(sprint) > sprint.strike_level && sprint.direction == :buy) ||
         | 
| 36 | 
            +
                         (current_level(sprint) < sprint.strike_level && sprint.direction == :sell)
         | 
| 37 37 | 
             
                        :green
         | 
| 38 38 | 
             
                      else
         | 
| 39 39 | 
             
                        :red
         | 
| @@ -147,9 +147,10 @@ module IGMarkets | |
| 147 147 |  | 
| 148 148 | 
             
                  source = prepare_source model_class, source
         | 
| 149 149 |  | 
| 150 | 
            -
                   | 
| 150 | 
            +
                  case source
         | 
| 151 | 
            +
                  when Array
         | 
| 151 152 | 
             
                    source.map { |entry| instantiate_models model_class, entry }
         | 
| 152 | 
            -
                   | 
| 153 | 
            +
                  when Hash
         | 
| 153 154 | 
             
                    instantiate_model_from_attributes_hash model_class, source
         | 
| 154 155 | 
             
                  else
         | 
| 155 156 | 
             
                    raise ArgumentError, "#{model_class}: can't instantiate from a source of type #{source.class}"
         | 
    
        data/lib/ig_markets/format.rb
    CHANGED
    
    | @@ -60,7 +60,7 @@ module IGMarkets | |
| 60 60 | 
             
                             (value / 60).to_s
         | 
| 61 61 | 
             
                           end
         | 
| 62 62 |  | 
| 63 | 
            -
                  result | 
| 63 | 
            +
                  "#{result}:#{Kernel.format('%02i', value % 60)}"
         | 
| 64 64 | 
             
                end
         | 
| 65 65 |  | 
| 66 66 | 
             
                # Formats the passed symbol into a human-readable string, replacing underscores with spaces and capitalizing the
         | 
| @@ -6,7 +6,7 @@ module IGMarkets | |
| 6 6 |  | 
| 7 7 | 
             
                  def typecaster_for(type)
         | 
| 8 8 | 
             
                    if [Boolean, String, Integer, Float, Symbol, Date, Time].include? type
         | 
| 9 | 
            -
                      method "typecaster_#{type.to_s. | 
| 9 | 
            +
                      method "typecaster_#{type.to_s.delete_prefix('IGMarkets::').downcase}"
         | 
| 10 10 | 
             
                    elsif type
         | 
| 11 11 | 
             
                      lambda do |value, _options, name|
         | 
| 12 12 | 
             
                        if Array(value).any? { |entry| !entry.is_a? type }
         | 
    
        data/lib/ig_markets/model.rb
    CHANGED
    
    | @@ -80,9 +80,10 @@ module IGMarkets | |
| 80 80 |  | 
| 81 81 | 
             
                # Returns the {#inspect} string for the given value.
         | 
| 82 82 | 
             
                def inspect_value(value)
         | 
| 83 | 
            -
                   | 
| 83 | 
            +
                  case value
         | 
| 84 | 
            +
                  when Time
         | 
| 84 85 | 
             
                    value.localtime.strftime '%F %T %Z'
         | 
| 85 | 
            -
                   | 
| 86 | 
            +
                  when Date
         | 
| 86 87 | 
             
                    value.strftime '%F'
         | 
| 87 88 | 
             
                  else
         | 
| 88 89 | 
             
                    value.inspect
         | 
| @@ -183,8 +184,8 @@ module IGMarkets | |
| 183 184 | 
             
                  # @param [Array<Symbol>] names The names of the deprecated attributes.
         | 
| 184 185 | 
             
                  def deprecated_attribute(*names)
         | 
| 185 186 | 
             
                    names.each do |name|
         | 
| 186 | 
            -
                      define_method(name) {}
         | 
| 187 | 
            -
                      define_method("#{name}=") { |_value| }
         | 
| 187 | 
            +
                      define_method(name) {} # rubocop:disable Lint/EmptyBlock
         | 
| 188 | 
            +
                      define_method("#{name}=") { |_value| } # rubocop:disable Lint/EmptyBlock
         | 
| 188 189 | 
             
                      define_singleton_method("sanitize_#{name}_value") { |value| value }
         | 
| 189 190 |  | 
| 190 191 | 
             
                      (@deprecated_attributes ||= []) << name
         | 
    
        data/lib/ig_markets/position.rb
    CHANGED
    
    
    
        data/lib/ig_markets/regex.rb
    CHANGED
    
    
| @@ -50,7 +50,7 @@ module IGMarkets | |
| 50 50 | 
             
                    result = "  Body:\n    "
         | 
| 51 51 | 
             
                    result += JSON.pretty_generate(JSON.parse(body)).gsub("\n", "\n    ")
         | 
| 52 52 |  | 
| 53 | 
            -
                    result | 
| 53 | 
            +
                    "#{result}\n"
         | 
| 54 54 | 
             
                  end
         | 
| 55 55 |  | 
| 56 56 | 
             
                  def format_response_headers(headers)
         | 
| @@ -66,9 +66,9 @@ module IGMarkets | |
| 66 66 | 
             
                  def format_response_body(body)
         | 
| 67 67 | 
             
                    result = "    Body:\n      "
         | 
| 68 68 | 
             
                    result += JSON.pretty_generate(JSON.parse(body)).gsub "\n", "\n      "
         | 
| 69 | 
            -
                    result | 
| 69 | 
            +
                    "#{result}\n"
         | 
| 70 70 | 
             
                  rescue JSON::ParserError
         | 
| 71 | 
            -
                    result | 
| 71 | 
            +
                    "#{result}#{body}\n"
         | 
| 72 72 | 
             
                  end
         | 
| 73 73 | 
             
                end
         | 
| 74 74 | 
             
              end
         | 
| @@ -14,11 +14,12 @@ module IGMarkets | |
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # @return [Hash, Array, Object] The parsed object, the type depends on the type of the `response` parameter.
         | 
| 16 16 | 
             
                def parse(response)
         | 
| 17 | 
            -
                   | 
| 17 | 
            +
                  case response
         | 
| 18 | 
            +
                  when Hash
         | 
| 18 19 | 
             
                    response.each_with_object({}) do |(key, value), new_hash|
         | 
| 19 20 | 
             
                      new_hash[camel_case_to_snake_case(key).to_sym] = parse(value)
         | 
| 20 21 | 
             
                    end
         | 
| 21 | 
            -
                   | 
| 22 | 
            +
                  when Array
         | 
| 22 23 | 
             
                    response.map { |item| parse item }
         | 
| 23 24 | 
             
                  else
         | 
| 24 25 | 
             
                    response
         | 
    
        data/lib/ig_markets/session.rb
    CHANGED
    
    
| @@ -170,13 +170,15 @@ module IGMarkets | |
| 170 170 | 
             
                  end
         | 
| 171 171 |  | 
| 172 172 | 
             
                  def on_working_order_updated(working_order_update)
         | 
| 173 | 
            +
                    working_order_attributes = %i[good_till_date limit_distance order_type stop_distance time_in_force]
         | 
| 174 | 
            +
             | 
| 173 175 | 
             
                    @working_orders.each do |working_order|
         | 
| 174 176 | 
             
                      next unless working_order.deal_id == working_order_update.deal_id
         | 
| 175 177 |  | 
| 176 178 | 
             
                      working_order.currency_code = working_order_update.currency
         | 
| 177 179 | 
             
                      working_order.order_level = working_order_update.level
         | 
| 178 180 |  | 
| 179 | 
            -
                       | 
| 181 | 
            +
                      working_order_attributes.each do |attribute|
         | 
| 180 182 | 
             
                        working_order.send "#{attribute}=", working_order_update.send(attribute)
         | 
| 181 183 | 
             
                      end
         | 
| 182 184 | 
             
                    end
         | 
| @@ -54,7 +54,7 @@ module IGMarkets | |
| 54 54 | 
             
                      next if @subscriptions.key? epic
         | 
| 55 55 |  | 
| 56 56 | 
             
                      subscription = @dealing_platform.streaming.build_markets_subscription epic
         | 
| 57 | 
            -
                      subscription.on_data | 
| 57 | 
            +
                      subscription.on_data { |data, merged_data| run_callbacks data, merged_data }
         | 
| 58 58 |  | 
| 59 59 | 
             
                      @subscriptions[epic] = subscription
         | 
| 60 60 |  | 
| @@ -19,7 +19,9 @@ module IGMarkets | |
| 19 19 | 
             
                    @dealing_platform = dealing_platform
         | 
| 20 20 |  | 
| 21 21 | 
             
                    @lightstreamer_subscription = lightstreamer_subscription
         | 
| 22 | 
            -
                    @lightstreamer_subscription.on_data | 
| 22 | 
            +
                    @lightstreamer_subscription.on_data do |subscription, item_name, item_data, new_data|
         | 
| 23 | 
            +
                      on_raw_data subscription, item_name, item_data, new_data
         | 
| 24 | 
            +
                    end
         | 
| 23 25 |  | 
| 24 26 | 
             
                    @on_data_callbacks = []
         | 
| 25 27 | 
             
                  end
         | 
| @@ -32,7 +32,7 @@ module IGMarkets | |
| 32 32 | 
             
                def profit_and_loss_amount
         | 
| 33 33 | 
             
                  raise 'profit_and_loss does not start with the expected currency' unless profit_and_loss.start_with? currency
         | 
| 34 34 |  | 
| 35 | 
            -
                  profit_and_loss[currency.length | 
| 35 | 
            +
                  profit_and_loss[currency.length..].delete(',').to_f
         | 
| 36 36 | 
             
                end
         | 
| 37 37 | 
             
              end
         | 
| 38 38 | 
             
            end
         | 
    
        data/lib/ig_markets/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ig_markets
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: '0. | 
| 4 | 
            +
              version: '0.35'
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Richard Viney
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2023-03-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: colorize
         | 
| @@ -30,14 +30,14 @@ dependencies: | |
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '0. | 
| 33 | 
            +
                    version: '0.99'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '0. | 
| 40 | 
            +
                    version: '0.99'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: lightstreamer
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -58,28 +58,28 @@ dependencies: | |
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '0. | 
| 61 | 
            +
                    version: '0.14'
         | 
| 62 62 | 
             
              type: :runtime
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 66 | 
             
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '0. | 
| 68 | 
            +
                    version: '0.14'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: terminal-table
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: ' | 
| 75 | 
            +
                    version: '3.0'
         | 
| 76 76 | 
             
              type: :runtime
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 80 | 
             
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: ' | 
| 82 | 
            +
                    version: '3.0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: thor
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -100,126 +100,126 @@ dependencies: | |
| 100 100 | 
             
                requirements:
         | 
| 101 101 | 
             
                - - "~>"
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: ' | 
| 103 | 
            +
                    version: '6.2'
         | 
| 104 104 | 
             
              type: :development
         | 
| 105 105 | 
             
              prerelease: false
         | 
| 106 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                requirements:
         | 
| 108 108 | 
             
                - - "~>"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: ' | 
| 110 | 
            +
                    version: '6.2'
         | 
| 111 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 112 | 
             
              name: github-markup
         | 
| 113 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 114 | 
             
                requirements:
         | 
| 115 115 | 
             
                - - "~>"
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: ' | 
| 117 | 
            +
                    version: '4.0'
         | 
| 118 118 | 
             
              type: :development
         | 
| 119 119 | 
             
              prerelease: false
         | 
| 120 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 121 | 
             
                requirements:
         | 
| 122 122 | 
             
                - - "~>"
         | 
| 123 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version: ' | 
| 124 | 
            +
                    version: '4.0'
         | 
| 125 125 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 126 | 
             
              name: redcarpet
         | 
| 127 127 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 128 | 
             
                requirements:
         | 
| 129 129 | 
             
                - - "~>"
         | 
| 130 130 | 
             
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            -
                    version: '3. | 
| 131 | 
            +
                    version: '3.6'
         | 
| 132 132 | 
             
              type: :development
         | 
| 133 133 | 
             
              prerelease: false
         | 
| 134 134 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 135 | 
             
                requirements:
         | 
| 136 136 | 
             
                - - "~>"
         | 
| 137 137 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            -
                    version: '3. | 
| 138 | 
            +
                    version: '3.6'
         | 
| 139 139 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 140 140 | 
             
              name: rspec
         | 
| 141 141 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 142 142 | 
             
                requirements:
         | 
| 143 143 | 
             
                - - "~>"
         | 
| 144 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version: '3. | 
| 145 | 
            +
                    version: '3.12'
         | 
| 146 146 | 
             
              type: :development
         | 
| 147 147 | 
             
              prerelease: false
         | 
| 148 148 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 149 | 
             
                requirements:
         | 
| 150 150 | 
             
                - - "~>"
         | 
| 151 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version: '3. | 
| 152 | 
            +
                    version: '3.12'
         | 
| 153 153 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 154 154 | 
             
              name: rspec-mocks
         | 
| 155 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 156 156 | 
             
                requirements:
         | 
| 157 157 | 
             
                - - "~>"
         | 
| 158 158 | 
             
                  - !ruby/object:Gem::Version
         | 
| 159 | 
            -
                    version: '3. | 
| 159 | 
            +
                    version: '3.12'
         | 
| 160 160 | 
             
              type: :development
         | 
| 161 161 | 
             
              prerelease: false
         | 
| 162 162 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 163 163 | 
             
                requirements:
         | 
| 164 164 | 
             
                - - "~>"
         | 
| 165 165 | 
             
                  - !ruby/object:Gem::Version
         | 
| 166 | 
            -
                    version: '3. | 
| 166 | 
            +
                    version: '3.12'
         | 
| 167 167 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 168 168 | 
             
              name: rubocop
         | 
| 169 169 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 170 170 | 
             
                requirements:
         | 
| 171 171 | 
             
                - - "~>"
         | 
| 172 172 | 
             
                  - !ruby/object:Gem::Version
         | 
| 173 | 
            -
                    version: ' | 
| 173 | 
            +
                    version: '1.48'
         | 
| 174 174 | 
             
              type: :development
         | 
| 175 175 | 
             
              prerelease: false
         | 
| 176 176 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 177 177 | 
             
                requirements:
         | 
| 178 178 | 
             
                - - "~>"
         | 
| 179 179 | 
             
                  - !ruby/object:Gem::Version
         | 
| 180 | 
            -
                    version: ' | 
| 180 | 
            +
                    version: '1.48'
         | 
| 181 181 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 182 182 | 
             
              name: rubocop-performance
         | 
| 183 183 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 184 184 | 
             
                requirements:
         | 
| 185 185 | 
             
                - - "~>"
         | 
| 186 186 | 
             
                  - !ruby/object:Gem::Version
         | 
| 187 | 
            -
                    version: '1. | 
| 187 | 
            +
                    version: '1.16'
         | 
| 188 188 | 
             
              type: :development
         | 
| 189 189 | 
             
              prerelease: false
         | 
| 190 190 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 191 191 | 
             
                requirements:
         | 
| 192 192 | 
             
                - - "~>"
         | 
| 193 193 | 
             
                  - !ruby/object:Gem::Version
         | 
| 194 | 
            -
                    version: '1. | 
| 194 | 
            +
                    version: '1.16'
         | 
| 195 195 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 196 196 | 
             
              name: rubocop-rspec
         | 
| 197 197 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 198 198 | 
             
                requirements:
         | 
| 199 199 | 
             
                - - "~>"
         | 
| 200 200 | 
             
                  - !ruby/object:Gem::Version
         | 
| 201 | 
            -
                    version: ' | 
| 201 | 
            +
                    version: '2.19'
         | 
| 202 202 | 
             
              type: :development
         | 
| 203 203 | 
             
              prerelease: false
         | 
| 204 204 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 205 205 | 
             
                requirements:
         | 
| 206 206 | 
             
                - - "~>"
         | 
| 207 207 | 
             
                  - !ruby/object:Gem::Version
         | 
| 208 | 
            -
                    version: ' | 
| 208 | 
            +
                    version: '2.19'
         | 
| 209 209 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 210 210 | 
             
              name: simplecov
         | 
| 211 211 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 212 212 | 
             
                requirements:
         | 
| 213 213 | 
             
                - - "~>"
         | 
| 214 214 | 
             
                  - !ruby/object:Gem::Version
         | 
| 215 | 
            -
                    version: '0. | 
| 215 | 
            +
                    version: '0.21'
         | 
| 216 216 | 
             
              type: :development
         | 
| 217 217 | 
             
              prerelease: false
         | 
| 218 218 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 219 219 | 
             
                requirements:
         | 
| 220 220 | 
             
                - - "~>"
         | 
| 221 221 | 
             
                  - !ruby/object:Gem::Version
         | 
| 222 | 
            -
                    version: '0. | 
| 222 | 
            +
                    version: '0.21'
         | 
| 223 223 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 224 224 | 
             
              name: yard
         | 
| 225 225 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -234,7 +234,7 @@ dependencies: | |
| 234 234 | 
             
                - - "~>"
         | 
| 235 235 | 
             
                  - !ruby/object:Gem::Version
         | 
| 236 236 | 
             
                    version: '0.9'
         | 
| 237 | 
            -
            description: | 
| 237 | 
            +
            description:
         | 
| 238 238 | 
             
            email: richard.viney@gmail.com
         | 
| 239 239 | 
             
            executables:
         | 
| 240 240 | 
             
            - ig_markets
         | 
| @@ -330,8 +330,9 @@ files: | |
| 330 330 | 
             
            homepage: https://github.com/richard-viney/ig_markets
         | 
| 331 331 | 
             
            licenses:
         | 
| 332 332 | 
             
            - MIT
         | 
| 333 | 
            -
            metadata: | 
| 334 | 
            -
             | 
| 333 | 
            +
            metadata:
         | 
| 334 | 
            +
              rubygems_mfa_required: 'true'
         | 
| 335 | 
            +
            post_install_message:
         | 
| 335 336 | 
             
            rdoc_options: []
         | 
| 336 337 | 
             
            require_paths:
         | 
| 337 338 | 
             
            - lib
         | 
| @@ -339,15 +340,15 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 339 340 | 
             
              requirements:
         | 
| 340 341 | 
             
              - - ">="
         | 
| 341 342 | 
             
                - !ruby/object:Gem::Version
         | 
| 342 | 
            -
                  version: '2. | 
| 343 | 
            +
                  version: '2.7'
         | 
| 343 344 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 344 345 | 
             
              requirements:
         | 
| 345 346 | 
             
              - - ">="
         | 
| 346 347 | 
             
                - !ruby/object:Gem::Version
         | 
| 347 348 | 
             
                  version: '0'
         | 
| 348 349 | 
             
            requirements: []
         | 
| 349 | 
            -
            rubygems_version: 3. | 
| 350 | 
            -
            signing_key: | 
| 350 | 
            +
            rubygems_version: 3.4.6
         | 
| 351 | 
            +
            signing_key:
         | 
| 351 352 | 
             
            specification_version: 4
         | 
| 352 353 | 
             
            summary: Library and command-line client for accessing the IG Markets dealing platform.
         | 
| 353 354 | 
             
            test_files: []
         |