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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d6b956c73badfbaeb9920f1df08838ebd17d791cd7abc46a8fd28087e528264
4
- data.tar.gz: ce006b39ffa6bf2e8ddd5c6cd473ea8d429e3c881a177a44d6c13c3cc5c24865
3
+ metadata.gz: 64a39923d3abb5be3ce45f0b4035d4b4f44b479a179637cabbd1f33d75b95fd0
4
+ data.tar.gz: 6e944db43e109c73b98170887ce7ea6fdd29d1585b5df8f03c0aab98b58f0b08
5
5
  SHA512:
6
- metadata.gz: f6c8fb2fe24dace721dbdb81aa27a4dccf9bb13cf2e97d2f0ffbaa916fbdb56ae880338c91260bd21b7e3cc448434490244ea117455dc91a93d977bc98cf9eaf
7
- data.tar.gz: da2d455f1645e556ef0e483381173d423409c3422b7ccaceed373b67d4440a588d8006c2fb94120972ff4d65b9c625bf4302628e79e1dcb3b51d8c182c444369
6
+ metadata.gz: ce7092e42848ecfde557ef90276492930bf987b22f891600f3bf113a577a930ad8c6fa8a5bd3da418a566823189f1f3bab45b5414de60ec190849ff1ea9ca2b9
7
+ data.tar.gz: 1d1793286540a735917f359edd5b2e32049282a871a5e33e9b834e61ca4dad64184676f4570a3500dcf82f461bd5edf9251f668161fc86729e638843c384bdbf
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ ruby '2.5.5'
6
6
  gem 'ruby-enum'
7
7
 
8
8
  gem 'httparty'
9
- # gem 'redis'
9
+ gem 'redis'
10
10
  gem 'oj'
11
11
 
12
12
  group :development do
@@ -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
@@ -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
- response = make_request(url_path(symbol), params.merge(fmt: 'json'))
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
- unless response.success?
10
- raise ArgumentError, "Error fetching end of day data for #{symbol}"
17
+ EodRedis::Service.set(
18
+ redis_key(symbol),
19
+ response.parsed_response
20
+ )
11
21
  end
12
22
 
13
- response.parsed_response
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
- response = make_request(url_path(symbol))
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
- unless response.success?
12
- raise ArgumentError, "Error fetching fundamentals data for #{symbol}"
17
+ EodRedis::Service.set(
18
+ redis_key(symbol),
19
+ response.parsed_response
20
+ )
13
21
  end
14
22
 
15
- response.parsed_response
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
@@ -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
- response = make_request(url_path(underlying), params(expiry))
22
-
23
- unless response.success?
24
- raise ArgumentError, "Error fetching options data for #{symbol}"
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
- contracts = response.parsed_response
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'sensei_eod_utils'
5
- s.version = '0.0.31'
5
+ s.version = '0.0.32'
6
6
  s.date = '2019-12-20'
7
7
  s.summary = 'Sensei trader utility functions and Eod api facade'
8
8
  s.authors = ['Nishant Shah']
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.31
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