eppo-server-sdk 0.0.0 → 0.0.1

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: ce6db52c824656217a079b75231b2749b10bbbd656bda249e2f103666b173acb
4
- data.tar.gz: 4629ce299c56cbcbfe342e7572803c935266172b376ef1c8aa1eac8f0bb8074b
3
+ metadata.gz: e8284b35a5a7db0cb0077b06225dcc42be129dd56e7993099834fc177135df3e
4
+ data.tar.gz: c5f7782b4949f71d5fff43c69e29aeb96f4fd0da31e8ba175ae58901761b1a18
5
5
  SHA512:
6
- metadata.gz: 29de3064e5d780257e0e883295a6101b86e321ba6203dcbcc21e46192cc853156faab52031782b323be2cf37fe6e045345a5099acdb3ead7f6383fbcf5396f2c
7
- data.tar.gz: c3a669f35584ecac1b4f12e4796b61de972bb2f117cfd95e5cd3c693fb9f53af3bf232d9800a3a519245408576978037371394ff4b9931655850f38b80e8f0bb
6
+ metadata.gz: 204d6c5ceb800006f5dcef571ff1884e7af216a817ed78fc6665966b7a91a8a8370730f27af20ab3bfede600bcf9d41ab7f032cc397cd9ac28faaf4991088c99
7
+ data.tar.gz: d72a240a9fcb8af2caa2ab1487ae1cdbfc2ddb4f58acd780502d32b6e48eae9ffcf9d9b28296ac00ffdd5cf47f24425a9922ad4d3f0db467f036c91734e81988
data/lib/client.rb CHANGED
@@ -3,11 +3,11 @@
3
3
  require 'singleton'
4
4
  require 'time'
5
5
 
6
- require 'validation'
6
+ require 'constants'
7
+ require 'custom_errors'
7
8
  require 'rules'
8
9
  require 'shard'
9
- require 'sdk_logger'
10
- require 'custom_errors'
10
+ require 'validation'
11
11
 
12
12
  module EppoClient
13
13
  # The main client singleton
@@ -20,7 +20,14 @@ module EppoClient
20
20
  end
21
21
 
22
22
  # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
23
- def get_assignment(subject_key, flag_or_experiment_key, subject_attributes = {})
23
+ def get_assignment(
24
+ subject_key,
25
+ flag_or_experiment_key,
26
+ subject_attributes = {},
27
+ log_level = EppoClient::DEFAULT_LOGGER_LEVEL
28
+ )
29
+ logger = Logger.new($stdout)
30
+ logger.level = log_level
24
31
  EppoClient.validate_not_blank('subject_key', subject_key)
25
32
  EppoClient.validate_not_blank('flag_or_experiment_key', flag_or_experiment_key)
26
33
  experiment_config = @config_requestor.get_configuration(flag_or_experiment_key)
@@ -28,7 +35,7 @@ module EppoClient
28
35
  return override unless override.nil?
29
36
 
30
37
  if experiment_config.nil? || experiment_config.enabled == false
31
- EppoClient.logger('out').info(
38
+ logger.debug(
32
39
  "[Eppo SDK] No assigned variation. No active experiment or flag for key: #{flag_or_experiment_key}"
33
40
  )
34
41
  return nil
@@ -36,7 +43,7 @@ module EppoClient
36
43
 
37
44
  matched_rule = EppoClient.find_matching_rule(subject_attributes, experiment_config.rules)
38
45
  if matched_rule.nil?
39
- EppoClient.logger('out').info(
46
+ logger.debug(
40
47
  "[Eppo SDK] No assigned variation. Subject attributes do not match targeting rules: #{subject_attributes}"
41
48
  )
42
49
  return nil
@@ -49,7 +56,7 @@ module EppoClient
49
56
  experiment_config.subject_shards,
50
57
  allocation.percent_exposure
51
58
  )
52
- EppoClient.logger('out').info(
59
+ logger.debug(
53
60
  '[Eppo SDK] No assigned variation. Subject is not part of experiment sample population'
54
61
  )
55
62
  return nil
@@ -71,7 +78,7 @@ module EppoClient
71
78
  rescue EppoClient::AssignmentLoggerError => e
72
79
  # This error means that log_assignment was not set up. This is okay to ignore.
73
80
  rescue StandardError => e
74
- EppoClient.logger('err').info("[Eppo SDK] Error logging assignment event: #{e}")
81
+ logger.error("[Eppo SDK] Error logging assignment event: #{e}")
75
82
  end
76
83
 
77
84
  assigned_variation
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'sdk_logger'
4
3
  require 'custom_errors'
5
4
  require 'constants'
6
5
 
@@ -89,7 +88,7 @@ module EppoClient
89
88
  end
90
89
  @config_store.assign_configurations(configs)
91
90
  rescue EppoClient::HttpRequestError => e
92
- EppoClient.logger('err').error("Error retrieving assignment configurations: #{e}")
91
+ Logger.new($stdout).error("Error retrieving assignment configurations: #{e}")
93
92
  end
94
93
  configs
95
94
  end
data/lib/constants.rb CHANGED
@@ -1,6 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'logger'
4
+
3
5
  module EppoClient
6
+ # default level for logging
7
+ DEFAULT_LOGGER_LEVEL = Logger::INFO
8
+
4
9
  # configuration cache constants
5
10
  MAX_CACHE_ENTRIES = 1000 # arbitrary; the caching library requires a max limit
6
11
 
data/lib/eppo_client.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'parse_gemspec'
4
+
3
5
  require 'assignment_logger'
4
6
  require 'http_client'
5
7
  require 'poller'
@@ -11,8 +13,6 @@ require 'configuration_store'
11
13
 
12
14
  # This module scopes all the client SDK's classes and functions
13
15
  module EppoClient
14
- @sdk_version = '1.1.1'
15
-
16
16
  # rubocop:disable Metrics/MethodLength
17
17
  def initialize_client(config_requestor, assignment_logger)
18
18
  client = EppoClient::Client.instance
@@ -29,9 +29,11 @@ module EppoClient
29
29
  end
30
30
  # rubocop:enable Metrics/MethodLength
31
31
 
32
+ # rubocop:disable Metrics/MethodLength
32
33
  def init(config)
33
34
  config.validate
34
- sdk_params = EppoClient::SdkParams.new(config.api_key, 'ruby', @sdk_version)
35
+ sdk_version = ParseGemspec::Specification.load('eppo-server-sdk.gemspec').to_hash_object[:version]
36
+ sdk_params = EppoClient::SdkParams.new(config.api_key, 'ruby', sdk_version)
35
37
  http_client = EppoClient::HttpClient.new(config.base_url, sdk_params.formatted)
36
38
  config_store = EppoClient::ConfigurationStore.new(EppoClient::MAX_CACHE_ENTRIES)
37
39
  config_store.lock.with_write_lock do
@@ -41,6 +43,7 @@ module EppoClient
41
43
  )
42
44
  end
43
45
  end
46
+ # rubocop:enable Metrics/MethodLength
44
47
 
45
48
  module_function :init, :initialize_client
46
49
  end
data/lib/poller.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'concurrent/atom'
4
- require 'sdk_logger'
5
4
 
6
5
  # The poller
7
6
  module EppoClient
@@ -34,7 +33,7 @@ module EppoClient
34
33
  begin
35
34
  @callback.call
36
35
  rescue StandardError => e
37
- EppoClient.logger('err').error("Unexpected error running poll task: #{e}")
36
+ Logger.new($stdout).error("Unexpected error running poll task: #{e}")
38
37
  break
39
38
  end
40
39
  _wait_for_interval
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eppo-server-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eppo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-23 00:00:00.000000000 Z
11
+ date: 2023-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -70,6 +70,26 @@ dependencies:
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
72
  version: 2.0.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: parse_gemspec
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.0'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.0
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.0.0
73
93
  - !ruby/object:Gem::Dependency
74
94
  name: rake
75
95
  requirement: !ruby/object:Gem::Requirement
@@ -162,13 +182,17 @@ files:
162
182
  - lib/lru_cache.rb
163
183
  - lib/poller.rb
164
184
  - lib/rules.rb
165
- - lib/sdk_logger.rb
166
185
  - lib/shard.rb
167
186
  - lib/validation.rb
168
187
  homepage: https://github.com/Eppo-exp/ruby-sdk
169
188
  licenses:
170
189
  - MIT
171
- metadata: {}
190
+ metadata:
191
+ bug_tracker_uri: https://github.com/Eppo-exp/ruby-sdk/issues
192
+ documentation_uri: https://docs.geteppo.com/feature-flags/sdks/server-sdks/ruby/
193
+ homepage_uri: https://geteppo.com/
194
+ source_code_uri: https://github.com/Eppo-exp/ruby-sdk
195
+ wiki_uri: https://github.com/Eppo-exp/ruby-sdk/wiki
172
196
  post_install_message:
173
197
  rdoc_options: []
174
198
  require_paths:
data/lib/sdk_logger.rb DELETED
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
-
5
- # The helper module for logging
6
- module EppoClient
7
- @stdout_logger = Logger.new($stdout)
8
- @stderr_logger = Logger.new($stderr)
9
-
10
- def self.logger(type)
11
- case type
12
- when 'out'
13
- @stdout_logger
14
- when 'err'
15
- @stderr_logger
16
- else
17
- @stderr_logger.error("[Eppo SDK] Invalid logger type: #{type}")
18
- end
19
- end
20
- end