ft_gem 3.1.7 → 3.1.14

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: 871c3d6f5f3d0f85c5d1677cd6f72c41590c2d2cb03dd09a8bb97476831e9fb2
4
- data.tar.gz: f96b70b64a0385f08580ee9c676b31122e4be4336532c3e376bfa69135cb725c
3
+ metadata.gz: db43b97ec5443d62e7c13333b733500fed1cbd9c2f13462955ef242dd810a0c2
4
+ data.tar.gz: 1941b502277a462f749f29199c068007c614e0ad175a1e65ccf8139f35dcd86b
5
5
  SHA512:
6
- metadata.gz: c656b69d716010847867e54d1c5fb18a904051421b2214a532a77bc3a7a46bfff39d08c8cc21b281cc76950b4b7183ba4c68c12fd135067bb0b553a52740bdb5
7
- data.tar.gz: 0e81709647e1b7306d0e6049556f57b5e96f15af9419b7b5c0e502ead9ad82f7c04e2fc216a684d6801486c428c489cf28248b12b7e38788d9dae97b74fda2b8
6
+ metadata.gz: 78dd064fd71a7862fa0a8ab4c61a5c30b0faf4bb3e4a0394429e1669fd9c57e6795dbb2d68ce85af9393b306e03f536db2dcde0704b8b77ba03dc8048b36189d
7
+ data.tar.gz: 36cc45d908f1ce9e74963b65169d2c546962c49d9b9c415a30f341e391b7b64558f61c20a96e8e397b5b5034bb79acb2d4c19b3027261b98d9f12643e37ce09c
@@ -1,10 +1,15 @@
1
1
  require 'ft_gem/shared/ft_shared'
2
2
  require 'ft_gem/view/helpers'
3
+ require 'ft_gem/services/beta_service'
3
4
  module FtGem
4
5
  module Controllers
5
6
  autoload :Helpers, 'ft_gem/controllers/helpers'
6
7
  end
7
8
 
9
+ module Services
10
+ autoload :BetaService, 'ft_gem/services/beta_service'
11
+ end
12
+
8
13
  class Railtie < Rails::Railtie
9
14
  initializer 'ft_gem.view.helpers' do |_app|
10
15
  ActionView::Base.send :include, FtGem::View::Helpers
@@ -3,6 +3,7 @@ module FtGem
3
3
  module Helpers
4
4
  extend ActiveSupport::Concern
5
5
  TOGGLE_COOKIE_NAME = 'mnft'.freeze
6
+ PUBLICBETA_COOKIE_NAME = 'mnbeta'.freeze
6
7
  require 'base64'
7
8
 
8
9
  def feature_toggle_status(name:, user_id: nil, url: nil)
@@ -14,11 +15,11 @@ module FtGem
14
15
  client_percentage = calc_client_percentage(decoded_cookie: decoded_cookie, toggle_name: name)
15
16
  toggle_percentage = toggles[index.to_i]['attributes']['percentage']
16
17
  whitelisted = FtShared.new.whitelisted?(url: url, whitelist_urls: toggles[index.to_i]['attributes']['whitelist-urls'])
17
- if user_id_beta(user_id: user_id, toggles: toggles)
18
- return true && whitelisted
19
- else
20
- return client_percentage.to_i <= toggle_percentage.to_i && whitelisted
21
- end
18
+
19
+ return true && whitelisted if FtGem::Services::BetaService.public_beta?(cookie: Base64.decode64(cookies[PUBLICBETA_COOKIE_NAME]),toggles: toggles, index: index)
20
+ return true && whitelisted if FtGem::Services::BetaService.private_beta?(user_id: user_id, toggles: toggles, index: index)
21
+
22
+ return client_percentage.to_i <= toggle_percentage.to_i && whitelisted
22
23
  rescue StandardError => e
23
24
  Rails.logger.error "FtGem::feature_toggle_status error #{e.backtrace}"
24
25
  false
@@ -53,12 +54,6 @@ module FtGem
53
54
  def api_feature_toggle_status(name:)
54
55
  FtGem::View::Helpers.status(name: name)
55
56
  end
56
-
57
- private
58
-
59
- def user_id_beta(user_id: nil, toggles: nil)
60
- user_id.present? && toggles.present? && toggles[index.to_i]['attributes']['status'] == "amber" && toggles[index.to_i]['attributes']['beta-users'].split(",").include?(user_id.to_s)
61
- end
62
57
  end
63
58
  end
64
59
  end
@@ -0,0 +1,21 @@
1
+ module FtGem
2
+ module Services
3
+ module BetaService
4
+ def self.private_beta?(user_id: nil, toggles: nil, index: "")
5
+ return false unless user_id.present?
6
+ return false unless toggles.present?
7
+
8
+ attributes = toggles[index.to_i].dig('attributes')
9
+
10
+ attributes['status'] == "privatebeta" && attributes['beta-users'].split(",").include?(user_id.to_s)
11
+ end
12
+
13
+ def self.public_beta?(cookie: "", toggles: nil, index: "")
14
+ return false unless toggles.present?
15
+
16
+ attributes = toggles.dig(index.to_i, 'attributes')
17
+ cookie == "true" && attributes['status'] == "publicbeta"
18
+ end
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ft_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.7
4
+ version: 3.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Murray Catto
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-18 00:00:00.000000000 Z
11
+ date: 2020-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mumsnet_jwt
@@ -38,20 +38,21 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description:
42
- email:
41
+ description:
42
+ email:
43
43
  executables: []
44
44
  extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
47
  - lib/ft_gem.rb
48
48
  - lib/ft_gem/controllers/helpers.rb
49
+ - lib/ft_gem/services/beta_service.rb
49
50
  - lib/ft_gem/shared/ft_shared.rb
50
51
  - lib/ft_gem/view/helpers.rb
51
- homepage:
52
+ homepage:
52
53
  licenses: []
53
54
  metadata: {}
54
- post_install_message:
55
+ post_install_message:
55
56
  rdoc_options: []
56
57
  require_paths:
57
58
  - lib
@@ -66,8 +67,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
67
  - !ruby/object:Gem::Version
67
68
  version: '0'
68
69
  requirements: []
69
- rubygems_version: 3.0.8
70
- signing_key:
70
+ rubygems_version: 3.0.3
71
+ signing_key:
71
72
  specification_version: 4
72
73
  summary: Client side feature toggle
73
74
  test_files: []