prefab-cloud-ruby 0.5.1 → 0.8.0

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.
data/lib/prefab_pb.rb CHANGED
@@ -4,141 +4,215 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "prefab.ConfigServicePointer" do
8
- optional :account_id, :int64, 1
9
- optional :start_at_id, :int64, 2
10
- end
11
- add_message "prefab.ConfigDelta" do
12
- optional :id, :int64, 2
13
- optional :key, :string, 3
14
- optional :value, :message, 4, "prefab.ConfigValue"
15
- optional :created_by, :string, 5
16
- end
17
- add_message "prefab.ConfigValue" do
18
- oneof :type do
19
- optional :int, :int64, 1
20
- optional :string, :string, 2
21
- optional :bytes, :bytes, 3
22
- optional :double, :double, 4
23
- optional :bool, :bool, 5
24
- optional :feature_flag, :message, 6, "prefab.FeatureFlag"
25
- optional :limit_definition, :message, 7, "prefab.LimitDefinition"
7
+ add_file("prefab.proto", :syntax => :proto3) do
8
+ add_message "prefab.ConfigServicePointer" do
9
+ optional :project_id, :int64, 1
10
+ optional :start_at_id, :int64, 2
11
+ optional :env_key, :string, 3
12
+ end
13
+ add_message "prefab.ConfigValue" do
14
+ oneof :type do
15
+ optional :int, :int64, 1
16
+ optional :string, :string, 2
17
+ optional :bytes, :bytes, 3
18
+ optional :double, :double, 4
19
+ optional :bool, :bool, 5
20
+ optional :feature_flag, :message, 6, "prefab.FeatureFlag"
21
+ optional :limit_definition, :message, 7, "prefab.LimitDefinition"
22
+ optional :segment, :message, 8, "prefab.Segment"
23
+ end
24
+ end
25
+ add_message "prefab.NamespaceValue" do
26
+ optional :namespace, :string, 1
27
+ optional :config_value, :message, 2, "prefab.ConfigValue"
28
+ end
29
+ add_message "prefab.EnvironmentValues" do
30
+ optional :environment, :string, 1
31
+ repeated :namespace_values, :message, 2, "prefab.NamespaceValue"
32
+ optional :default, :message, 3, "prefab.ConfigValue"
33
+ end
34
+ add_message "prefab.ConfigDelta" do
35
+ optional :id, :int64, 1
36
+ optional :key, :string, 2
37
+ optional :default, :message, 3, "prefab.ConfigValue"
38
+ repeated :envs, :message, 4, "prefab.EnvironmentValues"
39
+ end
40
+ add_message "prefab.ConfigDeltas" do
41
+ repeated :deltas, :message, 1, "prefab.ConfigDelta"
42
+ end
43
+ add_message "prefab.UpsertRequest" do
44
+ optional :project_id, :int64, 1
45
+ optional :config_delta, :message, 2, "prefab.ConfigDelta"
46
+ optional :changed_by, :string, 4
47
+ end
48
+ add_message "prefab.LimitResponse" do
49
+ optional :passed, :bool, 1
50
+ optional :expires_at, :int64, 2
51
+ optional :enforced_group, :string, 3
52
+ optional :current_bucket, :int64, 4
53
+ optional :policy_group, :string, 5
54
+ optional :policy_name, :enum, 6, "prefab.LimitResponse.LimitPolicyNames"
55
+ optional :policy_limit, :int32, 7
56
+ optional :amount, :int64, 8
57
+ optional :limit_reset_at, :int64, 9
58
+ optional :safety_level, :enum, 10, "prefab.LimitDefinition.SafetyLevel"
59
+ end
60
+ add_enum "prefab.LimitResponse.LimitPolicyNames" do
61
+ value :NOT_SET, 0
62
+ value :SECONDLY_ROLLING, 1
63
+ value :MINUTELY_ROLLING, 3
64
+ value :HOURLY_ROLLING, 5
65
+ value :DAILY_ROLLING, 7
66
+ value :MONTHLY_ROLLING, 8
67
+ value :INFINITE, 9
68
+ value :YEARLY_ROLLING, 10
69
+ end
70
+ add_message "prefab.LimitRequest" do
71
+ optional :account_id, :int64, 1
72
+ optional :acquire_amount, :int32, 2
73
+ repeated :groups, :string, 3
74
+ optional :limit_combiner, :enum, 4, "prefab.LimitRequest.LimitCombiner"
75
+ optional :allow_partial_response, :bool, 5
76
+ optional :safety_level, :enum, 6, "prefab.LimitDefinition.SafetyLevel"
77
+ end
78
+ add_enum "prefab.LimitRequest.LimitCombiner" do
79
+ value :NOT_SET, 0
80
+ value :MINIMUM, 1
81
+ value :MAXIMUM, 2
82
+ end
83
+ add_message "prefab.FeatureFlagVariant" do
84
+ optional :name, :string, 5
85
+ optional :description, :string, 6
86
+ oneof :type do
87
+ optional :int, :int64, 1
88
+ optional :string, :string, 2
89
+ optional :double, :double, 3
90
+ optional :bool, :bool, 4
91
+ end
92
+ end
93
+ add_message "prefab.Criteria" do
94
+ optional :property, :string, 1
95
+ optional :operator, :enum, 2, "prefab.Criteria.CriteriaOperator"
96
+ repeated :values, :string, 3
97
+ end
98
+ add_enum "prefab.Criteria.CriteriaOperator" do
99
+ value :NOT_SET, 0
100
+ value :IN, 1
101
+ value :NOT_IN, 2
102
+ value :EQ, 3
103
+ value :IN_SEG, 4
104
+ value :NOT_IN_SEG, 5
105
+ end
106
+ add_message "prefab.Rule" do
107
+ optional :criteria, :message, 1, "prefab.Criteria"
108
+ optional :distribution, :message, 2, "prefab.VariantDistribution"
109
+ end
110
+ add_message "prefab.Segment" do
111
+ optional :name, :string, 1
112
+ optional :description, :string, 2
113
+ repeated :includes, :string, 3
114
+ repeated :excludes, :string, 4
115
+ repeated :criterion, :message, 5, "prefab.Criteria"
116
+ end
117
+ add_message "prefab.UserTarget" do
118
+ optional :variant_idx, :int32, 1
119
+ repeated :identifiers, :string, 2
120
+ end
121
+ add_message "prefab.VariantWeight" do
122
+ optional :weight, :int32, 1
123
+ optional :variant_idx, :int32, 2
124
+ end
125
+ add_message "prefab.VariantWeights" do
126
+ repeated :weights, :message, 1, "prefab.VariantWeight"
127
+ end
128
+ add_message "prefab.VariantDistribution" do
129
+ oneof :type do
130
+ optional :variant_idx, :int32, 1
131
+ optional :variant_weights, :message, 2, "prefab.VariantWeights"
132
+ end
133
+ end
134
+ add_message "prefab.FeatureFlag" do
135
+ optional :active, :bool, 1
136
+ optional :inactive_variant_idx, :int32, 2
137
+ optional :default, :message, 3, "prefab.VariantDistribution"
138
+ repeated :user_targets, :message, 4, "prefab.UserTarget"
139
+ repeated :rules, :message, 5, "prefab.Rule"
140
+ repeated :variants, :message, 6, "prefab.FeatureFlagVariant"
141
+ end
142
+ add_message "prefab.LimitDefinition" do
143
+ optional :policy_name, :enum, 2, "prefab.LimitResponse.LimitPolicyNames"
144
+ optional :limit, :int32, 3
145
+ optional :burst, :int32, 4
146
+ optional :account_id, :int64, 5
147
+ optional :last_modified, :int64, 6
148
+ optional :returnable, :bool, 7
149
+ optional :safety_level, :enum, 8, "prefab.LimitDefinition.SafetyLevel"
150
+ end
151
+ add_enum "prefab.LimitDefinition.SafetyLevel" do
152
+ value :NOT_SET, 0
153
+ value :L4_BEST_EFFORT, 4
154
+ value :L5_BOMBPROOF, 5
155
+ end
156
+ add_message "prefab.LimitDefinitions" do
157
+ repeated :definitions, :message, 1, "prefab.LimitDefinition"
158
+ end
159
+ add_message "prefab.BufferedRequest" do
160
+ optional :account_id, :int64, 1
161
+ optional :method, :string, 2
162
+ optional :uri, :string, 3
163
+ optional :body, :string, 4
164
+ repeated :limit_groups, :string, 5
165
+ optional :content_type, :string, 6
166
+ optional :fifo, :bool, 7
167
+ end
168
+ add_message "prefab.BatchRequest" do
169
+ optional :account_id, :int64, 1
170
+ optional :method, :string, 2
171
+ optional :uri, :string, 3
172
+ optional :body, :string, 4
173
+ repeated :limit_groups, :string, 5
174
+ optional :batch_template, :string, 6
175
+ optional :batch_separator, :string, 7
176
+ end
177
+ add_message "prefab.BasicResponse" do
178
+ optional :message, :string, 1
179
+ end
180
+ add_enum "prefab.OnFailure" do
181
+ value :NOT_SET, 0
182
+ value :LOG_AND_PASS, 1
183
+ value :LOG_AND_FAIL, 2
184
+ value :THROW, 3
26
185
  end
27
- end
28
- add_message "prefab.ConfigDeltas" do
29
- repeated :deltas, :message, 1, "prefab.ConfigDelta"
30
- end
31
- add_message "prefab.UpsertRequest" do
32
- optional :account_id, :int64, 1
33
- optional :config_delta, :message, 2, "prefab.ConfigDelta"
34
- optional :changed_by, :string, 4
35
- end
36
- add_message "prefab.LimitResponse" do
37
- optional :passed, :bool, 1
38
- optional :expires_at, :int64, 2
39
- optional :enforced_group, :string, 3
40
- optional :current_bucket, :int64, 4
41
- optional :policy_group, :string, 5
42
- optional :policy_name, :enum, 6, "prefab.LimitResponse.LimitPolicyNames"
43
- optional :policy_limit, :int32, 7
44
- optional :amount, :int64, 8
45
- optional :limit_reset_at, :int64, 9
46
- optional :safety_level, :enum, 10, "prefab.LimitDefinition.SafetyLevel"
47
- end
48
- add_enum "prefab.LimitResponse.LimitPolicyNames" do
49
- value :NOT_SET, 0
50
- value :SECONDLY_ROLLING, 1
51
- value :MINUTELY_ROLLING, 3
52
- value :HOURLY_ROLLING, 5
53
- value :DAILY_ROLLING, 7
54
- value :MONTHLY_ROLLING, 8
55
- value :INFINITE, 9
56
- value :YEARLY_ROLLING, 10
57
- end
58
- add_message "prefab.LimitRequest" do
59
- optional :account_id, :int64, 1
60
- optional :acquire_amount, :int32, 2
61
- repeated :groups, :string, 3
62
- optional :limit_combiner, :enum, 4, "prefab.LimitRequest.LimitCombiner"
63
- optional :allow_partial_response, :bool, 5
64
- optional :safety_level, :enum, 6, "prefab.LimitDefinition.SafetyLevel"
65
- end
66
- add_enum "prefab.LimitRequest.LimitCombiner" do
67
- value :NOT_SET, 0
68
- value :MINIMUM, 1
69
- value :MAXIMUM, 2
70
- end
71
- add_message "prefab.FeatureFlag" do
72
- optional :pct, :double, 3
73
- repeated :whitelisted, :string, 4
74
- end
75
- add_message "prefab.LimitDefinition" do
76
- optional :policy_name, :enum, 2, "prefab.LimitResponse.LimitPolicyNames"
77
- optional :limit, :int32, 3
78
- optional :burst, :int32, 4
79
- optional :account_id, :int64, 5
80
- optional :last_modified, :int64, 6
81
- optional :returnable, :bool, 7
82
- optional :safety_level, :enum, 8, "prefab.LimitDefinition.SafetyLevel"
83
- end
84
- add_enum "prefab.LimitDefinition.SafetyLevel" do
85
- value :NOT_SET, 0
86
- value :L4_BEST_EFFORT, 4
87
- value :L5_BOMBPROOF, 5
88
- end
89
- add_message "prefab.LimitDefinitions" do
90
- repeated :definitions, :message, 1, "prefab.LimitDefinition"
91
- end
92
- add_message "prefab.FeatureFlags" do
93
- repeated :flags, :message, 1, "prefab.FeatureFlag"
94
- optional :cache_expiry, :int64, 2
95
- end
96
- add_message "prefab.BufferedRequest" do
97
- optional :account_id, :int64, 1
98
- optional :method, :string, 2
99
- optional :uri, :string, 3
100
- optional :body, :string, 4
101
- repeated :limit_groups, :string, 5
102
- optional :content_type, :string, 6
103
- optional :fifo, :bool, 7
104
- end
105
- add_message "prefab.BatchRequest" do
106
- optional :account_id, :int64, 1
107
- optional :method, :string, 2
108
- optional :uri, :string, 3
109
- optional :body, :string, 4
110
- repeated :limit_groups, :string, 5
111
- optional :batch_template, :string, 6
112
- optional :batch_separator, :string, 7
113
- end
114
- add_message "prefab.BasicResponse" do
115
- optional :message, :string, 1
116
- end
117
- add_enum "prefab.OnFailure" do
118
- value :NOT_SET, 0
119
- value :LOG_AND_PASS, 1
120
- value :LOG_AND_FAIL, 2
121
- value :THROW, 3
122
186
  end
123
187
  end
124
188
 
125
189
  module Prefab
126
- ConfigServicePointer = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigServicePointer").msgclass
127
- ConfigDelta = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigDelta").msgclass
128
- ConfigValue = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigValue").msgclass
129
- ConfigDeltas = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigDeltas").msgclass
130
- UpsertRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.UpsertRequest").msgclass
131
- LimitResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitResponse").msgclass
132
- LimitResponse::LimitPolicyNames = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitResponse.LimitPolicyNames").enummodule
133
- LimitRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitRequest").msgclass
134
- LimitRequest::LimitCombiner = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitRequest.LimitCombiner").enummodule
135
- FeatureFlag = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.FeatureFlag").msgclass
136
- LimitDefinition = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitDefinition").msgclass
137
- LimitDefinition::SafetyLevel = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitDefinition.SafetyLevel").enummodule
138
- LimitDefinitions = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitDefinitions").msgclass
139
- FeatureFlags = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.FeatureFlags").msgclass
140
- BufferedRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.BufferedRequest").msgclass
141
- BatchRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.BatchRequest").msgclass
142
- BasicResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.BasicResponse").msgclass
143
- OnFailure = Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.OnFailure").enummodule
190
+ ConfigServicePointer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigServicePointer").msgclass
191
+ ConfigValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigValue").msgclass
192
+ NamespaceValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.NamespaceValue").msgclass
193
+ EnvironmentValues = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.EnvironmentValues").msgclass
194
+ ConfigDelta = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigDelta").msgclass
195
+ ConfigDeltas = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.ConfigDeltas").msgclass
196
+ UpsertRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.UpsertRequest").msgclass
197
+ LimitResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitResponse").msgclass
198
+ LimitResponse::LimitPolicyNames = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitResponse.LimitPolicyNames").enummodule
199
+ LimitRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitRequest").msgclass
200
+ LimitRequest::LimitCombiner = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitRequest.LimitCombiner").enummodule
201
+ FeatureFlagVariant = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.FeatureFlagVariant").msgclass
202
+ Criteria = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.Criteria").msgclass
203
+ Criteria::CriteriaOperator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.Criteria.CriteriaOperator").enummodule
204
+ Rule = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.Rule").msgclass
205
+ Segment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.Segment").msgclass
206
+ UserTarget = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.UserTarget").msgclass
207
+ VariantWeight = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.VariantWeight").msgclass
208
+ VariantWeights = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.VariantWeights").msgclass
209
+ VariantDistribution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.VariantDistribution").msgclass
210
+ FeatureFlag = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.FeatureFlag").msgclass
211
+ LimitDefinition = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitDefinition").msgclass
212
+ LimitDefinition::SafetyLevel = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitDefinition.SafetyLevel").enummodule
213
+ LimitDefinitions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.LimitDefinitions").msgclass
214
+ BufferedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.BufferedRequest").msgclass
215
+ BatchRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.BatchRequest").msgclass
216
+ BasicResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.BasicResponse").msgclass
217
+ OnFailure = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("prefab.OnFailure").enummodule
144
218
  end
@@ -8,13 +8,13 @@ module Prefab
8
8
  module RateLimitService
9
9
  class Service
10
10
 
11
- include GRPC::GenericService
11
+ include ::GRPC::GenericService
12
12
 
13
13
  self.marshal_class_method = :encode
14
14
  self.unmarshal_class_method = :decode
15
15
  self.service_name = 'prefab.RateLimitService'
16
16
 
17
- rpc :LimitCheck, LimitRequest, LimitResponse
17
+ rpc :LimitCheck, ::Prefab::LimitRequest, ::Prefab::LimitResponse
18
18
  end
19
19
 
20
20
  Stub = Service.rpc_stub_class
@@ -22,15 +22,15 @@ module Prefab
22
22
  module ConfigService
23
23
  class Service
24
24
 
25
- include GRPC::GenericService
25
+ include ::GRPC::GenericService
26
26
 
27
27
  self.marshal_class_method = :encode
28
28
  self.unmarshal_class_method = :decode
29
29
  self.service_name = 'prefab.ConfigService'
30
30
 
31
- rpc :GetConfig, ConfigServicePointer, stream(ConfigDeltas)
32
- rpc :GetAllConfig, ConfigServicePointer, ConfigDeltas
33
- rpc :Upsert, UpsertRequest, ConfigServicePointer
31
+ rpc :GetConfig, ::Prefab::ConfigServicePointer, stream(::Prefab::ConfigDeltas)
32
+ rpc :GetAllConfig, ::Prefab::ConfigServicePointer, ::Prefab::ConfigDeltas
33
+ rpc :Upsert, ::Prefab::UpsertRequest, ::Prefab::ConfigServicePointer
34
34
  end
35
35
 
36
36
  Stub = Service.rpc_stub_class
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: prefab-cloud-ruby 0.5.1 ruby lib
5
+ # stub: prefab-cloud-ruby 0.8.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "prefab-cloud-ruby".freeze
9
- s.version = "0.5.1"
9
+ s.version = "0.8.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Jeff Dwyer".freeze]
14
- s.date = "2019-02-23"
14
+ s.date = "2022-02-24"
15
15
  s.description = "RateLimits & Config as a service".freeze
16
16
  s.email = "jdwyer@prefab.cloud".freeze
17
17
  s.extra_rdoc_files = [
@@ -20,7 +20,8 @@ Gem::Specification.new do |s|
20
20
  ]
21
21
  s.files = [
22
22
  ".envrc",
23
- ".ruby-version",
23
+ ".tool-versions",
24
+ "CODEOWNERS",
24
25
  "Gemfile",
25
26
  "Gemfile.lock",
26
27
  "LICENSE.txt",
@@ -33,6 +34,7 @@ Gem::Specification.new do |s|
33
34
  "lib/prefab/cancellable_interceptor.rb",
34
35
  "lib/prefab/client.rb",
35
36
  "lib/prefab/config_client.rb",
37
+ "lib/prefab/config_helper.rb",
36
38
  "lib/prefab/config_loader.rb",
37
39
  "lib/prefab/config_resolver.rb",
38
40
  "lib/prefab/feature_flag_client.rb",
@@ -44,7 +46,9 @@ Gem::Specification.new do |s|
44
46
  "lib/prefab_pb.rb",
45
47
  "lib/prefab_services_pb.rb",
46
48
  "prefab-cloud-ruby.gemspec",
49
+ "run_test_harness_server.sh",
47
50
  "test/.prefab.test.config.yaml",
51
+ "test/harness_server.rb",
48
52
  "test/test_config_loader.rb",
49
53
  "test/test_config_resolver.rb",
50
54
  "test/test_feature_flag_client.rb",
@@ -53,43 +57,39 @@ Gem::Specification.new do |s|
53
57
  ]
54
58
  s.homepage = "http://github.com/prefab-cloud/prefab-cloud-ruby".freeze
55
59
  s.licenses = ["MIT".freeze]
56
- s.rubygems_version = "2.6.14".freeze
60
+ s.rubygems_version = "3.2.32".freeze
57
61
  s.summary = "Prefab Ruby Infrastructure".freeze
58
62
 
59
63
  if s.respond_to? :specification_version then
60
64
  s.specification_version = 4
65
+ end
61
66
 
62
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
- s.add_runtime_dependency(%q<concurrent-ruby>.freeze, [">= 1.0.5", "~> 1.0"])
64
- s.add_runtime_dependency(%q<faraday>.freeze, [">= 0"])
65
- s.add_runtime_dependency(%q<grpc>.freeze, ["~> 1.18.0"])
66
- s.add_development_dependency(%q<grpc-tools>.freeze, ["~> 1.17.1"])
67
- s.add_development_dependency(%q<shoulda>.freeze, [">= 0"])
68
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
69
- s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
70
- s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
71
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
72
- else
73
- s.add_dependency(%q<concurrent-ruby>.freeze, [">= 1.0.5", "~> 1.0"])
74
- s.add_dependency(%q<faraday>.freeze, [">= 0"])
75
- s.add_dependency(%q<grpc>.freeze, ["~> 1.18.0"])
76
- s.add_dependency(%q<grpc-tools>.freeze, ["~> 1.17.1"])
77
- s.add_dependency(%q<shoulda>.freeze, [">= 0"])
78
- s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
79
- s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
80
- s.add_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
81
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
82
- end
67
+ if s.respond_to? :add_runtime_dependency then
68
+ s.add_runtime_dependency(%q<concurrent-ruby>.freeze, ["~> 1.0", ">= 1.0.5"])
69
+ s.add_runtime_dependency(%q<faraday>.freeze, [">= 0"])
70
+ s.add_runtime_dependency(%q<grpc>.freeze, [">= 0"])
71
+ s.add_runtime_dependency(%q<google-protobuf>.freeze, [">= 0"])
72
+ s.add_runtime_dependency(%q<googleapis-common-protos-types>.freeze, [">= 0"])
73
+ s.add_development_dependency(%q<grpc-tools>.freeze, [">= 0"])
74
+ s.add_development_dependency(%q<shoulda>.freeze, [">= 0"])
75
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
76
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
77
+ s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
78
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
79
+ s.add_development_dependency(%q<thin>.freeze, [">= 0"])
83
80
  else
84
- s.add_dependency(%q<concurrent-ruby>.freeze, [">= 1.0.5", "~> 1.0"])
81
+ s.add_dependency(%q<concurrent-ruby>.freeze, ["~> 1.0", ">= 1.0.5"])
85
82
  s.add_dependency(%q<faraday>.freeze, [">= 0"])
86
- s.add_dependency(%q<grpc>.freeze, ["~> 1.18.0"])
87
- s.add_dependency(%q<grpc-tools>.freeze, ["~> 1.17.1"])
83
+ s.add_dependency(%q<grpc>.freeze, [">= 0"])
84
+ s.add_dependency(%q<google-protobuf>.freeze, [">= 0"])
85
+ s.add_dependency(%q<googleapis-common-protos-types>.freeze, [">= 0"])
86
+ s.add_dependency(%q<grpc-tools>.freeze, [">= 0"])
88
87
  s.add_dependency(%q<shoulda>.freeze, [">= 0"])
89
88
  s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
90
- s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
89
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
91
90
  s.add_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
92
91
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
92
+ s.add_dependency(%q<thin>.freeze, [">= 0"])
93
93
  end
94
94
  end
95
95
 
@@ -0,0 +1,2 @@
1
+ PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL=debug PREFAB_CLOUD_HTTP=true PREFAB_API_KEY="1|local_development_api_key" PREFAB_API_URL="localhost:50051" ruby -Ilib test/harness_server.rb
2
+ #GRPC_TRACE=all GRPC_VERBOSITY=DEBUG PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL=debug PREFAB_CLOUD_HTTP=true PREFAB_API_KEY="1|local_development_api_key" PREFAB_API_URL="localhost:50051" ruby -Ilib test/harness_server.rb
@@ -0,0 +1,46 @@
1
+ require 'prefab-cloud-ruby'
2
+ require 'rack'
3
+ require 'base64'
4
+ require 'json'
5
+
6
+ handler = Rack::Handler::Thin
7
+
8
+ #
9
+ # This is a very lightweight server that allows the compliance harness to excercise the prefab client
10
+ #
11
+ class RackApp
12
+ def call(env)
13
+ props = CGI::parse(env["QUERY_STRING"])
14
+ props = JSON.parse(Base64.decode64(props["props"][0]))
15
+
16
+ key = props["key"]
17
+ namespace = props["namespace"]
18
+ environment = props["environment"]
19
+ user_key = props["user_key"]
20
+ is_feature_flag = !props["feature_flag"].nil?
21
+
22
+ client = Prefab::Client.new(
23
+ api_key: "1-#{environment}-local_development_api_key", #sets environment
24
+ namespace: namespace,
25
+ )
26
+
27
+ puts "Key #{key}"
28
+ puts "User #{user_key}"
29
+ puts "Environment #{environment}"
30
+ puts "Namespace #{namespace}"
31
+ puts "Props! #{props}"
32
+ puts "is_feature_flag! #{is_feature_flag}"
33
+
34
+ if is_feature_flag
35
+ puts "EVALFF #{key} #{user_key}"
36
+ rtn = client.feature_flag_client.get(key, user_key, []).to_s
37
+ else
38
+ rtn = client.config_client.get(key).to_s
39
+ end
40
+ puts "return #{rtn}"
41
+
42
+ [200, { "Content-Type" => "text/plain" }, rtn]
43
+ end
44
+ end
45
+
46
+ handler.run RackApp.new
@@ -16,26 +16,26 @@ class TestConfigLoader < Minitest::Test
16
16
 
17
17
  def test_highwater
18
18
  assert_equal 0, @loader.highwater_mark
19
- @loader.set(Prefab::ConfigDelta.new(id: 1, key: "sample_int", value: Prefab::ConfigValue.new(int: 456)))
19
+ @loader.set(Prefab::ConfigDelta.new(id: 1, key: "sample_int", default: Prefab::ConfigValue.new(int: 456)))
20
20
  assert_equal 1, @loader.highwater_mark
21
21
 
22
- @loader.set(Prefab::ConfigDelta.new(id: 5, key: "sample_int", value: Prefab::ConfigValue.new(int: 456)))
22
+ @loader.set(Prefab::ConfigDelta.new(id: 5, key: "sample_int", default: Prefab::ConfigValue.new(int: 456)))
23
23
  assert_equal 5, @loader.highwater_mark
24
- @loader.set(Prefab::ConfigDelta.new(id: 2, key: "sample_int", value: Prefab::ConfigValue.new(int: 456)))
24
+ @loader.set(Prefab::ConfigDelta.new(id: 2, key: "sample_int", default: Prefab::ConfigValue.new(int: 456)))
25
25
  assert_equal 5, @loader.highwater_mark
26
26
  end
27
27
 
28
28
  def test_keeps_most_recent
29
29
  assert_equal 0, @loader.highwater_mark
30
- @loader.set(Prefab::ConfigDelta.new(id: 1, key: "sample_int", value: Prefab::ConfigValue.new(int: 1)))
30
+ @loader.set(Prefab::ConfigDelta.new(id: 1, key: "sample_int", default: Prefab::ConfigValue.new(int: 1)))
31
31
  assert_equal 1, @loader.highwater_mark
32
32
  should_be :int, 1, "sample_int"
33
33
 
34
- @loader.set(Prefab::ConfigDelta.new(id: 4, key: "sample_int", value: Prefab::ConfigValue.new(int: 4)))
34
+ @loader.set(Prefab::ConfigDelta.new(id: 4, key: "sample_int", default: Prefab::ConfigValue.new(int: 4)))
35
35
  assert_equal 4, @loader.highwater_mark
36
36
  should_be :int, 4, "sample_int"
37
37
 
38
- @loader.set(Prefab::ConfigDelta.new(id: 2, key: "sample_int", value: Prefab::ConfigValue.new(int: 2)))
38
+ @loader.set(Prefab::ConfigDelta.new(id: 2, key: "sample_int", default: Prefab::ConfigValue.new(int: 2)))
39
39
  assert_equal 4, @loader.highwater_mark
40
40
  should_be :int, 4, "sample_int"
41
41
  end
@@ -43,13 +43,13 @@ class TestConfigLoader < Minitest::Test
43
43
  def test_api_precedence
44
44
  should_be :int, 123, "sample_int"
45
45
 
46
- @loader.set(Prefab::ConfigDelta.new(key: "sample_int", value: Prefab::ConfigValue.new(int: 456)))
46
+ @loader.set(Prefab::ConfigDelta.new(key: "sample_int", default: Prefab::ConfigValue.new(int: 456)))
47
47
  should_be :int, 456, "sample_int"
48
48
  end
49
49
 
50
50
  def test_api_deltas
51
51
  val = Prefab::ConfigValue.new(int: 456)
52
- delta = Prefab::ConfigDelta.new(key: "sample_int", value: val)
52
+ delta = Prefab::ConfigDelta.new(key: "sample_int", default: val)
53
53
  @loader.set(delta)
54
54
 
55
55
  deltas = Prefab::ConfigDeltas.new
@@ -59,10 +59,10 @@ class TestConfigLoader < Minitest::Test
59
59
 
60
60
  def test_loading_tombstones_removes_entries
61
61
  val = Prefab::ConfigValue.new(int: 456)
62
- delta = Prefab::ConfigDelta.new(key: "sample_int", value: val)
62
+ delta = Prefab::ConfigDelta.new(key: "sample_int", default: val)
63
63
  @loader.set(delta)
64
64
 
65
- delta = Prefab::ConfigDelta.new(key: "sample_int", value: nil)
65
+ delta = Prefab::ConfigDelta.new(key: "sample_int", default: nil)
66
66
  @loader.set(delta)
67
67
 
68
68
  deltas = Prefab::ConfigDeltas.new
@@ -72,8 +72,8 @@ class TestConfigLoader < Minitest::Test
72
72
  private
73
73
 
74
74
  def should_be(type, value, key)
75
- assert_equal type, @loader.calc_config[key].type
76
- assert_equal value, @loader.calc_config[key].send(type)
75
+ assert_equal type, @loader.calc_config[key].default.type
76
+ assert_equal value, @loader.calc_config[key].default.send(type)
77
77
  end
78
78
 
79
79
  end