schwab_rb 0.3.10 → 0.3.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1084951747e498f315643e3fa998378083f5890138f6d99f5a63a6fdb94c97bc
4
- data.tar.gz: 9ab31db058490a30b788b26c9d77b1b6841cc00a3fa35e5662bab070d202ba24
3
+ metadata.gz: b051569d86c70eaf117260fdc77f1926eb7c0bdf1141614903ac02f4bd834e6f
4
+ data.tar.gz: 3d7f8e02b966002399f23faba75559561827e080d13257da36f219cef2019464
5
5
  SHA512:
6
- metadata.gz: 3765ab31ba7197567363e71e40be4bfef74826c0cc49ab117d274ab31ce2d9905f4acba4ea8e1b60d991ecf7bf67711d3038fce94e3d00d44fd5f39da1065dc5
7
- data.tar.gz: 5f45504b86351f2905fa6201ea9887cb79d06268fda40f93ca985928db7428087774d2c34127d56d8c364b523d40277d7d6f6d4e7c8441289c3d00fe088f2c3b
6
+ metadata.gz: 7076466bc502788b935e4fa239f44624a27c0a066c6b78be76af798efaa1181720710cd0b796b67a5a1003aac1d5b070739942a7cbed4b8daa0fe87b0c45bf01
7
+ data.tar.gz: 272af18823441bc12f778213d9c2589e7f35b0001f349b72b8df47ac0ae2d9f65aa8c30e3088aadc78c774b479ceed72a474ccdd762c6486f4db99c447dfb746
@@ -17,6 +17,37 @@ module SchwabRb
17
17
 
18
18
  class RedirectServerExitedError < StandardError; end
19
19
 
20
+ class OS
21
+ def self.windows?
22
+ (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
23
+ end
24
+
25
+ def self.mac?
26
+ (/darwin/ =~ RUBY_PLATFORM) != nil
27
+ end
28
+
29
+ def self.unix?
30
+ !windows?
31
+ end
32
+
33
+ def self.linux?
34
+ unix? && !mac?
35
+ end
36
+
37
+ def self.open_cmd
38
+ return "open" if mac?
39
+ return %w[start msedge] if windows?
40
+
41
+ "xdg-open"
42
+ end
43
+ end
44
+
45
+ class BrowserLauncher
46
+ def self.open(command)
47
+ `#{command.join(" ")}`
48
+ end
49
+ end
50
+
20
51
  # class TokenExchangeError < StandardError
21
52
  # def initialize(msg)
22
53
  # super(msg)
@@ -100,7 +131,7 @@ module SchwabRb
100
131
  gets
101
132
  end
102
133
 
103
- `open "#{auth_context.authorization_url}}"`
134
+ open_browser(requested_browser, auth_context.authorization_url)
104
135
 
105
136
  timeout_time = Time.now + callback_timeout
106
137
  received_url = nil
@@ -127,6 +158,17 @@ module SchwabRb
127
158
  end
128
159
  end
129
160
 
161
+ def self.open_browser(browser, url, browser_launcher: BrowserLauncher)
162
+ open_args = Array(OS.open_cmd)
163
+ if !browser.nil? && !browser.strip.empty? && OS.mac?
164
+ open_args << "-a"
165
+ open_args << browser.gsub(" ", "\\ ")
166
+ end
167
+ open_args << %("#{url}")
168
+
169
+ browser_launcher.open open_args
170
+ end
171
+
130
172
  def self.create_ssl_certificate
131
173
  key = OpenSSL::PKey::RSA.new(2048)
132
174
  cert = OpenSSL::X509::Certificate.new
@@ -50,7 +50,7 @@ module SchwabRb
50
50
  end_timestamp = (end_date.to_time + 24 * 60 * 60 - 1).to_i * 1000
51
51
 
52
52
  @candles.select do |candle|
53
- candle.datetime >= start_timestamp && candle.datetime <= end_timestamp
53
+ candle.datetime_ms >= start_timestamp && candle.datetime_ms <= end_timestamp
54
54
  end
55
55
  end
56
56
 
@@ -104,7 +104,7 @@ module SchwabRb
104
104
  include Enumerable
105
105
 
106
106
  class Candle
107
- attr_reader :open, :high, :low, :close, :volume, :datetime
107
+ attr_reader :open, :high, :low, :close, :volume, :datetime_ms
108
108
 
109
109
  def initialize(data)
110
110
  # Convert string keys to symbols if needed
@@ -114,7 +114,7 @@ module SchwabRb
114
114
  @low = data[:low]
115
115
  @close = data[:close]
116
116
  @volume = data[:volume]
117
- @datetime = data[:datetime]
117
+ @datetime_ms = data[:datetime]
118
118
  end
119
119
 
120
120
  def to_h
@@ -124,16 +124,16 @@ module SchwabRb
124
124
  low: @low,
125
125
  close: @close,
126
126
  volume: @volume,
127
- datetime: @datetime
127
+ datetime: @datetime_ms
128
128
  }
129
129
  end
130
130
 
131
- def date_time
132
- Time.at(@datetime / 1000.0) if @datetime
131
+ def datetime
132
+ Time.at(@datetime_ms / 1000.0) if @datetime_ms
133
133
  end
134
134
 
135
135
  def date
136
- date_time&.to_date
136
+ datetime&.to_date
137
137
  end
138
138
 
139
139
  def price_change
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SchwabRb
4
- VERSION = "0.3.10"
4
+ VERSION = "0.3.12"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schwab_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Platta
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-08-29 00:00:00.000000000 Z
10
+ date: 2025-09-16 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: async