launchdarkly_api_helper 0.2.0 → 0.3.0

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: 48a1fa66d19b0af509741df158d57e04cbcd379e1cc0f921bd8755bfd2b8bfd6
4
- data.tar.gz: 10fe7dcfb0fe90a797f874b56c2f99deecc0e69028e7d58fbd69c84f5b1e41b4
3
+ metadata.gz: ce783cd020dfb08afa37d2c2def2a34e637ac5206372cde1e33692fce4fc7e9c
4
+ data.tar.gz: 001f9d326e6361449587ac36107296af04e02cacc1d238c903a7622cb9af718f
5
5
  SHA512:
6
- metadata.gz: 1349639032b66a4091b84d0188d0b5935dd5758aa5ab4eede29c57312972d57b1b648988dc135ceba8b82fd4c8425d451235436f7723b85da54945dcb8dc0ff4
7
- data.tar.gz: b1de7f7890f2f68d19b31936b789670aefab91b259676f5c2aa26d6aa093156fa0f9a13950640e95451d9f9153aa7180f7930818d9099a37c0317ab9c47eb327
6
+ metadata.gz: 97992fe3501448666a630a59f779e35228fe75afa9e2b57d55396d56e2a8917caac50f232041bb5c59e6d9f356093628c4730db192dca2225bbd384323f57e0f
7
+ data.tar.gz: ebb0edb818fb938053a390ee8680d6fe6e309a6433c634ad2cd0e9de93220577584db74aa5157ea643b6f0a19f8ba70591e780493cce4fb0e6d776546cd7b628
data/.rubocop.yml CHANGED
@@ -9,12 +9,21 @@ Style/StringLiteralsInInterpolation:
9
9
  Enabled: true
10
10
  EnforcedStyle: double_quotes
11
11
 
12
+ Style/OptionalBooleanParameter:
13
+ Enabled: false
14
+
12
15
  Layout/LineLength:
13
16
  Max: 120
14
17
 
15
18
  Metrics/MethodLength:
16
19
  Max: 100
17
20
 
21
+ Metrics/MethodName:
22
+ Max: 100
23
+
24
+ Metrics/ClassLength:
25
+ Max: 150
26
+
18
27
  Metrics/AbcSize:
19
28
  Enabled: false
20
29
 
@@ -59,18 +59,18 @@ class LaunchdarklyApiHelperClass
59
59
  ld_request(:post, request_url, request_body)
60
60
  end
61
61
 
62
- def toggle_flag_for_specific_environment(env, flag, flag_value)
62
+ def toggle_specific_environment(env, flag, flag_value)
63
63
  request_url = "#{LAUNCH_DARKLY_FLAGS}/#{flag}"
64
64
  request_body = { 'op' => 'replace', 'path' => "/environments/#{env}/on", 'value' => flag_value }
65
65
  response_body = ld_request(:patch, request_url, [request_body])
66
66
  response_body['environments'][env]['on']
67
67
  end
68
68
 
69
- def feature_flag_variation_index(fetch_flag_toggle_status_response, fetch_flag_details_response)
70
- variations = fetch_flag_details_response['variations']
69
+ def feature_flag_variation_index(status_response, details_response)
70
+ variations = details_response['variations']
71
71
  value_at_index = -1
72
72
  variations.length.times do |index|
73
- next unless variations[index]['value'].eql? fetch_flag_toggle_status_response
73
+ next unless variations[index]['value'].eql? status_response
74
74
 
75
75
  value_at_index = index
76
76
  break
@@ -78,60 +78,81 @@ class LaunchdarklyApiHelperClass
78
78
  value_at_index
79
79
  end
80
80
 
81
- def feature_flag_variation_value(fetch_flag_details_response, feature_flag_variation_index_response)
82
- fetch_flag_details_response['variations'][feature_flag_variation_index_response]['value']
81
+ def feature_flag_variation_value(details_response, index_response)
82
+ details_response['variations'][index_response]['value']
83
83
  end
84
84
 
85
- def feature_flag_variation_name(fetch_flag_details_response, feature_flag_variation_index_response)
86
- fetch_flag_details_response['variations'][feature_flag_variation_index_response]['name']
85
+ def feature_flag_variation_name(details_response, index_response)
86
+ details_response['variations'][index_response]['name']
87
87
  end
88
88
 
89
- def toggle_variation_served_status(env, flag)
90
- fetch_flag_details_response = fetch_flag_details(env, flag)
91
- fetch_flag_toggle_status_response = fetch_flag_toggle_status(env, flag)
92
- feature_flag_variation_index_response = feature_flag_variation_index(fetch_flag_toggle_status_response, fetch_flag_details_response) # ['environments'][env]['fallthrough']['variation']
93
- feature_flag_variation_value_response = feature_flag_variation_value(fetch_flag_details_response, feature_flag_variation_index_response) # ['variations'][feature_flag_variation_index_response]['value']
94
- feature_flag_variation_name_response = feature_flag_variation_name(fetch_flag_details_response, feature_flag_variation_index_response)
95
- [fetch_flag_toggle_status_response, feature_flag_variation_index_response, feature_flag_variation_value_response, feature_flag_variation_name_response]
89
+ def ld_toggle_variation_served(env, flag)
90
+ details_response = fetch_flag_details(env, flag)
91
+ toggle_status_response = fetch_flag_toggle_status(env, flag)
92
+ variation_index_response = feature_flag_variation_index(toggle_status_response, details_response) # ['environments'][env]['fallthrough']['variation']
93
+ variation_value_response = feature_flag_variation_value(details_response, variation_index_response) # ['variations'][variation_index_response]['value']
94
+ variation_name_response = feature_flag_variation_name(details_response, variation_index_response)
95
+ [toggle_status_response, variation_index_response, variation_value_response, variation_name_response]
96
96
  end
97
97
 
98
- def search_value_in_hash(feature_flag_hash, attribute)
98
+ def search_rule_index_clause_index(clause_name)
99
+ rule_at_index = -1
100
+ clause_at_index = -1
101
+ @feature_flag_rules_list.length.times do |rule_index|
102
+ @feature_flag_clauses_list = @feature_flag_rules_list[rule_index]['clauses']
103
+ @feature_flag_clauses_list.length.times do |clause_index|
104
+ next unless @feature_flag_clauses_list[clause_index]['attribute'].eql? clause_name
105
+
106
+ rule_at_index = rule_index
107
+ clause_at_index = clause_index
108
+ break
109
+ end
110
+ end
111
+ [rule_at_index, clause_at_index]
112
+ end
113
+
114
+ def search_value_index(rule_at_index, clause_at_index, clause_value)
99
115
  value_at_index = -1
100
- feature_flag_hash.length.times do |index|
101
- next unless feature_flag_hash[index].to_s.include? attribute.to_s
116
+ @feature_flag_values_list = @feature_flag_rules_list[rule_at_index]['clauses'][clause_at_index]['values']
117
+ @feature_flag_values_list.length.times do |value_index|
118
+ next unless @feature_flag_values_list[value_index].eql? clause_value
102
119
 
103
- value_at_index = index
120
+ value_at_index = value_index
104
121
  break
105
122
  end
106
123
  value_at_index
107
124
  end
108
125
 
109
- def feature_flag_rules_clauses_index(flag, attribute, env = ENV['PROFILE'])
110
- @feature_flag_response = fetch_flag(flag, env)
111
- feature_flag_env = @feature_flag_response['environments'][env]
112
- @feature_flag_env_rules = feature_flag_env['rules']
113
- rule_index = search_value_in_hash(@feature_flag_env_rules, attribute)
114
- @feature_flag_env_rules_clauses = @feature_flag_env_rules[rule_index]['clauses']
115
- clause_index = search_value_in_hash(@feature_flag_env_rules_clauses, attribute)
116
- [rule_index, clause_index]
126
+ def rules_clauses_index(env, flag, clause_name)
127
+ feature_flag_response = fetch_flag_details(env, flag)
128
+ @feature_flag_rules_list = feature_flag_response['environments'][env]['rules']
129
+ search_rule_index_clause_index(clause_name)
117
130
  end
118
131
 
119
- def feature_flag_add_values_to_rules(flag, attribute, value, env = ENV['PROFILE'])
120
- @flag = flag
121
- @attribute = attribute
122
- @value = value
123
- @rule_index, @clause_index = feature_flag_rules_clauses_index(flag, attribute)
132
+ def get_values_from_clauses(env, flag, clause_name)
133
+ rule_at_index, clause_at_index = feature_flag_rules_clauses_index(env, flag, clause_name)
134
+ @feature_flag_rules_list[rule_at_index]['clauses'][clause_at_index]['values']
135
+ end
136
+
137
+ def add_values_to_clause(env, flag, clause_name, clause_value)
138
+ rule_at_index, clause_at_index = feature_flag_rules_clauses_index(env, flag, clause_name)
124
139
  request_url = "#{LAUNCH_DARKLY_FLAGS}/#{flag}"
125
- request_body = { 'op' => 'add', 'path' => "/environments/#{env}/rules/#{@rule_index}/clauses/#{@clause_index}/values/0", 'value' => value }
140
+ request_body = { 'op' => 'add', 'path' => "/environments/#{env}/rules/#{rule_at_index}/clauses/#{clause_at_index}/values/0", 'value' => clause_value }
126
141
  ld_request(:patch, request_url, [request_body])
127
142
  end
128
143
 
129
- def feature_flag_remove_values_to_rules(flag = @flag, attribute = @attribute, value = @value, env = ENV['PROFILE'])
130
- @rule_index, @clause_index = feature_flag_rules_clauses_index(flag, attribute, env = ENV['PROFILE']) unless flag || attribute
131
- feature_flag_env_rules_clauses_values = @feature_flag_env_rules_clauses[@clause_index]['values']
132
- value_index = search_value_in_hash(feature_flag_env_rules_clauses_values, value)
144
+ def remove_values_from_clause(env, flag, clause_name, clause_value)
145
+ rule_at_index, clause_at_index = feature_flag_rules_clauses_index(env, flag, clause_name)
146
+ value_at_index = search_value_index(rule_at_index, clause_at_index, clause_value)
147
+ puts "value_index: #{value_at_index}"
133
148
  request_url = "#{LAUNCH_DARKLY_FLAGS}/#{flag}"
134
- request_body = { 'op': 'test', 'path': "/environments/#{env}/rules/#{@rule_index}/clauses/#{@clause_index}/values/#{value_index}", 'value': value }, { 'op' => 'remove', 'path' => "/environments/#{env}/rules/#{@rule_index}/clauses/#{@clause_index}/values/#{value_index}" }
149
+ request_body = { 'op' => 'test', 'path' => "/environments/#{env}/rules/#{rule_at_index}/clauses/#{clause_at_index}/values/#{value_at_index}", 'value' => clause_value },
150
+ { 'op' => 'remove', 'path' => "/environments/#{env}/rules/#{rule_at_index}/clauses/#{clause_at_index}/values/#{value_at_index}" }
135
151
  ld_request(:patch, request_url, request_body)
136
152
  end
153
+
154
+ def delete_flag(flag)
155
+ request_url = "#{LAUNCH_DARKLY_FLAGS}/#{flag}"
156
+ ld_request(:delete, request_url)
157
+ end
137
158
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LaunchdarklyApiHelper
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -135,8 +135,8 @@ module LaunchdarklyApiHelper
135
135
  # == Here, 'developer_flag_for_regression' is the flag key and default is our Project name - Browserstack
136
136
  # == You can update any parameter of feature flag using this method
137
137
 
138
- def ld_toggle_flag_for_specific_environment(env, flag, flag_value = true)
139
- @launchdarkly_helper.toggle_flag_for_specific_environment(env, flag, flag_value)
138
+ def ld_toggle_specific_environment(env, flag, flag_value = true)
139
+ @launchdarkly_helper.toggle_specific_environment(env, flag, flag_value)
140
140
  end
141
141
 
142
142
  # == Get status of feature flag
@@ -144,12 +144,27 @@ module LaunchdarklyApiHelper
144
144
  #
145
145
  # [fetch_flag_toggle_status_response, feature_flag_variation_index_response, feature_flag_variation_value_response, feature_flag_variation_name_response]
146
146
 
147
- def ld_toggle_variation_served_status(env, flag)
148
- @launchdarkly_helper.toggle_variation_served_status(env, flag)
147
+ def ld_toggle_variation_served(env, flag)
148
+ @launchdarkly_helper.ld_toggle_variation_served(env, flag)
149
149
  end
150
150
 
151
- def delete_flag(flag)
152
- request_url = "#{LAUNCH_DARKLY_FLAGS}/#{flag}"
153
- ld_request(:delete, request_url)
151
+ def ld_rules_clauses_index(env, flag, clause_name)
152
+ @launchdarkly_helper.rules_clauses_index(env, flag, clause_name)
153
+ end
154
+
155
+ def ld_get_values_from_clauses(env, flag, clause_name)
156
+ @launchdarkly_helper.get_values_from_clauses(env, flag, clause_name)
157
+ end
158
+
159
+ def ld_add_values_to_clause(env, flag, clause_name, clause_value)
160
+ @launchdarkly_helper.add_values_to_clause(env, flag, clause_name, clause_value)
161
+ end
162
+
163
+ def ld__remove_values_from_clause(env, flag, clause_name, clause_value)
164
+ @launchdarkly_helper.remove_values_from_clause(env, flag, clause_name, clause_value)
165
+ end
166
+
167
+ def ld_delete_flag(flag)
168
+ @launchdarkly_helper.delete_flag(flag)
154
169
  end
155
170
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchdarkly_api_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - amit-singh-bisht