Skip to content

Commit 74c3cad

Browse files
Merge pull request #15 from Flagsmith/release/3.0.1
Release 3.0.1
2 parents bb951c8 + 9aceedb commit 74c3cad

File tree

7 files changed

+83
-76
lines changed

7 files changed

+83
-76
lines changed

Gemfile.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
flagsmith (3.0.0)
4+
flagsmith (3.0.1)
55
faraday
66
faraday-retry
77
faraday_middleware
@@ -29,8 +29,8 @@ GEM
2929
faraday-em_synchrony (1.0.0)
3030
faraday-excon (1.1.0)
3131
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)
3434
faraday-net_http (1.0.1)
3535
faraday-net_http_persistent (1.2.0)
3636
faraday-patron (1.0.0)
@@ -40,7 +40,7 @@ GEM
4040
faraday (~> 1.0)
4141
gem-release (2.2.0)
4242
method_source (1.0.0)
43-
multipart-post (2.1.1)
43+
multipart-post (2.2.0)
4444
parallel (1.20.1)
4545
parser (3.0.0.0)
4646
ast (~> 2.4.1)

example/config/initializers/flagsmith.rb

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
enable_local_evaluation: true,
33
environment_refresh_interval_seconds: 60,
44
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)
86
}
97
)

lib/flagsmith.rb

+1-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
require 'flagsmith/sdk/errors'
1515
require 'flagsmith/sdk/intervals'
1616
require 'flagsmith/sdk/pooling_manager'
17-
require 'flagsmith/sdk/models/flag'
18-
require 'flagsmith/sdk/models/flags/collection'
17+
require 'flagsmith/sdk/models/flags'
1918
require 'flagsmith/sdk/instance_methods'
2019

2120
require 'flagsmith/engine/core'

lib/flagsmith/sdk/models/flag.rb

-62
This file was deleted.

lib/flagsmith/sdk/models/flags/collection.rb renamed to lib/flagsmith/sdk/models/flags.rb

+75-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,79 @@ module Flagsmith
44
module Flags
55
class NotFound < StandardError; end
66

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+
880
class Collection
981
include Enumerable
1082

@@ -75,7 +147,7 @@ class << self
75147
def from_api(json_data, **args)
76148
to_flag_object = lambda { |json_flag, acc|
77149
acc[normalize_key(json_flag.dig(:feature, :name))] =
78-
Flagsmith::Flag.from_api(json_flag)
150+
Flagsmith::Flags::Flag.from_api(json_flag)
79151
}
80152

81153
new(
@@ -87,7 +159,7 @@ def from_api(json_data, **args)
87159
def from_feature_state_models(feature_states, identity_id: nil, **args)
88160
to_flag_object = lambda { |feature_state, acc|
89161
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)
91163
}
92164

93165
new(

lib/flagsmith/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Flagsmith
4-
VERSION = '3.0.0'
4+
VERSION = '3.0.1'
55
end

0 commit comments

Comments
 (0)