intrinio-realtime 5.1.0 → 5.3.0
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/lib/intrinio-realtime.rb +40 -12
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f696c1e3e3db91f9218efaf3fcb490c54791debf839ff10d564c0d29ced96039
|
4
|
+
data.tar.gz: 1531abd465e870b89122bb2c4865a5cabe8ac24703b1cb77f5cd0f0045645158
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50311b794219b5c7075e358f371723faaefef1bfd0702f28094f715f1f1b030c7102eaf17dcf50beb00a894dcd7c54b9c4e5090937e638fd495785e811143fa5
|
7
|
+
data.tar.gz: 348ed82e5ae99575c8989d753229ad9a9aeabb077737690839b0d281e631e9d19262d0638b9325c8fe62566c06dc7a9d10a1be1b13451e67d80fdde3c11f6291
|
data/lib/intrinio-realtime.rb
CHANGED
@@ -18,12 +18,14 @@ module Intrinio
|
|
18
18
|
UTP = "UTP".freeze
|
19
19
|
OTC = "OTC".freeze
|
20
20
|
IEX = "IEX".freeze
|
21
|
-
|
22
|
-
|
21
|
+
CBOE_ONE = "CBOE_ONE".freeze
|
22
|
+
EQUITIES_EDGE = "EQUITIES_EDGE".freeze
|
23
|
+
PROVIDERS = [REALTIME, MANUAL, DELAYED_SIP, NASDAQ_BASIC, IEX, CBOE_ONE, EQUITIES_EDGE].freeze
|
24
|
+
SUBPROVIDERS = [NO_SUBPROVIDER, CTA_A, CTA_B, UTP, OTC, NASDAQ_BASIC, IEX, CBOE_ONE, EQUITIES_EDGE].freeze
|
23
25
|
ASK = "Ask".freeze
|
24
26
|
BID = "Bid".freeze
|
25
27
|
CLIENT_INFO_HEADER_KEY = "Client-Information".freeze
|
26
|
-
CLIENT_INFO_HEADER_VALUE = "IntrinioRealtimeRubySDKv5.
|
28
|
+
CLIENT_INFO_HEADER_VALUE = "IntrinioRealtimeRubySDKv5.3".freeze
|
27
29
|
MESSAGE_VERSION_HEADER_KEY = "UseNewEquitiesFormat".freeze
|
28
30
|
MESSAGE_VERSION_HEADER_VALUE = "v2".freeze
|
29
31
|
|
@@ -79,7 +81,14 @@ module Intrinio
|
|
79
81
|
end
|
80
82
|
|
81
83
|
def is_darkpool
|
82
|
-
|
84
|
+
case @subprovider
|
85
|
+
when CTA_A, CTA_B, UTP, OTC
|
86
|
+
@market_center == nil || @market_center == 'D' || @market_center == 'E' || @market_center == "\0" || @market_center.empty?
|
87
|
+
when NASDAQ_BASIC
|
88
|
+
@market_center == nil || @market_center == 'L' || @market_center == '2' || @market_center == "\0" || @market_center.empty?
|
89
|
+
else
|
90
|
+
false
|
91
|
+
end
|
83
92
|
end
|
84
93
|
|
85
94
|
def to_s
|
@@ -159,7 +168,7 @@ module Intrinio
|
|
159
168
|
unless @provider
|
160
169
|
@provider = REALTIME
|
161
170
|
end
|
162
|
-
raise "Provider must be 'REALTIME', 'DELAYED_SIP', 'NASDAQ_BASIC', or 'MANUAL'" unless PROVIDERS.include?(@provider)
|
171
|
+
raise "Provider must be 'IEX', 'REALTIME', 'DELAYED_SIP', 'NASDAQ_BASIC', 'CBOE_ONE', or 'EQUITIES_EDGE', or 'MANUAL'" unless PROVIDERS.include?(@provider)
|
163
172
|
|
164
173
|
@ip_address = options[:ip_address]
|
165
174
|
raise "Missing option ip_address while in MANUAL mode." if @provider == MANUAL and (@ip_address.nil? || @ip_address.empty?)
|
@@ -169,6 +178,11 @@ module Intrinio
|
|
169
178
|
@trades_only = false
|
170
179
|
end
|
171
180
|
|
181
|
+
@delayed = options[:delayed]
|
182
|
+
if @delayed.nil?
|
183
|
+
@delayed = false
|
184
|
+
end
|
185
|
+
|
172
186
|
@thread_quantity = options[:threads]
|
173
187
|
unless @thread_quantity
|
174
188
|
@thread_quantity = 4
|
@@ -315,6 +329,10 @@ module Intrinio
|
|
315
329
|
NASDAQ_BASIC
|
316
330
|
when 6
|
317
331
|
IEX
|
332
|
+
when 7
|
333
|
+
CBOE_ONE
|
334
|
+
when 8
|
335
|
+
EQUITIES_EDGE
|
318
336
|
else
|
319
337
|
IEX
|
320
338
|
end
|
@@ -375,7 +393,9 @@ module Intrinio
|
|
375
393
|
pop = nil
|
376
394
|
data = nil
|
377
395
|
pop = @messages.deq
|
378
|
-
|
396
|
+
if pop.nil? || pop.empty?
|
397
|
+
sleep(0.1)
|
398
|
+
else
|
379
399
|
begin
|
380
400
|
data = pop.unpack('C*')
|
381
401
|
rescue StandardError => ex
|
@@ -390,7 +410,6 @@ module Intrinio
|
|
390
410
|
# From there, check the type and symbol length at index 0 of each chunk to know how many bytes each message has.
|
391
411
|
count.times {start_index = handle_message(data, start_index)}
|
392
412
|
end
|
393
|
-
if pop.nil? then sleep(0.1) end
|
394
413
|
rescue StandardError => e
|
395
414
|
me.send :error, "Error handling message from queue: #{e} #{pop} : #{data} ; count: #{count} ; start index: #{start_index}"
|
396
415
|
rescue Exception => e
|
@@ -427,8 +446,11 @@ module Intrinio
|
|
427
446
|
|
428
447
|
case @provider
|
429
448
|
when REALTIME then url = "https://realtime-mx.intrinio.com/auth"
|
449
|
+
when IEX then url = "https://realtime-mx.intrinio.com/auth"
|
430
450
|
when DELAYED_SIP then url = "https://realtime-delayed-sip.intrinio.com/auth"
|
431
451
|
when NASDAQ_BASIC then url = "https://realtime-nasdaq-basic.intrinio.com/auth"
|
452
|
+
when CBOE_ONE then url = "https://cboe-one.intrinio.com/auth"
|
453
|
+
when EQUITIES_EDGE then url = "https://equities-edge.intrinio.com/auth"
|
432
454
|
when MANUAL then url = "http://" + @ip_address + "/auth"
|
433
455
|
end
|
434
456
|
|
@@ -447,12 +469,18 @@ module Intrinio
|
|
447
469
|
"#{url}api_key=#{@api_key}"
|
448
470
|
end
|
449
471
|
|
450
|
-
def socket_url
|
472
|
+
def socket_url
|
473
|
+
delayed_part = @delayed ? "&delayed=true" : ""
|
474
|
+
|
451
475
|
case @provider
|
452
|
-
when REALTIME then "wss://realtime-mx.intrinio.com/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}"
|
453
|
-
when
|
454
|
-
when
|
455
|
-
when
|
476
|
+
when REALTIME then "wss://realtime-mx.intrinio.com/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}#{delayed_part}"
|
477
|
+
when IEX then "wss://realtime-mx.intrinio.com/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}#{delayed_part}"
|
478
|
+
when DELAYED_SIP then "wss://realtime-delayed-sip.intrinio.com/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}#{delayed_part}"
|
479
|
+
when NASDAQ_BASIC then "wss://realtime-nasdaq-basic.intrinio.com/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}#{delayed_part}"
|
480
|
+
when CBOE_ONE then "wss://cboe-one.intrinio.com/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}#{delayed_part}"
|
481
|
+
when EQUITIES_EDGE then "wss://equities-edge.intrinio.com/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}#{delayed_part}"
|
482
|
+
when MANUAL then "ws://" + @ip_address + "/socket/websocket?vsn=1.0.0&token=#{@token}&#{CLIENT_INFO_HEADER_KEY}=#{CLIENT_INFO_HEADER_VALUE}&#{MESSAGE_VERSION_HEADER_KEY}=#{MESSAGE_VERSION_HEADER_VALUE}#{delayed_part}"
|
483
|
+
else raise "Unknown provider"
|
456
484
|
end
|
457
485
|
end
|
458
486
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: intrinio-realtime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Intrinio
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -78,7 +78,7 @@ homepage: https://github.com/intrinio/intrinio-realtime-ruby-sdk
|
|
78
78
|
licenses:
|
79
79
|
- GPL-3.0
|
80
80
|
metadata: {}
|
81
|
-
post_install_message:
|
81
|
+
post_install_message:
|
82
82
|
rdoc_options: []
|
83
83
|
require_paths:
|
84
84
|
- lib
|
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
96
|
rubygems_version: 3.1.6
|
97
|
-
signing_key:
|
97
|
+
signing_key:
|
98
98
|
specification_version: 4
|
99
99
|
summary: Intrinio provides real-time stock prices from its Multi-Exchange feed, via
|
100
100
|
a two-way WebSocket connection.
|