wingify-fme-ruby-sdk 1.50.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.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/lib/resources/debug_messages.json +21 -0
  3. data/lib/resources/error_messages.json +63 -0
  4. data/lib/resources/info_messages.json +43 -0
  5. data/lib/resources/warn_messages.json +1 -0
  6. data/lib/vwo.rb +40 -0
  7. data/lib/wingify/api/get_flag.rb +244 -0
  8. data/lib/wingify/api/set_attribute.rb +57 -0
  9. data/lib/wingify/api/track_event.rb +80 -0
  10. data/lib/wingify/constants/constants.rb +106 -0
  11. data/lib/wingify/decorators/storage_decorator.rb +82 -0
  12. data/lib/wingify/enums/api_enum.rb +23 -0
  13. data/lib/wingify/enums/campaign_type_enum.rb +19 -0
  14. data/lib/wingify/enums/debug_category_enum.rb +20 -0
  15. data/lib/wingify/enums/decision_types_enum.rb +18 -0
  16. data/lib/wingify/enums/event_enum.rb +22 -0
  17. data/lib/wingify/enums/headers_enum.rb +20 -0
  18. data/lib/wingify/enums/hooks_enum.rb +17 -0
  19. data/lib/wingify/enums/http_method_enum.rb +18 -0
  20. data/lib/wingify/enums/log_level_enum.rb +21 -0
  21. data/lib/wingify/enums/log_level_to_number.rb +27 -0
  22. data/lib/wingify/enums/status_enum.rb +19 -0
  23. data/lib/wingify/enums/storage_enum.rb +22 -0
  24. data/lib/wingify/enums/url_enum.rb +22 -0
  25. data/lib/wingify/models/campaign/campaign_model.rb +192 -0
  26. data/lib/wingify/models/campaign/feature_model.rb +111 -0
  27. data/lib/wingify/models/campaign/impact_campaign_model.rb +38 -0
  28. data/lib/wingify/models/campaign/metric_model.rb +44 -0
  29. data/lib/wingify/models/campaign/rule_model.rb +56 -0
  30. data/lib/wingify/models/campaign/variable_model.rb +51 -0
  31. data/lib/wingify/models/campaign/variation_model.rb +137 -0
  32. data/lib/wingify/models/gateway_service_model.rb +39 -0
  33. data/lib/wingify/models/schemas/settings_schema_validation.rb +104 -0
  34. data/lib/wingify/models/settings/settings_model.rb +101 -0
  35. data/lib/wingify/models/storage/storage_data_model.rb +44 -0
  36. data/lib/wingify/models/user/context_model.rb +154 -0
  37. data/lib/wingify/models/user/context_vwo_model.rb +38 -0
  38. data/lib/wingify/models/user/get_flag_response.rb +50 -0
  39. data/lib/wingify/models/vwo_options_model.rb +129 -0
  40. data/lib/wingify/packages/decision_maker/decision_maker.rb +60 -0
  41. data/lib/wingify/packages/logger/core/log_manager.rb +92 -0
  42. data/lib/wingify/packages/logger/core/transport_manager.rb +76 -0
  43. data/lib/wingify/packages/logger/log_message_builder.rb +70 -0
  44. data/lib/wingify/packages/logger/logger.rb +38 -0
  45. data/lib/wingify/packages/logger/transports/console_transport.rb +49 -0
  46. data/lib/wingify/packages/network_layer/client/network_client.rb +276 -0
  47. data/lib/wingify/packages/network_layer/handlers/request_handler.rb +37 -0
  48. data/lib/wingify/packages/network_layer/manager/network_manager.rb +145 -0
  49. data/lib/wingify/packages/network_layer/models/global_request_model.rb +105 -0
  50. data/lib/wingify/packages/network_layer/models/request_model.rb +179 -0
  51. data/lib/wingify/packages/network_layer/models/response_model.rb +62 -0
  52. data/lib/wingify/packages/segmentation_evaluator/core/segmentation_manager.rb +77 -0
  53. data/lib/wingify/packages/segmentation_evaluator/enums/segment_operand_regex_enum.rb +29 -0
  54. data/lib/wingify/packages/segmentation_evaluator/enums/segment_operand_value_enum.rb +26 -0
  55. data/lib/wingify/packages/segmentation_evaluator/enums/segment_operator_value_enum.rb +33 -0
  56. data/lib/wingify/packages/segmentation_evaluator/evaluators/segment_evaluator.rb +218 -0
  57. data/lib/wingify/packages/segmentation_evaluator/evaluators/segment_operand_evaluator.rb +415 -0
  58. data/lib/wingify/packages/segmentation_evaluator/utils/segment_util.rb +44 -0
  59. data/lib/wingify/packages/storage/connector.rb +26 -0
  60. data/lib/wingify/packages/storage/storage.rb +47 -0
  61. data/lib/wingify/services/batch_event_queue.rb +179 -0
  62. data/lib/wingify/services/campaign_decision_service.rb +161 -0
  63. data/lib/wingify/services/hooks_service.rb +51 -0
  64. data/lib/wingify/services/logger_service.rb +114 -0
  65. data/lib/wingify/services/settings_service.rb +178 -0
  66. data/lib/wingify/services/storage_service.rb +66 -0
  67. data/lib/wingify/utils/batch_event_dispatcher_util.rb +178 -0
  68. data/lib/wingify/utils/brand_context.rb +33 -0
  69. data/lib/wingify/utils/brand_util.rb +53 -0
  70. data/lib/wingify/utils/campaign_util.rb +284 -0
  71. data/lib/wingify/utils/data_type_util.rb +105 -0
  72. data/lib/wingify/utils/debugger_service_util.rb +40 -0
  73. data/lib/wingify/utils/decision_util.rb +259 -0
  74. data/lib/wingify/utils/event_util.rb +55 -0
  75. data/lib/wingify/utils/function_util.rb +141 -0
  76. data/lib/wingify/utils/gateway_service_util.rb +101 -0
  77. data/lib/wingify/utils/impression_util.rb +66 -0
  78. data/lib/wingify/utils/log_message_util.rb +42 -0
  79. data/lib/wingify/utils/meg_util.rb +357 -0
  80. data/lib/wingify/utils/network_util.rb +503 -0
  81. data/lib/wingify/utils/rule_evaluation_util.rb +57 -0
  82. data/lib/wingify/utils/settings_util.rb +38 -0
  83. data/lib/wingify/utils/usage_stats_util.rb +119 -0
  84. data/lib/wingify/utils/uuid_util.rb +96 -0
  85. data/lib/wingify/wingify_builder.rb +261 -0
  86. data/lib/wingify/wingify_client.rb +227 -0
  87. data/lib/wingify.rb +117 -0
  88. metadata +327 -0
data/lib/wingify.rb ADDED
@@ -0,0 +1,117 @@
1
+ # Copyright 2024-2026 Wingify Software Pvt. Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'json'
16
+ require 'uri'
17
+ require_relative 'wingify/wingify_builder'
18
+ require_relative 'wingify/wingify_client'
19
+ require_relative 'wingify/utils/brand_context'
20
+ require_relative 'wingify/utils/brand_util'
21
+ require_relative 'wingify/utils/event_util'
22
+ require_relative 'wingify/services/settings_service'
23
+
24
+ module Wingify
25
+ @@wingify_builder = nil
26
+ @@instance = nil
27
+
28
+ def self.set_instance(options)
29
+ # Set brand flag FIRST — before any service initializes
30
+ BrandContext.set_is_via_vwo(options[:is_via_vwo] || false)
31
+
32
+ options_builder = options[:wingify_builder] || options[:vwo_builder]
33
+ @@wingify_builder = options_builder || WingifyBuilder.new(options)
34
+
35
+ @@instance = @@wingify_builder
36
+ .set_logger
37
+ .set_settings_service
38
+ .set_storage
39
+ .set_network_manager
40
+ .set_segmentation
41
+ .init_polling
42
+ .init_usage_stats
43
+ .init_batch
44
+
45
+ if options[:settings]
46
+ return @@wingify_builder.build(options[:settings])
47
+ end
48
+
49
+ settings = @@wingify_builder.get_settings
50
+ @@instance = @@wingify_builder.build(settings)
51
+ @@instance
52
+ end
53
+
54
+ def self.instance
55
+ @@instance
56
+ end
57
+
58
+ def self.init(options)
59
+ begin
60
+ unless options.is_a?(Hash)
61
+ brand = BrandUtil.get_brand_name(options[:is_via_vwo] || false)
62
+ log_prefix = BrandUtil.get_log_prefix(options[:is_via_vwo] || false)
63
+ puts "[ERROR]: #{log_prefix}: Please provide the options as a hash"
64
+ return nil
65
+ end
66
+
67
+ brand = BrandUtil.get_brand_name(options[:is_via_vwo] || false)
68
+ log_prefix = BrandUtil.get_log_prefix(options[:is_via_vwo] || false)
69
+
70
+ unless options[:sdk_key]&.is_a?(String) && !options[:sdk_key].empty?
71
+ puts "[ERROR]: #{log_prefix}: Please provide the sdkKey in the options and should be a of type string"
72
+ end
73
+
74
+ unless options[:account_id] && (options[:account_id].is_a?(Integer) || (options[:account_id].is_a?(String) && !options[:account_id].empty?))
75
+ puts "[ERROR]: #{log_prefix}: Please provide #{brand} account ID in the options and should be a of type string|number"
76
+ end
77
+
78
+ sdk_init_start_time = (Time.now.to_f * 1000).to_i
79
+ new_instance = set_instance(options)
80
+ sdk_init_end_time = (Time.now.to_f * 1000).to_i
81
+ time_taken_for_init = sdk_init_end_time - sdk_init_start_time
82
+
83
+ was_initialized_earlier = false
84
+ begin
85
+ if new_instance && new_instance.original_settings && new_instance.original_settings.is_a?(Hash)
86
+ sdk_meta_info = new_instance.original_settings["sdkMetaInfo"]
87
+ was_initialized_earlier = sdk_meta_info && sdk_meta_info.is_a?(Hash) ? sdk_meta_info["wasInitializedEarlier"] : false
88
+ end
89
+ rescue StandardError => e
90
+ was_initialized_earlier = false
91
+ end
92
+
93
+ if !was_initialized_earlier && SettingsService.instance.is_settings_valid
94
+ send_sdk_init_event(SettingsService.instance.settings_fetch_time, time_taken_for_init.to_s)
95
+ end
96
+
97
+ usage_stats_account_id = new_instance&.original_settings&.dig("usageStatsAccountId")
98
+ if usage_stats_account_id
99
+ send_sdk_usage_stats_event(usage_stats_account_id)
100
+ end
101
+
102
+ new_instance
103
+ rescue StandardError => e
104
+ brand = BrandUtil.get_brand_name(options[:is_via_vwo] || false) rescue 'SDK'
105
+ log_prefix = BrandUtil.get_log_prefix(options[:is_via_vwo] || false) rescue 'SDK'
106
+ puts "[ERROR]: #{log_prefix}: Got error while initializing #{brand}: #{e.message}"
107
+ end
108
+ end
109
+
110
+ def self.get_uuid(user_id, account_id)
111
+ if !user_id.is_a?(String) || user_id.empty? || !account_id.is_a?(String) || account_id.empty?
112
+ puts "User ID and account ID must be non-empty strings"
113
+ return nil
114
+ end
115
+ UUIDUtil.get_uuid(user_id, account_id)
116
+ end
117
+ end
metadata ADDED
@@ -0,0 +1,327 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wingify-fme-ruby-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.50.0
5
+ platform: ruby
6
+ authors:
7
+ - Wingify
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-06-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: uuidtools
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: dry-schema
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: murmurhash3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.1.6
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.6
55
+ - !ruby/object:Gem::Dependency
56
+ name: concurrent-ruby
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '2.0'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 1.2.0
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '2.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: net-http
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0.2'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '1.0'
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0.2'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: logger
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: bigdecimal
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: base64
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: mutex_m
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: minitest
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '5.0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '5.0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: mocha
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '2.7'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '2.7'
179
+ - !ruby/object:Gem::Dependency
180
+ name: json
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '2.5'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '2.5'
193
+ - !ruby/object:Gem::Dependency
194
+ name: rake
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '13.0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '13.0'
207
+ description: A Ruby SDK for Feature Management And Experimentation
208
+ email:
209
+ - dev@wingify.com
210
+ executables: []
211
+ extensions: []
212
+ extra_rdoc_files: []
213
+ files:
214
+ - lib/resources/debug_messages.json
215
+ - lib/resources/error_messages.json
216
+ - lib/resources/info_messages.json
217
+ - lib/resources/warn_messages.json
218
+ - lib/vwo.rb
219
+ - lib/wingify.rb
220
+ - lib/wingify/api/get_flag.rb
221
+ - lib/wingify/api/set_attribute.rb
222
+ - lib/wingify/api/track_event.rb
223
+ - lib/wingify/constants/constants.rb
224
+ - lib/wingify/decorators/storage_decorator.rb
225
+ - lib/wingify/enums/api_enum.rb
226
+ - lib/wingify/enums/campaign_type_enum.rb
227
+ - lib/wingify/enums/debug_category_enum.rb
228
+ - lib/wingify/enums/decision_types_enum.rb
229
+ - lib/wingify/enums/event_enum.rb
230
+ - lib/wingify/enums/headers_enum.rb
231
+ - lib/wingify/enums/hooks_enum.rb
232
+ - lib/wingify/enums/http_method_enum.rb
233
+ - lib/wingify/enums/log_level_enum.rb
234
+ - lib/wingify/enums/log_level_to_number.rb
235
+ - lib/wingify/enums/status_enum.rb
236
+ - lib/wingify/enums/storage_enum.rb
237
+ - lib/wingify/enums/url_enum.rb
238
+ - lib/wingify/models/campaign/campaign_model.rb
239
+ - lib/wingify/models/campaign/feature_model.rb
240
+ - lib/wingify/models/campaign/impact_campaign_model.rb
241
+ - lib/wingify/models/campaign/metric_model.rb
242
+ - lib/wingify/models/campaign/rule_model.rb
243
+ - lib/wingify/models/campaign/variable_model.rb
244
+ - lib/wingify/models/campaign/variation_model.rb
245
+ - lib/wingify/models/gateway_service_model.rb
246
+ - lib/wingify/models/schemas/settings_schema_validation.rb
247
+ - lib/wingify/models/settings/settings_model.rb
248
+ - lib/wingify/models/storage/storage_data_model.rb
249
+ - lib/wingify/models/user/context_model.rb
250
+ - lib/wingify/models/user/context_vwo_model.rb
251
+ - lib/wingify/models/user/get_flag_response.rb
252
+ - lib/wingify/models/vwo_options_model.rb
253
+ - lib/wingify/packages/decision_maker/decision_maker.rb
254
+ - lib/wingify/packages/logger/core/log_manager.rb
255
+ - lib/wingify/packages/logger/core/transport_manager.rb
256
+ - lib/wingify/packages/logger/log_message_builder.rb
257
+ - lib/wingify/packages/logger/logger.rb
258
+ - lib/wingify/packages/logger/transports/console_transport.rb
259
+ - lib/wingify/packages/network_layer/client/network_client.rb
260
+ - lib/wingify/packages/network_layer/handlers/request_handler.rb
261
+ - lib/wingify/packages/network_layer/manager/network_manager.rb
262
+ - lib/wingify/packages/network_layer/models/global_request_model.rb
263
+ - lib/wingify/packages/network_layer/models/request_model.rb
264
+ - lib/wingify/packages/network_layer/models/response_model.rb
265
+ - lib/wingify/packages/segmentation_evaluator/core/segmentation_manager.rb
266
+ - lib/wingify/packages/segmentation_evaluator/enums/segment_operand_regex_enum.rb
267
+ - lib/wingify/packages/segmentation_evaluator/enums/segment_operand_value_enum.rb
268
+ - lib/wingify/packages/segmentation_evaluator/enums/segment_operator_value_enum.rb
269
+ - lib/wingify/packages/segmentation_evaluator/evaluators/segment_evaluator.rb
270
+ - lib/wingify/packages/segmentation_evaluator/evaluators/segment_operand_evaluator.rb
271
+ - lib/wingify/packages/segmentation_evaluator/utils/segment_util.rb
272
+ - lib/wingify/packages/storage/connector.rb
273
+ - lib/wingify/packages/storage/storage.rb
274
+ - lib/wingify/services/batch_event_queue.rb
275
+ - lib/wingify/services/campaign_decision_service.rb
276
+ - lib/wingify/services/hooks_service.rb
277
+ - lib/wingify/services/logger_service.rb
278
+ - lib/wingify/services/settings_service.rb
279
+ - lib/wingify/services/storage_service.rb
280
+ - lib/wingify/utils/batch_event_dispatcher_util.rb
281
+ - lib/wingify/utils/brand_context.rb
282
+ - lib/wingify/utils/brand_util.rb
283
+ - lib/wingify/utils/campaign_util.rb
284
+ - lib/wingify/utils/data_type_util.rb
285
+ - lib/wingify/utils/debugger_service_util.rb
286
+ - lib/wingify/utils/decision_util.rb
287
+ - lib/wingify/utils/event_util.rb
288
+ - lib/wingify/utils/function_util.rb
289
+ - lib/wingify/utils/gateway_service_util.rb
290
+ - lib/wingify/utils/impression_util.rb
291
+ - lib/wingify/utils/log_message_util.rb
292
+ - lib/wingify/utils/meg_util.rb
293
+ - lib/wingify/utils/network_util.rb
294
+ - lib/wingify/utils/rule_evaluation_util.rb
295
+ - lib/wingify/utils/settings_util.rb
296
+ - lib/wingify/utils/usage_stats_util.rb
297
+ - lib/wingify/utils/uuid_util.rb
298
+ - lib/wingify/wingify_builder.rb
299
+ - lib/wingify/wingify_client.rb
300
+ homepage:
301
+ licenses:
302
+ - Apache-2.0
303
+ metadata:
304
+ bug_tracker_uri: https://github.com/wingify/vwo-fme-ruby-sdk/issues
305
+ changelog_uri: https://github.com/wingify/vwo-fme-ruby-sdk/blob/master/CHANGELOG.md
306
+ homepage_uri: https://github.com/wingify/vwo-fme-ruby-sdk
307
+ source_code_uri: https://github.com/wingify/vwo-fme-ruby-sdk
308
+ post_install_message:
309
+ rdoc_options: []
310
+ require_paths:
311
+ - lib
312
+ required_ruby_version: !ruby/object:Gem::Requirement
313
+ requirements:
314
+ - - ">="
315
+ - !ruby/object:Gem::Version
316
+ version: 2.6.0
317
+ required_rubygems_version: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - ">="
320
+ - !ruby/object:Gem::Version
321
+ version: '0'
322
+ requirements: []
323
+ rubygems_version: 3.0.3.1
324
+ signing_key:
325
+ specification_version: 4
326
+ summary: Wingify FME Ruby SDK
327
+ test_files: []