lita-dpextend 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 113bf4057f65fcb2f74a21d1e57ddcb87d566b19
4
+ data.tar.gz: d8d8256655ff7d89be562247fe8c38eeb224a8c6
5
+ SHA512:
6
+ metadata.gz: a0baf5a4b8ffcc42a6f845fcc2fa3b565af6a46a80dd50ab565bf46ee90a2d5eb0aac5fffacb17ad375abecda69228c27ddb1325340d869f666d874fb7cb7331
7
+ data.tar.gz: 115e1748341c3d8303a2ddb238a5f5a6897aea5bb0a40f28fae95a8e2d144058af62f5d5bd14a7e9fc151814b1fede32bf234870d3ba771c6df15c3ae24b4b01
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # lita-dpextend
2
+
3
+ TODO: Add a description of the plugin.
4
+
5
+ ## Installation
6
+
7
+ Add lita-dpextend to your Lita plugin's gemspec:
8
+
9
+ ``` ruby
10
+ spec.add_runtime_dependency "lita-dpextend"
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ TODO: Describe the plugin's features and how to use them.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,20 @@
1
+ require 'lita'
2
+
3
+ Lita.load_locales Dir[File.expand_path(
4
+ File.join('..', '..', 'locales', '*.yml'), __FILE__
5
+ )]
6
+
7
+ require 'telegram/bot'
8
+ require 'lita-telegram'
9
+ require 'lita-wizard'
10
+ require 'lita-api-ai'
11
+ require 'xtend/wizard_extension'
12
+ require 'xtend/lita_wizard'
13
+ require 'xtend/telegram_adapter'
14
+ require 'xtend/api_ai_handler'
15
+ require 'lita/extensions/dpextend'
16
+
17
+ Lita::Extensions::Wizard.include Xtend::WizardExtension
18
+ Lita::Adapters::Telegram.prepend Xtend::TelegramAdapter
19
+ Lita::Handlers::ApiAi.prepend Xtend::ApiAiHandler
20
+ Lita::Wizard.prepend Xtend::LitaWizard
@@ -0,0 +1,11 @@
1
+ module Lita
2
+ module Extensions
3
+ class Dpextend
4
+ # insert extension code here
5
+
6
+ # If your extension needs to register with a Lita hook, uncomment the
7
+ # following line and change the hook name to the appropriate value:
8
+ # Lita.register_hook(:hook_name, self)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ module Xtend
2
+ module ApiAiHandler
3
+ private
4
+ def should_reply?(message)
5
+ # don't reply if user don't be authenticated (solve duplicated answers problem)
6
+ return unless message&.source&.user&.metadata['cpf']
7
+ true
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,32 @@
1
+ module Xtend
2
+ module LitaWizard
3
+ # rubocop:disable Style/CyclomaticComplexity
4
+ def handle_message
5
+ if message.body =~ /(^cancelar$|^abortar$|^não$|^nao$|^pare$|^para$)/
6
+ send_message abort_message
7
+ abort_wizard
8
+ destroy
9
+ elsif step.nil?
10
+ send_message 'Opa, tive um probleminha e por isso cancelei esse procedimento.'
11
+ destroy
12
+ elsif message.body =~ /(^concluir$|^ok$|^feito$)/ && step[:multiline]
13
+ save
14
+ advance
15
+ elsif valid_response?
16
+ if step[:multiline]
17
+ values[current_step_index] ||= ''
18
+ values[current_step_index] << "\n"
19
+ values[current_step_index] << message.body
20
+ values[current_step_index].strip!
21
+ save
22
+ else
23
+ values[current_step_index] = message.body
24
+ save
25
+ advance
26
+ end
27
+ else
28
+ send_message @error_message
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,40 @@
1
+ module Xtend
2
+ module TelegramAdapter
3
+
4
+
5
+ def run
6
+ client.listen do |message|
7
+ user = Lita::User.find_by_id(message.from.id)
8
+ user = Lita::User.create(message.from.id, name: message.from.username) unless user
9
+
10
+ chat = Lita::Room.new(message.chat.id)
11
+
12
+ source = Lita::Source.new(user: user, room: chat)
13
+
14
+ message.text ||= ''
15
+ msg = Lita::Message.new(robot, message.text, source)
16
+
17
+ robot.receive(msg)
18
+ end
19
+ end
20
+
21
+
22
+ def send_messages(target, messages)
23
+ messages.each do |message|
24
+ typing(target)
25
+ if message.is_a?(String)
26
+ client.api.sendMessage(chat_id: target.room.to_i, text: message)
27
+ elsif message.is_a?(Hash)
28
+ client.api.sendMessage(chat_id: target.room.to_i, **message)
29
+ else
30
+ next
31
+ end
32
+ end
33
+ end
34
+
35
+ def typing(target)
36
+ client.api.sendChatAction(chat_id: target.room.to_i, action: 'typing')
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,7 @@
1
+ module Xtend
2
+ module WizardExtension
3
+ def private_message?
4
+ true # TODO: if plataform telegram
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,29 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'lita-dpextend'
3
+ spec.version = '0.1.0'
4
+ spec.authors = ['Luiz Carvalho']
5
+ spec.email = ['maximusmano@gmail.com']
6
+ spec.description = 'Override methods to using best of Lita'
7
+ spec.summary = 'Monke patchs to all'
8
+ spec.homepage = 'http://chatbot.defensoria.to.gov.br'
9
+ spec.license = 'MIT'
10
+ spec.metadata = { 'lita_plugin_type' => 'extension' }
11
+
12
+ spec.files = `git ls-files`.split($/)
13
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
14
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
+ spec.require_paths = ['lib']
16
+
17
+ spec.add_runtime_dependency 'lita', '~> 4.7'
18
+ spec.add_runtime_dependency 'telegram-bot-ruby', '~> 0.8'
19
+ spec.add_runtime_dependency 'lita-wizard', '~> 1.0'
20
+ spec.add_runtime_dependency 'lita-telegram', '~> 0.1'
21
+ spec.add_runtime_dependency 'lita-api-ai', '~> 0.1.1'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.3'
24
+ spec.add_development_dependency 'pry-byebug', '~> 3.4'
25
+ spec.add_development_dependency 'rake', '~> 12.0'
26
+ spec.add_development_dependency 'pry', '~> 0.10'
27
+ spec.add_development_dependency 'rack-test', '~> 0.6'
28
+ spec.add_development_dependency 'rspec', '~> 3.0'
29
+ end
data/locales/en.yml ADDED
@@ -0,0 +1,4 @@
1
+ en:
2
+ lita:
3
+ extensions:
4
+ dpextend:
@@ -0,0 +1,4 @@
1
+ require "spec_helper"
2
+
3
+ describe Lita::Extensions::Dpextend, lita: true do
4
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Xtend::TelegramAdapter do
4
+ it 'is a module' do
5
+ expect(Xtend::TelegramAdapter).to be_a(Module)
6
+ end
7
+
8
+ it 'overrride Lita::Adapters::Telegram' do
9
+ expect(Lita::Adapters::Telegram.method_defined?(:typing)).to be true
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ require 'lita-dpextend'
2
+ require 'lita/rspec'
3
+ require 'pry'
4
+
5
+ # A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
6
+ # was generated with Lita 4, the compatibility mode should be left disabled.
7
+ Lita.version_3_compatibility_mode = false
metadata ADDED
@@ -0,0 +1,217 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lita-dpextend
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Luiz Carvalho
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lita
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: telegram-bot-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: lita-wizard
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: lita-telegram
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: lita-api-ai
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.4'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '12.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '12.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.10'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.10'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rack-test
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.6'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.6'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.0'
167
+ description: Override methods to using best of Lita
168
+ email:
169
+ - maximusmano@gmail.com
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - ".gitignore"
175
+ - Gemfile
176
+ - README.md
177
+ - Rakefile
178
+ - lib/lita-dpextend.rb
179
+ - lib/lita/extensions/dpextend.rb
180
+ - lib/xtend/api_ai_handler.rb
181
+ - lib/xtend/lita_wizard.rb
182
+ - lib/xtend/telegram_adapter.rb
183
+ - lib/xtend/wizard_extension.rb
184
+ - lita-dpextend.gemspec
185
+ - locales/en.yml
186
+ - spec/lita/extensions/dpextend_spec.rb
187
+ - spec/lita/xtend/telegram_spec.rb
188
+ - spec/spec_helper.rb
189
+ homepage: http://chatbot.defensoria.to.gov.br
190
+ licenses:
191
+ - MIT
192
+ metadata:
193
+ lita_plugin_type: extension
194
+ post_install_message:
195
+ rdoc_options: []
196
+ require_paths:
197
+ - lib
198
+ required_ruby_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ required_rubygems_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ requirements: []
209
+ rubyforge_project:
210
+ rubygems_version: 2.6.11
211
+ signing_key:
212
+ specification_version: 4
213
+ summary: Monke patchs to all
214
+ test_files:
215
+ - spec/lita/extensions/dpextend_spec.rb
216
+ - spec/lita/xtend/telegram_spec.rb
217
+ - spec/spec_helper.rb