eppo-server-sdk 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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