ig_markets 0.34 → 0.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +5 -5
  4. data/lib/ig_markets/boolean.rb +1 -1
  5. data/lib/ig_markets/cli/commands/console_command.rb +1 -1
  6. data/lib/ig_markets/cli/commands/performance_command.rb +3 -3
  7. data/lib/ig_markets/cli/commands/positions_command.rb +1 -1
  8. data/lib/ig_markets/cli/commands/stream_command.rb +2 -2
  9. data/lib/ig_markets/cli/main.rb +4 -4
  10. data/lib/ig_markets/cli/tables/accounts_table.rb +1 -1
  11. data/lib/ig_markets/cli/tables/market_overviews_table.rb +2 -2
  12. data/lib/ig_markets/cli/tables/performances_table.rb +1 -1
  13. data/lib/ig_markets/cli/tables/positions_table.rb +4 -4
  14. data/lib/ig_markets/cli/tables/sprint_market_positions_table.rb +2 -2
  15. data/lib/ig_markets/cli/tables/table.rb +1 -1
  16. data/lib/ig_markets/cli/tables/transactions_table.rb +1 -1
  17. data/lib/ig_markets/dealing_platform.rb +3 -2
  18. data/lib/ig_markets/format.rb +1 -1
  19. data/lib/ig_markets/model/typecasters.rb +1 -1
  20. data/lib/ig_markets/model.rb +5 -4
  21. data/lib/ig_markets/position.rb +3 -2
  22. data/lib/ig_markets/regex.rb +1 -1
  23. data/lib/ig_markets/request_body_formatter.rb +1 -1
  24. data/lib/ig_markets/request_formatter.rb +3 -3
  25. data/lib/ig_markets/response_parser.rb +3 -2
  26. data/lib/ig_markets/session.rb +1 -1
  27. data/lib/ig_markets/streaming/account_state.rb +3 -1
  28. data/lib/ig_markets/streaming/market_subscription_manager.rb +1 -1
  29. data/lib/ig_markets/streaming/subscription.rb +3 -1
  30. data/lib/ig_markets/transaction.rb +1 -1
  31. data/lib/ig_markets/version.rb +1 -1
  32. metadata +34 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dfc740035b626e05da6ae9006cbfe5c2c19bab7480100a28611ee63dfa446870
4
- data.tar.gz: f3977e9c660ab30ee5e59caeb760d63e3dd5eb55bdad1e97539932863cf93f60
3
+ metadata.gz: 04e98ad7849a63ce3005fd84aa7ae03a9ff3f560efbcc302ba2b68cecbef4023
4
+ data.tar.gz: 91df31e0fe72ff4ab68384191e59b70a7456d09ab164d73fae0321d6bac53d0b
5
5
  SHA512:
6
- metadata.gz: 6ab801a73b512967cca3cb2adf21a5b0169e6bb3d8944ec17410aa5c731d36ca3bea74e5b8d1507b1d3167fa6922a3b3908299b5ba7544ac4bbd2ecb2446bb26
7
- data.tar.gz: da29933a076231a83f91fce752bf11e0611e05c9cc8ad46a2f1d86c6a316567ab78504859fe0ab3af8c9ba7c465d06626f8a07e9a90e0397290d40acc47352dd
6
+ metadata.gz: fd774702efad7e59a4e724b2dfc826bb11fdb8f1c6e1d9ac8197a14af0d28f3fd3be0d8658f0a4fd5f09b468898b9743e131e50befe3442eab6441c57eccf909
7
+ data.tar.gz: 31404cd38fc63edac4f4d35e3afeb21778e9a1f125f510096ad53e7b3d6bea86d9c36fe3d4a69e4a7457967d00b3f166dec3f74e883d274f0b22f96ee64e8acd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # IG Markets Changelog
2
2
 
3
+ ### 0.35 — March 26, 2023
4
+
5
+ - Updated supported Ruby version range to 2.7 - 3.2.
6
+ - Updated dependency versions.
7
+
3
8
  ### 0.34 — April 29, 2020
4
9
 
5
10
  - Updated supported Ruby version range to 2.5 - 2.7.
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/master).
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=master
272
- [license-link]: https://github.com/richard-viney/ig_markets/blob/master/LICENSE.md
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
@@ -1,5 +1,5 @@
1
1
  module IGMarkets
2
2
  # Placeholder class for specifying a boolean type.
3
- class Boolean
3
+ class Boolean # rubocop:disable Lint/EmptyClass
4
4
  end
5
5
  end
@@ -8,7 +8,7 @@ module IGMarkets
8
8
  self.class.begin_session(options) do |dealing_platform|
9
9
  ig = dealing_platform
10
10
 
11
- pry binding
11
+ pry binding # rubocop:disable Lint/Debugger
12
12
  end
13
13
  end
14
14
  end
@@ -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.map(&:profit_and_loss_amount).inject(&:+)
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(\/s| partially) closed:.*#{transaction.reference}").match activity.description
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.map { |h| h[:profit_loss] }.inject(:+)
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.map(&:profit_loss).reduce :+
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(&method(: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(&method(: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
@@ -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 !['', attribute.to_s].include? attributes[attribute].to_s
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
 
@@ -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 /-/.match?(value)
36
+ if value.include?('-')
37
37
  :red
38
38
  else
39
39
  :green
@@ -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 /Change/.match?(headings[column_index])
27
+ return unless headings[column_index].include?('Change')
28
28
 
29
- if /-/.match?(value)
29
+ if value.include?('-')
30
30
  :red
31
31
  else
32
32
  :green
@@ -27,7 +27,7 @@ module IGMarkets
27
27
  def cell_color(value, _transaction, _row_index, column_index)
28
28
  return unless headings[column_index] == 'Profit/loss'
29
29
 
30
- if /-/.match?(value)
30
+ if value.include?('-')
31
31
  :red
32
32
  else
33
33
  :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 /-/.match?(value)
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.map(&:size).reduce(:+)).tap do |combined|
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.map do |position|
82
+ positions.sum do |position|
83
83
  position.level * position.size
84
- end.reduce :+
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
@@ -95,7 +95,7 @@ module IGMarkets
95
95
 
96
96
  return '' if value.empty?
97
97
 
98
- value[0].upcase + value[1..-1]
98
+ value[0].upcase + value[1..]
99
99
  end
100
100
  end
101
101
  end
@@ -27,7 +27,7 @@ module IGMarkets
27
27
  def cell_color(value, _transaction, _row_index, column_index)
28
28
  return unless headings[column_index] == 'Profit/loss'
29
29
 
30
- if /-/.match?(value)
30
+ if value.include?('-')
31
31
  :red
32
32
  else
33
33
  :green
@@ -147,9 +147,10 @@ module IGMarkets
147
147
 
148
148
  source = prepare_source model_class, source
149
149
 
150
- if source.is_a? Array
150
+ case source
151
+ when Array
151
152
  source.map { |entry| instantiate_models model_class, entry }
152
- elsif source.is_a? Hash
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}"
@@ -60,7 +60,7 @@ module IGMarkets
60
60
  (value / 60).to_s
61
61
  end
62
62
 
63
- result + ':' + Kernel.format('%02i', value % 60)
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.gsub(/\AIGMarkets::/, '').downcase}"
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 }
@@ -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
- if value.is_a? Time
83
+ case value
84
+ when Time
84
85
  value.localtime.strftime '%F %T %Z'
85
- elsif value.is_a? Date
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
@@ -39,9 +39,10 @@ module IGMarkets
39
39
  #
40
40
  # @return [Float]
41
41
  def price_delta
42
- if direction == :buy
42
+ case direction
43
+ when :buy
43
44
  close_level - level
44
- elsif direction == :sell
45
+ when :sell
45
46
  level - close_level
46
47
  end
47
48
  end
@@ -7,6 +7,6 @@ module IGMarkets
7
7
  CURRENCY = /\A[A-Z]{3}\Z/.freeze
8
8
 
9
9
  # Regex used to validate an EPIC.
10
- EPIC = /\A[A-Z,a-z,0-9,.,_]{6,30}\Z/.freeze
10
+ EPIC = /\A[A-Za-z0-9.,_]{6,30}\Z/.freeze
11
11
  end
12
12
  end
@@ -48,7 +48,7 @@ module IGMarkets
48
48
  def snake_case_to_camel_case(value)
49
49
  pieces = value.to_s.split '_'
50
50
 
51
- (pieces.first + pieces[1..-1].map(&:capitalize).join).to_sym
51
+ (pieces.first + pieces[1..].map(&:capitalize).join).to_sym
52
52
  end
53
53
  end
54
54
  end
@@ -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 + "\n"
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 + "\n"
69
+ "#{result}\n"
70
70
  rescue JSON::ParserError
71
- result + body + "\n"
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
- if response.is_a? Hash
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
- elsif response.is_a? Array
22
+ when Array
22
23
  response.map { |item| parse item }
23
24
  else
24
25
  response
@@ -122,7 +122,7 @@ module IGMarkets
122
122
  options[:method] = :post
123
123
  end
124
124
 
125
- options[:body] = options[:body] && options[:body].to_json
125
+ options[:body] = options[:body]&.to_json
126
126
 
127
127
  execute_request options
128
128
  end
@@ -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
- %i[good_till_date limit_distance order_type stop_distance time_in_force].each do |attribute|
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(&method(:run_callbacks))
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(&method(:on_raw_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..-1].delete(',').to_f
35
+ profit_and_loss[currency.length..].delete(',').to_f
36
36
  end
37
37
  end
38
38
  end
@@ -1,4 +1,4 @@
1
1
  module IGMarkets
2
2
  # The version of this gem.
3
- VERSION = '0.34'.freeze
3
+ VERSION = '0.35'.freeze
4
4
  end
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.34'
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: 2020-04-29 00:00:00.000000000 Z
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.73'
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.73'
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.13'
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.13'
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: '1.6'
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: '1.6'
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: '5.0'
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: '5.0'
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: '3.0'
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: '3.0'
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.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.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.5'
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.5'
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.5'
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.5'
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: '0.82'
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: '0.82'
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.4'
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.4'
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: '1.35'
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: '1.35'
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.18'
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.18'
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
- post_install_message:
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.5'
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.0.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: []