sensei_eod_utils 0.0.31 → 0.0.32
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/Gemfile +1 -1
- data/lib/cache/redis.rb +23 -0
- data/lib/eod_facade/eod.rb +18 -4
- data/lib/eod_facade/fundamentals.rb +16 -4
- data/lib/eod_facade/options.rb +17 -9
- data/sensei_eod_utils.gemspec +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64a39923d3abb5be3ce45f0b4035d4b4f44b479a179637cabbd1f33d75b95fd0
|
4
|
+
data.tar.gz: 6e944db43e109c73b98170887ce7ea6fdd29d1585b5df8f03c0aab98b58f0b08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce7092e42848ecfde557ef90276492930bf987b22f891600f3bf113a577a930ad8c6fa8a5bd3da418a566823189f1f3bab45b5414de60ec190849ff1ea9ca2b9
|
7
|
+
data.tar.gz: 1d1793286540a735917f359edd5b2e32049282a871a5e33e9b834e61ca4dad64184676f4570a3500dcf82f461bd5edf9251f668161fc86729e638843c384bdbf
|
data/Gemfile
CHANGED
data/lib/cache/redis.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'redis'
|
4
|
+
|
5
|
+
module Cache
|
6
|
+
class Redis
|
7
|
+
class << self
|
8
|
+
def set(key, value, expiry = 3600)
|
9
|
+
redis.set(key, value, ex: expiry)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(key)
|
13
|
+
redis.get(key)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def redis
|
19
|
+
@redis ||= Redis.new(url: ENV['REDIS_URL'])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/eod_facade/eod.rb
CHANGED
@@ -1,16 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'oj'
|
4
|
+
require_relative '../cache/redis.rb'
|
5
|
+
|
3
6
|
module EodFacade
|
4
7
|
class Eod < ::EodFacade::Base
|
5
8
|
class << self
|
6
9
|
def call(symbol, params = {})
|
7
|
-
|
10
|
+
unless Cache::Redis.get(redis_key(symbol))
|
11
|
+
response = make_request(url_path(symbol), params.merge(fmt: 'json'))
|
12
|
+
|
13
|
+
unless response.success?
|
14
|
+
raise ArgumentError, "Error fetching end of day data for #{symbol}"
|
15
|
+
end
|
8
16
|
|
9
|
-
|
10
|
-
|
17
|
+
EodRedis::Service.set(
|
18
|
+
redis_key(symbol),
|
19
|
+
response.parsed_response
|
20
|
+
)
|
11
21
|
end
|
12
22
|
|
13
|
-
|
23
|
+
Oj.load(Cache::Redis.get(redis_key(symbol)))
|
14
24
|
end
|
15
25
|
|
16
26
|
private
|
@@ -18,6 +28,10 @@ module EodFacade
|
|
18
28
|
def url_path(symbol)
|
19
29
|
"/eod/#{symbol}"
|
20
30
|
end
|
31
|
+
|
32
|
+
def redis_key(sybmol)
|
33
|
+
"#{symbol}_eod"
|
34
|
+
end
|
21
35
|
end
|
22
36
|
end
|
23
37
|
end
|
@@ -1,18 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'oj'
|
4
|
+
require_relative '../cache/redis.rb'
|
4
5
|
|
5
6
|
module EodFacade
|
6
7
|
class Fundamentals < ::EodFacade::Base
|
7
8
|
class << self
|
8
9
|
def call(symbol)
|
9
|
-
|
10
|
+
unless Cache::Redis.get(redis_key(symbol))
|
11
|
+
response = make_request(url_path(symbol))
|
12
|
+
|
13
|
+
unless response.success?
|
14
|
+
raise ArgumentError, "Error fetching fundamentals data for #{symbol}"
|
15
|
+
end
|
10
16
|
|
11
|
-
|
12
|
-
|
17
|
+
EodRedis::Service.set(
|
18
|
+
redis_key(symbol),
|
19
|
+
response.parsed_response
|
20
|
+
)
|
13
21
|
end
|
14
22
|
|
15
|
-
|
23
|
+
Oj.load(Cache::Redis.get(redis_key(symbol)))
|
16
24
|
end
|
17
25
|
|
18
26
|
private
|
@@ -20,6 +28,10 @@ module EodFacade
|
|
20
28
|
def url_path(symbol)
|
21
29
|
"/fundamentals/#{symbol}"
|
22
30
|
end
|
31
|
+
|
32
|
+
def redis_key(sybmol)
|
33
|
+
"#{symbol}_fundamentals"
|
34
|
+
end
|
23
35
|
end
|
24
36
|
end
|
25
37
|
end
|
data/lib/eod_facade/options.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'oj'
|
4
|
+
require_relative '../cache/redis.rb'
|
4
5
|
|
5
6
|
module EodFacade
|
6
7
|
class Options < ::EodFacade::Base
|
7
8
|
class << self
|
8
9
|
def call(symbol)
|
9
|
-
# unless EodServices::InstrumentType.option?(symbol)
|
10
|
-
# raise ArgumentError, "Option contract #{symbol} not found or is invalid"
|
11
|
-
# end
|
12
|
-
|
13
10
|
underlying = EodServices::Contract.underlying_symbol(symbol)
|
14
11
|
expiry = EodServices::Contract.contract_expiry(symbol)
|
15
12
|
option_type = contract_type(symbol)
|
@@ -18,13 +15,20 @@ module EodFacade
|
|
18
15
|
raise ArgumentError, "Invalid expiration date for option #{symbol}"
|
19
16
|
end
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
unless Cache::Redis.get(redis_key(underlying, expiry))
|
19
|
+
response = make_request(url_path(underlying))
|
20
|
+
|
21
|
+
unless response.success?
|
22
|
+
raise ArgumentError, "Error fetching fundamentals data for #{symbol}"
|
23
|
+
end
|
24
|
+
|
25
|
+
EodRedis::Service.set(
|
26
|
+
redis_key(symbol),
|
27
|
+
response.parsed_response
|
28
|
+
)
|
25
29
|
end
|
26
30
|
|
27
|
-
|
31
|
+
Oj.load(Cache::Redis.get(redis_key(underlying, expiry)))
|
28
32
|
|
29
33
|
contract_hash(
|
30
34
|
symbol: symbol,
|
@@ -71,6 +75,10 @@ module EodFacade
|
|
71
75
|
'STOCK'
|
72
76
|
end
|
73
77
|
end
|
78
|
+
|
79
|
+
def redis_key(underlying, expiry)
|
80
|
+
"#{underlying}_#{expiry.to_s}_options"
|
81
|
+
end
|
74
82
|
end
|
75
83
|
end
|
76
84
|
end
|
data/sensei_eod_utils.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensei_eod_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.32
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nishant Shah
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- Gemfile
|
64
64
|
- Gemfile.lock
|
65
65
|
- README.md
|
66
|
+
- lib/cache/redis.rb
|
66
67
|
- lib/eod_facade/base.rb
|
67
68
|
- lib/eod_facade/constants.rb
|
68
69
|
- lib/eod_facade/eod.rb
|