joy_ussd_engine 0.1.6 → 0.1.7
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +3 -2
- data/lib/generators/joy_menu/templates/joy_menu_template.template +12 -4
- data/lib/generators/joy_paginate_menu/templates/joy_paginate_menu_template.template +35 -27
- data/lib/generators/joy_route_menu/templates/joy_route_menu_template.template +13 -6
- data/lib/joy_ussd_engine/menu.rb +24 -0
- data/lib/joy_ussd_engine/version.rb +1 -1
- data/pkg/joy_ussd_engine-0.1.6.gem +0 -0
- data/pkg/joy_ussd_engine-0.1.7.gem +0 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea7dfcf9e47f093a01d6b8214510d28f671971735521f1f4b2c0a787802bdf63
|
4
|
+
data.tar.gz: bd7438052940100e6285f822d49badc91e37181eba894a0129430168b0704adf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e4f4f4674c530f0c5815f9d17015722112657705e3c6f584e7965278cd47bcbc2f650e59369d99c7fd08939cec8e316d98e651ce0cc735ca82ecbce1bd075d2
|
7
|
+
data.tar.gz: 0f35cf308a6236af3fdb86f074a07c8fa4cc78f2cd455dc1a6394596ea85c54e733747fcc00af6a92039b0859844f16e511067b6b588e777a33269fcc3111392
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -89,7 +89,7 @@ class MyController < ApplicationController
|
|
89
89
|
skip_before_action :verify_authenticity_token
|
90
90
|
|
91
91
|
def create
|
92
|
-
joy_ussd_engine = JoyUssdEngine::Core.new(ussd_params,
|
92
|
+
joy_ussd_engine = JoyUssdEngine::Core.new(ussd_params, JoyUssdEngine::HubtelTransformer, start_point: Ussd::Menus::StartMenu, end_point: Ussd::Menus::EndMenu)
|
93
93
|
response = joy_ussd_engine.process
|
94
94
|
render json: response, status: :created
|
95
95
|
end
|
@@ -146,7 +146,8 @@ class Ussd::Transformers::HubtelTransformer < JoyUssdEngine::DataTransformer
|
|
146
146
|
session_id: params[:Mobile],
|
147
147
|
message: params[:Message],
|
148
148
|
ClientState: params[:ClientState],
|
149
|
-
Type: params[:Type]
|
149
|
+
Type: params[:Type],
|
150
|
+
data: params
|
150
151
|
}
|
151
152
|
end
|
152
153
|
|
@@ -1,7 +1,4 @@
|
|
1
1
|
class Ussd::Menus::<%= menu_name.camelcase %>Menu < JoyUssdEngine::Menu
|
2
|
-
def on_validate
|
3
|
-
# User input validation
|
4
|
-
end
|
5
2
|
|
6
3
|
def before_render
|
7
4
|
# Implement before call backs
|
@@ -9,9 +6,20 @@ class Ussd::Menus::<%= menu_name.camelcase %>Menu < JoyUssdEngine::Menu
|
|
9
6
|
@menu_text = "Welcome to the <%= menu_name.camelcase %> menu"
|
10
7
|
end
|
11
8
|
|
9
|
+
def on_validate
|
10
|
+
# User input validation
|
11
|
+
# if @context.get_state[:<%= menu_name.underscore %>] == "Hello"
|
12
|
+
# @field_error = true
|
13
|
+
# @error_text = "Sorry! Make sure you entered `Hello`."
|
14
|
+
# end
|
15
|
+
end
|
16
|
+
|
12
17
|
def on_error
|
13
|
-
# Render error
|
18
|
+
# Render error and wait for new user input
|
14
19
|
# @menu_text = "#{@error_text}\n#{@menu_text }"
|
20
|
+
|
21
|
+
# OR Render Error and Terminate App Session
|
22
|
+
# return raise_error(@error_text)
|
15
23
|
end
|
16
24
|
|
17
25
|
def after_render
|
@@ -1,40 +1,48 @@
|
|
1
1
|
class Ussd::Menus::<%= paginating_menu_name.camelcase %>Menu < JoyUssdEngine::PaginateMenu
|
2
|
-
def on_validate
|
3
|
-
# User input validation
|
4
|
-
end
|
5
2
|
|
6
3
|
def before_render
|
7
4
|
# Implement before call backs
|
8
5
|
@field_name="<%= paginating_menu_name.underscore %>"
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
7
|
+
# Store paginating items in @paginating_items array variable
|
8
|
+
# @paginating_items = [
|
9
|
+
# {title: "Data Structures", item: {id: 1}},
|
10
|
+
# {title: "Excel Programming", item: {id: 2}},
|
11
|
+
# {title: "Economics", item: {id: 3}},
|
12
|
+
# {title: "Big Bang", item: {id: 4}},
|
13
|
+
# {title: "Democracy Building", item: {id: 5}},
|
14
|
+
# {title: "Python for Data Scientist", item: {id: 6}},
|
15
|
+
# {title: "Money Mind", item: {id: 7}},
|
16
|
+
# {title: "Design Patterns In C#", item: {id: 8}}
|
17
|
+
# ]
|
18
|
+
|
19
|
+
# Call the paginate method and store the return value in paginated_list
|
20
|
+
# paginated_list = paginate
|
21
|
+
|
22
|
+
# Use the show menu method to get the paginated list items and return them as text and store in @menu_text
|
23
|
+
# @menu_text = show_menu(paginated_list, title: "Welcome to the <%= paginating_menu_name.camelcase %> menu", key: 'title')
|
24
|
+
|
25
|
+
# Get the selected item from the user with the `get_selected_item` method and save in state with @context.set_state
|
26
|
+
# if has_selected?
|
27
|
+
# selected_book = get_selected_item
|
28
|
+
# @context.set_state(selected_book: selected_book)
|
29
|
+
# end
|
30
|
+
end
|
31
|
+
|
32
|
+
def on_validate
|
33
|
+
# User input validation
|
34
|
+
# if @context.get_state[:<%= menu_name.underscore %>] == "Hello"
|
35
|
+
# @field_error = true
|
36
|
+
# @error_text = "Sorry! Make sure you entered `Hello`."
|
37
|
+
# end
|
33
38
|
end
|
34
39
|
|
35
40
|
def on_error
|
36
|
-
# Render error
|
41
|
+
# Render error and wait for new user input
|
37
42
|
# @menu_text = "#{@error_text}\n#{@menu_text }"
|
43
|
+
|
44
|
+
# OR Render Error and Terminate App Session
|
45
|
+
# return raise_error(@error_text)
|
38
46
|
end
|
39
47
|
|
40
48
|
def after_render
|
@@ -1,11 +1,7 @@
|
|
1
1
|
class Ussd::Menus::<%= menu_name.camelcase %>Menu < JoyUssdEngine::Menu
|
2
|
-
def on_validate
|
3
|
-
# User input validation
|
4
|
-
end
|
5
|
-
|
6
2
|
def before_render
|
7
3
|
# Implement before call backs
|
8
|
-
|
4
|
+
@field_name="<%= menu_name.underscore %>"
|
9
5
|
|
10
6
|
# title = "Welcome to the <%= menu_name.camelcase %> menu"
|
11
7
|
|
@@ -20,9 +16,20 @@ class Ussd::Menus::<%= menu_name.camelcase %>Menu < JoyUssdEngine::Menu
|
|
20
16
|
# @menu_text = show_menu(title)
|
21
17
|
end
|
22
18
|
|
19
|
+
def on_validate
|
20
|
+
# User input validation
|
21
|
+
# if @context.get_state[:<%= menu_name.underscore %>] == "Hello"
|
22
|
+
# @field_error = true
|
23
|
+
# @error_text = "Sorry! Make sure you entered `Hello`."
|
24
|
+
# end
|
25
|
+
end
|
26
|
+
|
23
27
|
def on_error
|
24
|
-
# Render error
|
28
|
+
# Render error and wait for new user input
|
25
29
|
# @menu_text = "#{@error_text}\n#{@menu_text }"
|
30
|
+
|
31
|
+
# OR Render Error and Terminate App Session
|
32
|
+
# return raise_error(@error_text)
|
26
33
|
end
|
27
34
|
|
28
35
|
def after_render
|
data/lib/joy_ussd_engine/menu.rb
CHANGED
@@ -105,6 +105,7 @@ module JoyUssdEngine
|
|
105
105
|
return if @skip_save
|
106
106
|
data = @context.get_state
|
107
107
|
@previous_client_state = @current_client_state
|
108
|
+
return if data[:"#{@field_name}"].present?
|
108
109
|
# @context.set_state({"#{data[:field]}".to_sym => @context.params[:message]}) unless data[:field].blank?
|
109
110
|
@context.set_state({ClientState: state, PrevClientState: @previous_client_state , field: @field_name, field_error: @field_error, error_text: @error_text})
|
110
111
|
end
|
@@ -112,9 +113,26 @@ module JoyUssdEngine
|
|
112
113
|
def save_field_value
|
113
114
|
data = get_previous_state
|
114
115
|
return if @skip_save
|
116
|
+
return if data[:"#{data[:field]}"].present?
|
115
117
|
@context.set_state({"#{data[:field]}".to_sym => @context.params[:message]}) unless data[:field].blank?
|
116
118
|
end
|
117
119
|
|
120
|
+
# def save_state_load_menu(state)
|
121
|
+
# return if @skip_save
|
122
|
+
# data = @context.get_state
|
123
|
+
# @previous_client_state = @current_client_state
|
124
|
+
# # @context.set_state({"#{data[:field]}".to_sym => @context.params[:message]}) unless data[:field].blank?
|
125
|
+
# return if data[:"#{@field_name}"].present?
|
126
|
+
# @context.set_state({ClientState: state, PrevClientState: @previous_client_state , field: @field_name, field_error: @field_error, error_text: @error_text})
|
127
|
+
# end
|
128
|
+
|
129
|
+
# def save_field_value_load_menu
|
130
|
+
# data = get_previous_state
|
131
|
+
# return if @skip_save
|
132
|
+
# return if data[:"#{data[:field]}"].present?
|
133
|
+
# @context.set_state({"#{data[:field]}".to_sym => @context.params[:message]}) unless data[:field].blank?
|
134
|
+
# end
|
135
|
+
|
118
136
|
def get_previous_state
|
119
137
|
data = @context.get_state
|
120
138
|
@previous_client_state = data[:PrevClientState]
|
@@ -148,10 +166,16 @@ module JoyUssdEngine
|
|
148
166
|
joy_release(@error_text)
|
149
167
|
end
|
150
168
|
|
169
|
+
def remove_error_field
|
170
|
+
data = @context.get_state
|
171
|
+
@context.set_state({"#{@field_name}".to_sym => nil})
|
172
|
+
end
|
173
|
+
|
151
174
|
def render_field_error
|
152
175
|
before_show_menu
|
153
176
|
before_render
|
154
177
|
on_error
|
178
|
+
remove_error_field
|
155
179
|
return render_menu_error[:data] if menu_error
|
156
180
|
response = render
|
157
181
|
response = response.blank? ? joy_response(current_client_state) : response
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: joy_ussd_engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Caleb Mantey
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: will_paginate
|
@@ -104,6 +104,8 @@ files:
|
|
104
104
|
- pkg/joy_ussd_engine-0.1.3.gem
|
105
105
|
- pkg/joy_ussd_engine-0.1.4.gem
|
106
106
|
- pkg/joy_ussd_engine-0.1.5.gem
|
107
|
+
- pkg/joy_ussd_engine-0.1.6.gem
|
108
|
+
- pkg/joy_ussd_engine-0.1.7.gem
|
107
109
|
- spec/joy_ussd_engine_spec.rb
|
108
110
|
- spec/joy_ussd_engine_transformer.spec
|
109
111
|
- spec/spec_helper.rb
|