funneler 1.1.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7a3bf09541da9e35cff85dda980d8e997359390b
4
- data.tar.gz: a1ddccb9db1fe53ee2deca111f870da829f192ab
2
+ SHA256:
3
+ metadata.gz: f7dc39c6f13864d5cd77b31d51408228ac602f6a95e41d572b5c14cba9ea10cc
4
+ data.tar.gz: 1ab89dcbb940877f23369abe8539ff36828e45b3216817c2db0358c501d78d82
5
5
  SHA512:
6
- metadata.gz: a8a83dc3f510b91358e01ed93e9db539f82f15008585d50fa83bd0ee172c9883ec254c80813462ae50ca5378bbdf8901b8dbada1936c429293e06ac6c8c69b6c
7
- data.tar.gz: cfdf91dbc145f71d3159c454d72713ce48a616841a80dfdf5cf5ac2ffe0d1378b84b20d92eaa2b3a4260bd33995657451b17680f9d71bfd9fd79c0b16047bd8a
6
+ metadata.gz: f245f3ff37bf840e4ac697e31f20f43b612b511749f281bd52c244a7c3633fd4f7400c4a4b9def4b5ad20a9e9171008f1914bd1d1588c1e7c4fde83c64b83a6b
7
+ data.tar.gz: 9fd03787d987116a055d7ba9e186338a24d23cc156371c6cd12a343313dfc399ab0423fcf110902b4037c7f51a3135c90e846cf2a72e510e0904c7f5d03896f1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- funneler (1.1.0)
4
+ funneler (1.2.0)
5
5
  jwt
6
6
 
7
7
  GEM
@@ -10,7 +10,7 @@ GEM
10
10
  byebug (8.2.1)
11
11
  coderay (1.1.0)
12
12
  diff-lcs (1.2.5)
13
- jwt (1.5.4)
13
+ jwt (2.1.0)
14
14
  method_source (0.8.2)
15
15
  pry (0.10.3)
16
16
  coderay (~> 1.1.0)
@@ -48,4 +48,4 @@ DEPENDENCIES
48
48
  timecop
49
49
 
50
50
  BUNDLED WITH
51
- 1.13.4
51
+ 1.16.4
@@ -1,7 +1,7 @@
1
1
  module Funneler
2
2
  module ControllerMethods
3
3
  def funnel
4
- @funnel ||= Funneler.from_token(token: params[:funnel_token])
4
+ @funnel ||= Funneler.from_token(token: params[:funnel_token], current_page_index: params[:funnel_index])
5
5
  end
6
6
  end
7
7
  end
@@ -1,10 +1,11 @@
1
1
  module Funneler
2
2
  class Funnel
3
3
 
4
- attr_reader :data
4
+ attr_reader :data, :current_page_index
5
5
 
6
- def initialize(data = {})
6
+ def initialize(data = {}, current_page_index = 0)
7
7
  @data = data
8
+ @current_page_index = data.fetch("current_page_index", nil) || current_page_index
8
9
  @url_cache = Hash.new {|h, key| h[key] = generate_page_for_index(key) }
9
10
  end
10
11
 
@@ -35,10 +36,6 @@ module Funneler
35
36
  data['meta'] || {}
36
37
  end
37
38
 
38
- def current_page_index
39
- data.fetch('current_page_index', 0)
40
- end
41
-
42
39
  def token
43
40
  TokenHandler.generate_token(data: data)
44
41
  end
@@ -49,7 +46,8 @@ module Funneler
49
46
  return if bad_index?(index)
50
47
 
51
48
  token = TokenHandler.generate_token(data: data.merge('current_page_index' => index))
52
- add_params_to_url(routes[index], "funnel_token" => token)
49
+ path = add_params_to_url(routes[index], "funnel_token" => token )
50
+ add_params_to_url(path, "funnel_index" => index)
53
51
  end
54
52
 
55
53
  def add_params_to_url(path, new_params)
@@ -65,11 +63,11 @@ module Funneler
65
63
  end
66
64
 
67
65
  def next_index
68
- current_page_index + 1
66
+ current_page_index.to_i + 1
69
67
  end
70
68
 
71
69
  def previous_index
72
- index = current_page_index - 1
70
+ index = current_page_index.to_i - 1
73
71
  index < 0 ? 0 : index
74
72
  end
75
73
 
@@ -1,3 +1,3 @@
1
1
  module Funneler
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/funneler.rb CHANGED
@@ -23,9 +23,9 @@ module Funneler
23
23
  yield(configuration)
24
24
  end
25
25
 
26
- def from_token(token:)
26
+ def from_token(token:, current_page_index: 0)
27
27
  data = Funneler::TokenHandler.extract_data_from(token)
28
- Funneler::Funnel.new(data)
28
+ Funneler::Funnel.new(data, current_page_index)
29
29
  rescue JWT::DecodeError => e
30
30
  raise InvalidTokenError, "Invalid token '#{token}': #{e.message}"
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: funneler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Stawarz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-15 00:00:00.000000000 Z
11
+ date: 2018-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  version: '0'
139
139
  requirements: []
140
140
  rubyforge_project:
141
- rubygems_version: 2.5.1
141
+ rubygems_version: 2.7.3
142
142
  signing_key:
143
143
  specification_version: 4
144
144
  summary: A light-weight approach for routing users through a pre-determined set of