flagsmith 3.0.0 → 3.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: f75b8801ce9af235343975f0e7ded1e3d6fa79544ffccc94e9052a1293143cfb
4
- data.tar.gz: 5fb178bb71c4fa72207e5843fcbc6d2778285e85be2f4138e19f9822038d68c8
3
+ metadata.gz: 963916124a96866380ffb9defdda64421c2205e28f46a2dfe0fdecbb1c068989
4
+ data.tar.gz: 97ecf1f596db52665c0c69d46df178ab47223c7eede56e6a2c2da222b2d760e2
5
5
  SHA512:
6
- metadata.gz: 17306e034862b4b66996edb1bed6f3744a15e74dcc283a10630b3c25dd6dde1a8ed80259d24169d167030af6e264f5da8df9141c5c8790668596e29441819ab1
7
- data.tar.gz: d46975cd909e97f08c0f81f15b4d265fe11c9762a8f4558701af380874e338ee3d101d5a05be68264ca5f53861290250046ea8aa3e6ae3b374421b6c7c7d35a2
6
+ metadata.gz: 73dd7ed243d419f59259c04edc73fde2e8a6bd915da45e2ac2db1c5ff802771e1ab59669a718f0e0af36cf2ff3f33206625785a52268e50fdc96cc9440537027
7
+ data.tar.gz: 33248a4a9343cb15898d4db5821260f83c1d3ec4fed858cb7adbf612e6c0c355ccbe1e68b4e1f0861fe5fdd72d48ce9713bee4b12127d9bfb5d89e6a3b812888
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- flagsmith (3.0.0)
4
+ flagsmith (3.0.1)
5
5
  faraday
6
6
  faraday-retry
7
7
  faraday_middleware
@@ -29,8 +29,8 @@ GEM
29
29
  faraday-em_synchrony (1.0.0)
30
30
  faraday-excon (1.1.0)
31
31
  faraday-httpclient (1.0.1)
32
- faraday-multipart (1.0.3)
33
- multipart-post (>= 1.2, < 3)
32
+ faraday-multipart (1.0.4)
33
+ multipart-post (~> 2)
34
34
  faraday-net_http (1.0.1)
35
35
  faraday-net_http_persistent (1.2.0)
36
36
  faraday-patron (1.0.0)
@@ -40,7 +40,7 @@ GEM
40
40
  faraday (~> 1.0)
41
41
  gem-release (2.2.0)
42
42
  method_source (1.0.0)
43
- multipart-post (2.1.1)
43
+ multipart-post (2.2.0)
44
44
  parallel (1.20.1)
45
45
  parser (3.0.0.0)
46
46
  ast (~> 2.4.1)
@@ -2,8 +2,6 @@ $flagsmith = Flagsmith::Client.new(
2
2
  enable_local_evaluation: true,
3
3
  environment_refresh_interval_seconds: 60,
4
4
  default_flag_handler: lambda { |feature_name|
5
- Flagsmith::Flag.new(
6
- feature_name: feature_name, enabled: false, value: {}.to_json, feature_id: nil
7
- )
5
+ Flagsmith::Flags::DefaultFlag.new(enabled: false, value: {}.to_json)
8
6
  }
9
7
  )
@@ -4,7 +4,79 @@ module Flagsmith
4
4
  module Flags
5
5
  class NotFound < StandardError; end
6
6
 
7
- # Flag Collection
7
+ class BaseFlag
8
+ include Comparable
9
+
10
+ attr_reader :enabled, :value, :default
11
+
12
+ def initialize(enabled:, value:, default:)
13
+ @enabled = enabled
14
+ @value = value
15
+ @default = default
16
+ end
17
+
18
+ def enabled?
19
+ enabled
20
+ end
21
+
22
+ alias is_default default
23
+ end
24
+
25
+ class DefaultFlag < BaseFlag
26
+ def initialize(enabled:, value:)
27
+ super(enabled: enabled, value: value, default: true)
28
+ end
29
+ end
30
+
31
+ class Flag < BaseFlag
32
+
33
+ attr_reader :feature_name, :feature_id
34
+
35
+ def initialize(feature_name:, enabled:, value:, feature_id:)
36
+ super(enabled: enabled, value: value, default: false)
37
+ @feature_name = feature_name
38
+ @feature_id = feature_id
39
+ end
40
+
41
+ def <=>(other)
42
+ feature_name <=> other.feature_name
43
+ end
44
+
45
+ def [](key)
46
+ to_h[key]
47
+ end
48
+
49
+ def to_h
50
+ {
51
+ feature_id: feature_id,
52
+ feature_name: feature_name,
53
+ value: value,
54
+ enabled: enabled,
55
+ default: default
56
+ }
57
+ end
58
+
59
+ class << self
60
+ def from_feature_state_model(feature_state_model, identity_id)
61
+ new(
62
+ enabled: feature_state_model.enabled,
63
+ value: feature_state_model.get_value(identity_id),
64
+ feature_name: feature_state_model.feature.name,
65
+ feature_id: feature_state_model.feature.id
66
+ )
67
+ end
68
+
69
+ def from_api(json_flag_data)
70
+ new(
71
+ enabled: json_flag_data[:enabled],
72
+ value: json_flag_data[:feature_state_value] || json_flag_data[:value],
73
+ feature_name: json_flag_data.dig(:feature, :name),
74
+ feature_id: json_flag_data.dig(:feature, :id)
75
+ )
76
+ end
77
+ end
78
+ end
79
+
8
80
  class Collection
9
81
  include Enumerable
10
82
 
@@ -75,7 +147,7 @@ module Flagsmith
75
147
  def from_api(json_data, **args)
76
148
  to_flag_object = lambda { |json_flag, acc|
77
149
  acc[normalize_key(json_flag.dig(:feature, :name))] =
78
- Flagsmith::Flag.from_api(json_flag)
150
+ Flagsmith::Flags::Flag.from_api(json_flag)
79
151
  }
80
152
 
81
153
  new(
@@ -87,7 +159,7 @@ module Flagsmith
87
159
  def from_feature_state_models(feature_states, identity_id: nil, **args)
88
160
  to_flag_object = lambda { |feature_state, acc|
89
161
  acc[normalize_key(feature_state.feature.name)] =
90
- Flagsmith::Flag.from_feature_state_model(feature_state, identity_id)
162
+ Flagsmith::Flags::Flag.from_feature_state_model(feature_state, identity_id)
91
163
  }
92
164
 
93
165
  new(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Flagsmith
4
- VERSION = '3.0.0'
4
+ VERSION = '3.0.1'
5
5
  end
data/lib/flagsmith.rb CHANGED
@@ -14,8 +14,7 @@ require 'flagsmith/sdk/config'
14
14
  require 'flagsmith/sdk/errors'
15
15
  require 'flagsmith/sdk/intervals'
16
16
  require 'flagsmith/sdk/pooling_manager'
17
- require 'flagsmith/sdk/models/flag'
18
- require 'flagsmith/sdk/models/flags/collection'
17
+ require 'flagsmith/sdk/models/flags'
19
18
  require 'flagsmith/sdk/instance_methods'
20
19
 
21
20
  require 'flagsmith/engine/core'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flagsmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Stuart
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-06-07 00:00:00.000000000 Z
12
+ date: 2022-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -222,8 +222,7 @@ files:
222
222
  - lib/flagsmith/sdk/errors.rb
223
223
  - lib/flagsmith/sdk/instance_methods.rb
224
224
  - lib/flagsmith/sdk/intervals.rb
225
- - lib/flagsmith/sdk/models/flag.rb
226
- - lib/flagsmith/sdk/models/flags/collection.rb
225
+ - lib/flagsmith/sdk/models/flags.rb
227
226
  - lib/flagsmith/sdk/pooling_manager.rb
228
227
  - lib/flagsmith/version.rb
229
228
  homepage: https://flagsmith.com
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Flagsmith
4
- # Flag object
5
- class Flag
6
- include Comparable
7
-
8
- attr_reader :enabled, :value, :default, :feature_name, :feature_id
9
-
10
- def initialize(feature_name:, enabled:, value:, feature_id:, default: false)
11
- @feature_name = feature_name
12
- @feature_id = feature_id
13
- @enabled = enabled
14
- @value = value
15
- @default = default
16
- end
17
-
18
- def enabled?
19
- @enabled
20
- end
21
-
22
- alias is_default default
23
-
24
- def <=>(other)
25
- feature_name <=> other.feature_name
26
- end
27
-
28
- def [](key)
29
- to_h[key]
30
- end
31
-
32
- def to_h
33
- {
34
- feature_id: feature_id,
35
- feature_name: feature_name,
36
- value: value,
37
- enabled: enabled,
38
- default: default
39
- }
40
- end
41
-
42
- class << self
43
- def from_feature_state_model(feature_state_model, identity_id)
44
- new(
45
- enabled: feature_state_model.enabled,
46
- value: feature_state_model.get_value(identity_id),
47
- feature_name: feature_state_model.feature.name,
48
- feature_id: feature_state_model.feature.id
49
- )
50
- end
51
-
52
- def from_api(json_flag_data)
53
- new(
54
- enabled: json_flag_data[:enabled],
55
- value: json_flag_data[:feature_state_value] || json_flag_data[:value],
56
- feature_name: json_flag_data.dig(:feature, :name),
57
- feature_id: json_flag_data.dig(:feature, :id)
58
- )
59
- end
60
- end
61
- end
62
- end