bas 0.2.0 → 0.3.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 +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +25 -22
- data/lib/bas/formatter/base.rb +2 -2
- data/lib/bas/formatter/birthday.rb +8 -4
- data/lib/bas/formatter/pto.rb +8 -4
- data/lib/bas/formatter/support_emails.rb +7 -3
- data/lib/bas/formatter/types/response.rb +16 -0
- data/lib/bas/formatter/work_items_limit.rb +8 -4
- data/lib/bas/process/base.rb +39 -0
- data/lib/bas/{dispatcher → process}/discord/exceptions/invalid_webhook_token.rb +1 -1
- data/lib/bas/process/discord/implementation.rb +71 -0
- data/lib/bas/{dispatcher → process}/discord/types/response.rb +1 -1
- data/lib/bas/{dispatcher → process}/slack/exceptions/invalid_webhook_token.rb +1 -1
- data/lib/bas/process/slack/implementation.rb +70 -0
- data/lib/bas/{dispatcher → process}/slack/types/response.rb +1 -1
- data/lib/bas/process/types/response.rb +16 -0
- data/lib/bas/{fetcher → read}/base.rb +8 -8
- data/lib/bas/{fetcher → read}/github/base.rb +7 -7
- data/lib/bas/{fetcher → read}/github/types/response.rb +1 -1
- data/lib/bas/read/github/use_case/repo_issues.rb +17 -0
- data/lib/bas/{fetcher → read}/imap/base.rb +7 -7
- data/lib/bas/{fetcher → read}/imap/types/response.rb +1 -1
- data/lib/bas/read/imap/use_case/support_emails.rb +26 -0
- data/lib/bas/{fetcher → read}/notion/base.rb +8 -8
- data/lib/bas/{fetcher → read}/notion/helper.rb +1 -1
- data/lib/bas/{fetcher → read}/notion/types/response.rb +1 -1
- data/lib/bas/{fetcher → read}/notion/use_case/birthday_next_week.rb +6 -6
- data/lib/bas/{fetcher → read}/notion/use_case/birthday_today.rb +6 -6
- data/lib/bas/{fetcher → read}/notion/use_case/pto_next_week.rb +6 -6
- data/lib/bas/{fetcher → read}/notion/use_case/pto_today.rb +6 -6
- data/lib/bas/{fetcher → read}/notion/use_case/work_items_limit.rb +5 -5
- data/lib/bas/{fetcher → read}/postgres/base.rb +8 -8
- data/lib/bas/{fetcher → read}/postgres/helper.rb +1 -1
- data/lib/bas/{fetcher → read}/postgres/types/response.rb +1 -1
- data/lib/bas/{fetcher → read}/postgres/use_case/pto_today.rb +6 -6
- data/lib/bas/{mapper → serialize}/base.rb +7 -7
- data/lib/bas/{mapper → serialize}/github/issues.rb +7 -7
- data/lib/bas/{mapper → serialize}/imap/support_emails.rb +7 -7
- data/lib/bas/{mapper → serialize}/notion/birthday_today.rb +7 -7
- data/lib/bas/{mapper → serialize}/notion/pto_today.rb +14 -12
- data/lib/bas/{mapper → serialize}/notion/work_items_limit.rb +7 -7
- data/lib/bas/{mapper → serialize}/postgres/pto_today.rb +7 -7
- data/lib/bas/use_cases/types/config.rb +6 -5
- data/lib/bas/use_cases/use_case.rb +13 -10
- data/lib/bas/use_cases/use_cases.rb +71 -61
- data/lib/bas/version.rb +1 -1
- data/lib/bas/write/base.rb +36 -0
- data/lib/bas/write/logs/base.rb +33 -0
- data/lib/bas/write/logs/use_case/console_log.rb +22 -0
- metadata +42 -37
- data/lib/bas/dispatcher/base.rb +0 -31
- data/lib/bas/dispatcher/discord/implementation.rb +0 -51
- data/lib/bas/dispatcher/slack/implementation.rb +0 -51
- data/lib/bas/fetcher/github/use_case/repo_issues.rb +0 -17
- data/lib/bas/fetcher/imap/use_case/support_emails.rb +0 -26
- /data/lib/bas/{fetcher → read}/notion/exceptions/invalid_api_key.rb +0 -0
- /data/lib/bas/{fetcher → read}/notion/exceptions/invalid_database_id.rb +0 -0
@@ -3,27 +3,27 @@
|
|
3
3
|
require_relative "../../domain/work_items_limit"
|
4
4
|
require_relative "../base"
|
5
5
|
|
6
|
-
module
|
6
|
+
module Serialize
|
7
7
|
module Notion
|
8
8
|
##
|
9
|
-
# This class
|
10
|
-
# for preparing or shaping work items data coming from a
|
9
|
+
# This class implements the methods of the Serialize::Base module, specifically designed
|
10
|
+
# for preparing or shaping work items data coming from a Read::Base implementation.
|
11
11
|
class WorkItemsLimit
|
12
12
|
include Base
|
13
13
|
|
14
14
|
WORK_ITEM_PARAMS = ["Responsible domain"].freeze
|
15
15
|
|
16
|
-
# Implements the logic for shaping the results from a
|
16
|
+
# Implements the logic for shaping the results from a reader response.
|
17
17
|
#
|
18
18
|
# <br>
|
19
19
|
# <b>Params:</b>
|
20
|
-
# * <tt>
|
20
|
+
# * <tt>Read::Notion::Types::Response</tt> notion_response: Notion response object.
|
21
21
|
#
|
22
22
|
# <br>
|
23
|
-
# <b>return</b> <tt>List<Domain::WorkItem></tt> work_items_list,
|
23
|
+
# <b>return</b> <tt>List<Domain::WorkItem></tt> work_items_list, serialized work items to be used by a
|
24
24
|
# Formatter::Base implementation.
|
25
25
|
#
|
26
|
-
def
|
26
|
+
def execute(notion_response)
|
27
27
|
return [] if notion_response.results.empty?
|
28
28
|
|
29
29
|
normalized_notion_data = normalize_response(notion_response.results)
|
@@ -3,24 +3,24 @@
|
|
3
3
|
require_relative "../../domain/pto"
|
4
4
|
require_relative "../base"
|
5
5
|
|
6
|
-
module
|
6
|
+
module Serialize
|
7
7
|
module Postgres
|
8
8
|
##
|
9
|
-
# This class
|
10
|
-
# shaping PTO's data coming from the
|
9
|
+
# This class implements the methods of the Serialize::Base module, specifically designed for preparing or
|
10
|
+
# shaping PTO's data coming from the Read::Postgres::Pto class.
|
11
11
|
#
|
12
12
|
class PtoToday
|
13
|
-
# Implements the logic for shaping the results from a
|
13
|
+
# Implements the logic for shaping the results from a reader response.
|
14
14
|
#
|
15
15
|
# <br>
|
16
16
|
# <b>Params:</b>
|
17
|
-
# * <tt>
|
17
|
+
# * <tt>Read::Postgres::Types::Response</tt> pg_response: Postgres response object.
|
18
18
|
#
|
19
19
|
# <br>
|
20
|
-
# <b>returns</b> <tt>List<Domain::Pto></tt> ptos_list,
|
20
|
+
# <b>returns</b> <tt>List<Domain::Pto></tt> ptos_list, serialized PTO's to be used by a Formatter::Base
|
21
21
|
# implementation.
|
22
22
|
#
|
23
|
-
def
|
23
|
+
def execute(pg_response)
|
24
24
|
return [] if pg_response.records.empty?
|
25
25
|
|
26
26
|
ptos = build_map(pg_response)
|
@@ -6,13 +6,14 @@ module UseCases
|
|
6
6
|
# Represents a the configuration composing the initial components required by a UseCases::UseCase implementation.
|
7
7
|
#
|
8
8
|
class Config
|
9
|
-
attr_reader :
|
9
|
+
attr_reader :read, :serialize, :formatter, :process, :write
|
10
10
|
|
11
|
-
def initialize(
|
12
|
-
@
|
13
|
-
@
|
11
|
+
def initialize(read, serialize, formatter, process, write)
|
12
|
+
@read = read
|
13
|
+
@serialize = serialize
|
14
14
|
@formatter = formatter
|
15
|
-
@
|
15
|
+
@process = process
|
16
|
+
@write = write
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -6,7 +6,7 @@ module UseCases
|
|
6
6
|
# logic flow by coordinating the execution of its components to fulfill a specific use case.
|
7
7
|
#
|
8
8
|
class UseCase
|
9
|
-
attr_reader :
|
9
|
+
attr_reader :read, :serialize, :formatter, :process, :write
|
10
10
|
|
11
11
|
# Initializes the use case with the necessary components.
|
12
12
|
#
|
@@ -15,25 +15,28 @@ module UseCases
|
|
15
15
|
# * <tt>Usecases::Types::Config</tt> config, The components required to instantiate a use case.
|
16
16
|
#
|
17
17
|
def initialize(config)
|
18
|
-
@
|
19
|
-
@
|
18
|
+
@read = config.read
|
19
|
+
@serialize = config.serialize
|
20
20
|
@formatter = config.formatter
|
21
|
-
@
|
21
|
+
@process = config.process
|
22
|
+
@write = config.write
|
22
23
|
end
|
23
24
|
|
24
|
-
# Executes the use case by orchestrating the sequential execution of the
|
25
|
+
# Executes the use case by orchestrating the sequential execution of the read, serialize, formatter, and process.
|
25
26
|
#
|
26
27
|
# <br>
|
27
|
-
# <b>returns</b> <tt>
|
28
|
+
# <b>returns</b> <tt>Process::Discord::Types::Response</tt>
|
28
29
|
#
|
29
30
|
def perform
|
30
|
-
response =
|
31
|
+
response = read.execute
|
31
32
|
|
32
|
-
|
33
|
+
serialization = serialize.execute(response)
|
33
34
|
|
34
|
-
|
35
|
+
format_response = valid_format_response(serialization)
|
35
36
|
|
36
|
-
|
37
|
+
process_response = process.execute(format_response)
|
38
|
+
|
39
|
+
write.execute(process_response)
|
37
40
|
end
|
38
41
|
end
|
39
42
|
end
|
@@ -1,22 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
4
|
-
require_relative "../
|
5
|
-
require_relative "../
|
6
|
-
require_relative "../
|
7
|
-
require_relative "../
|
8
|
-
require_relative "../
|
9
|
-
require_relative "../
|
10
|
-
require_relative "../
|
11
|
-
require_relative "../
|
3
|
+
# read
|
4
|
+
require_relative "../read/notion/use_case/birthday_today"
|
5
|
+
require_relative "../read/notion/use_case/birthday_next_week"
|
6
|
+
require_relative "../read/notion/use_case/pto_today"
|
7
|
+
require_relative "../read/notion/use_case/pto_next_week"
|
8
|
+
require_relative "../read/notion/use_case/work_items_limit"
|
9
|
+
require_relative "../read/postgres/use_case/pto_today"
|
10
|
+
require_relative "../read/imap/use_case/support_emails"
|
11
|
+
require_relative "../read/github/use_case/repo_issues"
|
12
12
|
|
13
|
-
#
|
14
|
-
require_relative "../
|
15
|
-
require_relative "../
|
16
|
-
require_relative "../
|
17
|
-
require_relative "../
|
18
|
-
require_relative "../
|
19
|
-
require_relative "../
|
13
|
+
# serialize
|
14
|
+
require_relative "../serialize/notion/birthday_today"
|
15
|
+
require_relative "../serialize/notion/pto_today"
|
16
|
+
require_relative "../serialize/notion/work_items_limit"
|
17
|
+
require_relative "../serialize/postgres/pto_today"
|
18
|
+
require_relative "../serialize/imap/support_emails"
|
19
|
+
require_relative "../serialize/github/issues"
|
20
20
|
|
21
21
|
# formatter
|
22
22
|
require_relative "../formatter/birthday"
|
@@ -24,9 +24,12 @@ require_relative "../formatter/pto"
|
|
24
24
|
require_relative "../formatter/work_items_limit"
|
25
25
|
require_relative "../formatter/support_emails"
|
26
26
|
|
27
|
-
#
|
28
|
-
require_relative "../
|
29
|
-
require_relative "../
|
27
|
+
# process
|
28
|
+
require_relative "../process/discord/implementation"
|
29
|
+
require_relative "../process/slack/implementation"
|
30
|
+
|
31
|
+
# write
|
32
|
+
require_relative "../write/logs/use_case/console_log"
|
30
33
|
|
31
34
|
require_relative "use_case"
|
32
35
|
require_relative "./types/config"
|
@@ -41,11 +44,11 @@ module UseCases
|
|
41
44
|
# <b>Example</b>
|
42
45
|
#
|
43
46
|
# options = {
|
44
|
-
#
|
47
|
+
# read_options: {
|
45
48
|
# database_id: NOTION_DATABASE_ID,
|
46
49
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
47
50
|
# },
|
48
|
-
#
|
51
|
+
# process_options: {
|
49
52
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
50
53
|
# name: "Birthday Bot"
|
51
54
|
# }
|
@@ -75,11 +78,12 @@ module UseCases
|
|
75
78
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
76
79
|
#
|
77
80
|
def self.notify_birthday_from_notion_to_discord(options)
|
78
|
-
|
79
|
-
|
81
|
+
read = Read::Notion::BirthdayToday.new(options[:read_options])
|
82
|
+
serialize = Serialize::Notion::BirthdayToday.new
|
80
83
|
formatter = Formatter::Birthday.new(options[:format_options])
|
81
|
-
|
82
|
-
|
84
|
+
process = Process::Discord::Implementation.new(options[:process_options])
|
85
|
+
write = Write::Logs::ConsoleLog.new
|
86
|
+
use_case_config = UseCases::Types::Config.new(read, serialize, formatter, process, write)
|
83
87
|
|
84
88
|
UseCases::UseCase.new(use_case_config)
|
85
89
|
end
|
@@ -89,11 +93,11 @@ module UseCases
|
|
89
93
|
# <b>Example</b>
|
90
94
|
#
|
91
95
|
# options = {
|
92
|
-
#
|
96
|
+
# read_options: {
|
93
97
|
# database_id: NOTION_DATABASE_ID,
|
94
98
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
95
99
|
# },
|
96
|
-
#
|
100
|
+
# process_options: {
|
97
101
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
98
102
|
# name: "Birthday Bot"
|
99
103
|
# },
|
@@ -127,11 +131,12 @@ module UseCases
|
|
127
131
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
128
132
|
#
|
129
133
|
def self.notify_next_week_birthday_from_notion_to_discord(options)
|
130
|
-
|
131
|
-
|
134
|
+
read = Read::Notion::BirthdayNextWeek.new(options[:read_options])
|
135
|
+
serialize = Serialize::Notion::BirthdayToday.new
|
132
136
|
formatter = Formatter::Birthday.new(options[:format_options])
|
133
|
-
|
134
|
-
|
137
|
+
process = Process::Discord::Implementation.new(options[:process_options])
|
138
|
+
write = Write::Logs::ConsoleLog.new
|
139
|
+
use_case_cofig = UseCases::Types::Config.new(read, serialize, formatter, process, write)
|
135
140
|
|
136
141
|
UseCases::UseCase.new(use_case_cofig)
|
137
142
|
end
|
@@ -142,11 +147,11 @@ module UseCases
|
|
142
147
|
# <b>Example</b>
|
143
148
|
#
|
144
149
|
# options = {
|
145
|
-
#
|
150
|
+
# read_options: {
|
146
151
|
# database_id: NOTION_DATABASE_ID,
|
147
152
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
148
153
|
# },
|
149
|
-
#
|
154
|
+
# process_options: {
|
150
155
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
151
156
|
# name: "Pto Bot"
|
152
157
|
# }
|
@@ -174,11 +179,12 @@ module UseCases
|
|
174
179
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
175
180
|
#
|
176
181
|
def self.notify_pto_from_notion_to_discord(options)
|
177
|
-
|
178
|
-
|
182
|
+
read = Read::Notion::PtoToday.new(options[:read_options])
|
183
|
+
serialize = Serialize::Notion::PtoToday.new
|
179
184
|
formatter = Formatter::Pto.new(options[:format_options])
|
180
|
-
|
181
|
-
|
185
|
+
process = Process::Discord::Implementation.new(options[:process_options])
|
186
|
+
write = Write::Logs::ConsoleLog.new
|
187
|
+
use_case_config = UseCases::Types::Config.new(read, serialize, formatter, process, write)
|
182
188
|
|
183
189
|
UseCases::UseCase.new(use_case_config)
|
184
190
|
end
|
@@ -189,11 +195,11 @@ module UseCases
|
|
189
195
|
# <b>Example</b>
|
190
196
|
#
|
191
197
|
# options = {
|
192
|
-
#
|
198
|
+
# read_options: {
|
193
199
|
# database_id: NOTION_DATABASE_ID,
|
194
200
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
195
201
|
# },
|
196
|
-
#
|
202
|
+
# process_options: {
|
197
203
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
198
204
|
# name: "Pto Bot"
|
199
205
|
# },
|
@@ -225,11 +231,12 @@ module UseCases
|
|
225
231
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
226
232
|
#
|
227
233
|
def self.notify_next_week_pto_from_notion_to_discord(options)
|
228
|
-
|
229
|
-
|
234
|
+
read = Read::Notion::PtoNextWeek.new(options[:read_options])
|
235
|
+
serialize = Serialize::Notion::PtoToday.new
|
230
236
|
formatter = Formatter::Pto.new(options[:format_options])
|
231
|
-
|
232
|
-
|
237
|
+
process = Process::Discord::Implementation.new(options[:process_options])
|
238
|
+
write = Write::Logs::ConsoleLog.new
|
239
|
+
use_case_config = UseCases::Types::Config.new(read, serialize, formatter, process, write)
|
233
240
|
|
234
241
|
UseCases::UseCase.new(use_case_config)
|
235
242
|
end
|
@@ -240,7 +247,7 @@ module UseCases
|
|
240
247
|
# <b>Example</b>
|
241
248
|
#
|
242
249
|
# options = {
|
243
|
-
#
|
250
|
+
# read_options: {
|
244
251
|
# connection: {
|
245
252
|
# host: "localhost",
|
246
253
|
# port: 5432,
|
@@ -249,7 +256,7 @@ module UseCases
|
|
249
256
|
# password: "postgres"
|
250
257
|
# }
|
251
258
|
# },
|
252
|
-
#
|
259
|
+
# process_options:{
|
253
260
|
# webhook: "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
|
254
261
|
# name: "Pto Bot"
|
255
262
|
# },
|
@@ -279,11 +286,12 @@ module UseCases
|
|
279
286
|
# https://api.slack.com/messaging/webhooks#create_a_webhook
|
280
287
|
#
|
281
288
|
def self.notify_pto_from_postgres_to_slack(options)
|
282
|
-
|
283
|
-
|
289
|
+
read = Read::Postgres::PtoToday.new(options[:read_options])
|
290
|
+
serialize = Serialize::Postgres::PtoToday.new
|
284
291
|
formatter = Formatter::Pto.new(options[:format_options])
|
285
|
-
|
286
|
-
|
292
|
+
process = Process::Slack::Implementation.new(options[:process_options])
|
293
|
+
write = Write::Logs::ConsoleLog.new
|
294
|
+
use_case_config = UseCases::Types::Config.new(read, serialize, formatter, process, write)
|
287
295
|
|
288
296
|
UseCases::UseCase.new(use_case_config)
|
289
297
|
end
|
@@ -294,11 +302,11 @@ module UseCases
|
|
294
302
|
# <b>Example</b>
|
295
303
|
#
|
296
304
|
# options = {
|
297
|
-
#
|
305
|
+
# read_options: {
|
298
306
|
# database_id: NOTION_DATABASE_ID,
|
299
307
|
# secret: NOTION_API_INTEGRATION_SECRET
|
300
308
|
# },
|
301
|
-
#
|
309
|
+
# process_options: {
|
302
310
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
303
311
|
# name: "wipLimit"
|
304
312
|
# }
|
@@ -326,11 +334,12 @@ module UseCases
|
|
326
334
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
327
335
|
#
|
328
336
|
def self.notify_wip_limit_from_notion_to_discord(options)
|
329
|
-
|
330
|
-
|
337
|
+
read = Read::Notion::WorkItemsLimit.new(options[:read_options])
|
338
|
+
serialize = Serialize::Notion::WorkItemsLimit.new
|
331
339
|
formatter = Formatter::WorkItemsLimit.new(options[:format_options])
|
332
|
-
|
333
|
-
|
340
|
+
process = Process::Discord::Implementation.new(options[:process_options])
|
341
|
+
write = Write::Logs::ConsoleLog.new
|
342
|
+
use_case_config = UseCases::Types::Config.new(read, serialize, formatter, process, write)
|
334
343
|
|
335
344
|
UseCases::UseCase.new(use_case_config)
|
336
345
|
end
|
@@ -341,7 +350,7 @@ module UseCases
|
|
341
350
|
# <b>Example</b>
|
342
351
|
#
|
343
352
|
# options = {
|
344
|
-
#
|
353
|
+
# read_options: {
|
345
354
|
# user: 'info@email.co',
|
346
355
|
# refresh_token: REFRESH_TOKEN,
|
347
356
|
# client_id: CLIENT_ID,
|
@@ -349,7 +358,7 @@ module UseCases
|
|
349
358
|
# inbox: 'INBOX',
|
350
359
|
# search_email: 'support@email.co'
|
351
360
|
# },
|
352
|
-
#
|
361
|
+
# process_options: {
|
353
362
|
# webhook: "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
|
354
363
|
# name: "emailSupport"
|
355
364
|
# }
|
@@ -368,11 +377,12 @@ module UseCases
|
|
368
377
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
369
378
|
#
|
370
379
|
def self.notify_support_email_from_imap_to_discord(options)
|
371
|
-
|
372
|
-
|
380
|
+
read = Read::Imap::SupportEmails.new(options[:read_options])
|
381
|
+
serialize = Serialize::Imap::SupportEmails.new
|
373
382
|
formatter = Formatter::SupportEmails.new(options[:format_options])
|
374
|
-
|
375
|
-
|
383
|
+
process = Process::Discord::Implementation.new(options[:process_options])
|
384
|
+
write = Write::Logs::ConsoleLog.new
|
385
|
+
use_case_config = UseCases::Types::Config.new(read, serialize, formatter, process, write)
|
376
386
|
|
377
387
|
UseCases::UseCase.new(use_case_config)
|
378
388
|
end
|
data/lib/bas/version.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../domain/exceptions/function_not_implemented"
|
4
|
+
|
5
|
+
module Write
|
6
|
+
##
|
7
|
+
# The Write::Base class serves as the foundation for implementing specific data write within the Write module.
|
8
|
+
# Operating as an interface, this class defines essential attributes and methods, providing a blueprint for creating
|
9
|
+
# a custom write.
|
10
|
+
#
|
11
|
+
class Base
|
12
|
+
attr_reader :config
|
13
|
+
|
14
|
+
# Initializes the write with essential configuration parameters.
|
15
|
+
#
|
16
|
+
def initialize(config = {})
|
17
|
+
@config = config
|
18
|
+
end
|
19
|
+
|
20
|
+
# A method meant to execute the write request to an specific destination depending on the implementation.
|
21
|
+
# Must be overridden by subclasses, with specific logic based on the use case.
|
22
|
+
#
|
23
|
+
# <br>
|
24
|
+
# <b>raises</b> <tt>Domain::Exceptions::FunctionNotImplemented</tt> when missing implementation.
|
25
|
+
#
|
26
|
+
def execute(_process_response)
|
27
|
+
raise Domain::Exceptions::FunctionNotImplemented
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
|
32
|
+
def write(_method, _data)
|
33
|
+
raise Domain::Exceptions::FunctionNotImplemented
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../base"
|
4
|
+
|
5
|
+
module Write
|
6
|
+
module Logs
|
7
|
+
##
|
8
|
+
# This class is an implementation of the Write::Base interface, specifically designed
|
9
|
+
# for writting logs as a STDOUT.
|
10
|
+
#
|
11
|
+
class Base < Write::Base
|
12
|
+
attr_reader :logger
|
13
|
+
|
14
|
+
# Initializes the write with essential configuration parameters like the logger
|
15
|
+
# using the Logger gem.
|
16
|
+
#
|
17
|
+
def initialize(config = {})
|
18
|
+
super(config)
|
19
|
+
|
20
|
+
@logger = Logger.new($stdout)
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
# Implements the writing logic to write logs data as STOUT. It uses the Logger
|
26
|
+
# gem and execute the given method (info, error, etc) to write the log
|
27
|
+
#
|
28
|
+
def write(method, log_message)
|
29
|
+
@logger.send(method, log_message)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../base"
|
4
|
+
|
5
|
+
module Write
|
6
|
+
module Logs
|
7
|
+
##
|
8
|
+
# This class is an implementation of the Write::Logs::Base interface, specifically designed
|
9
|
+
# to write logs as STDOUT
|
10
|
+
class ConsoleLog < Logs::Base
|
11
|
+
# Implements the writting process logic for the ConsoleLog use case.
|
12
|
+
#
|
13
|
+
# <br>
|
14
|
+
# <b>Params:</b>
|
15
|
+
# * <tt>Process::Types::Response</tt> process response: standard process response with the data to be logged.
|
16
|
+
#
|
17
|
+
def execute(_process_response)
|
18
|
+
write("info", "Process Executed")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kommitters Open Source
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A versatile business automation system offering key components for building
|
14
14
|
various use cases. It provides an easy-to-use tool for implementing automation
|
@@ -31,57 +31,62 @@ files:
|
|
31
31
|
- Rakefile
|
32
32
|
- SECURITY.md
|
33
33
|
- lib/bas.rb
|
34
|
-
- lib/bas/dispatcher/base.rb
|
35
|
-
- lib/bas/dispatcher/discord/exceptions/invalid_webhook_token.rb
|
36
|
-
- lib/bas/dispatcher/discord/implementation.rb
|
37
|
-
- lib/bas/dispatcher/discord/types/response.rb
|
38
|
-
- lib/bas/dispatcher/slack/exceptions/invalid_webhook_token.rb
|
39
|
-
- lib/bas/dispatcher/slack/implementation.rb
|
40
|
-
- lib/bas/dispatcher/slack/types/response.rb
|
41
34
|
- lib/bas/domain/birthday.rb
|
42
35
|
- lib/bas/domain/email.rb
|
43
36
|
- lib/bas/domain/exceptions/function_not_implemented.rb
|
44
37
|
- lib/bas/domain/issue.rb
|
45
38
|
- lib/bas/domain/pto.rb
|
46
39
|
- lib/bas/domain/work_items_limit.rb
|
47
|
-
- lib/bas/fetcher/base.rb
|
48
|
-
- lib/bas/fetcher/github/base.rb
|
49
|
-
- lib/bas/fetcher/github/types/response.rb
|
50
|
-
- lib/bas/fetcher/github/use_case/repo_issues.rb
|
51
|
-
- lib/bas/fetcher/imap/base.rb
|
52
|
-
- lib/bas/fetcher/imap/types/response.rb
|
53
|
-
- lib/bas/fetcher/imap/use_case/support_emails.rb
|
54
|
-
- lib/bas/fetcher/notion/base.rb
|
55
|
-
- lib/bas/fetcher/notion/exceptions/invalid_api_key.rb
|
56
|
-
- lib/bas/fetcher/notion/exceptions/invalid_database_id.rb
|
57
|
-
- lib/bas/fetcher/notion/helper.rb
|
58
|
-
- lib/bas/fetcher/notion/types/response.rb
|
59
|
-
- lib/bas/fetcher/notion/use_case/birthday_next_week.rb
|
60
|
-
- lib/bas/fetcher/notion/use_case/birthday_today.rb
|
61
|
-
- lib/bas/fetcher/notion/use_case/pto_next_week.rb
|
62
|
-
- lib/bas/fetcher/notion/use_case/pto_today.rb
|
63
|
-
- lib/bas/fetcher/notion/use_case/work_items_limit.rb
|
64
|
-
- lib/bas/fetcher/postgres/base.rb
|
65
|
-
- lib/bas/fetcher/postgres/helper.rb
|
66
|
-
- lib/bas/fetcher/postgres/types/response.rb
|
67
|
-
- lib/bas/fetcher/postgres/use_case/pto_today.rb
|
68
40
|
- lib/bas/formatter/base.rb
|
69
41
|
- lib/bas/formatter/birthday.rb
|
70
42
|
- lib/bas/formatter/exceptions/invalid_data.rb
|
71
43
|
- lib/bas/formatter/pto.rb
|
72
44
|
- lib/bas/formatter/support_emails.rb
|
45
|
+
- lib/bas/formatter/types/response.rb
|
73
46
|
- lib/bas/formatter/work_items_limit.rb
|
74
|
-
- lib/bas/
|
75
|
-
- lib/bas/
|
76
|
-
- lib/bas/
|
77
|
-
- lib/bas/
|
78
|
-
- lib/bas/
|
79
|
-
- lib/bas/
|
80
|
-
- lib/bas/
|
47
|
+
- lib/bas/process/base.rb
|
48
|
+
- lib/bas/process/discord/exceptions/invalid_webhook_token.rb
|
49
|
+
- lib/bas/process/discord/implementation.rb
|
50
|
+
- lib/bas/process/discord/types/response.rb
|
51
|
+
- lib/bas/process/slack/exceptions/invalid_webhook_token.rb
|
52
|
+
- lib/bas/process/slack/implementation.rb
|
53
|
+
- lib/bas/process/slack/types/response.rb
|
54
|
+
- lib/bas/process/types/response.rb
|
55
|
+
- lib/bas/read/base.rb
|
56
|
+
- lib/bas/read/github/base.rb
|
57
|
+
- lib/bas/read/github/types/response.rb
|
58
|
+
- lib/bas/read/github/use_case/repo_issues.rb
|
59
|
+
- lib/bas/read/imap/base.rb
|
60
|
+
- lib/bas/read/imap/types/response.rb
|
61
|
+
- lib/bas/read/imap/use_case/support_emails.rb
|
62
|
+
- lib/bas/read/notion/base.rb
|
63
|
+
- lib/bas/read/notion/exceptions/invalid_api_key.rb
|
64
|
+
- lib/bas/read/notion/exceptions/invalid_database_id.rb
|
65
|
+
- lib/bas/read/notion/helper.rb
|
66
|
+
- lib/bas/read/notion/types/response.rb
|
67
|
+
- lib/bas/read/notion/use_case/birthday_next_week.rb
|
68
|
+
- lib/bas/read/notion/use_case/birthday_today.rb
|
69
|
+
- lib/bas/read/notion/use_case/pto_next_week.rb
|
70
|
+
- lib/bas/read/notion/use_case/pto_today.rb
|
71
|
+
- lib/bas/read/notion/use_case/work_items_limit.rb
|
72
|
+
- lib/bas/read/postgres/base.rb
|
73
|
+
- lib/bas/read/postgres/helper.rb
|
74
|
+
- lib/bas/read/postgres/types/response.rb
|
75
|
+
- lib/bas/read/postgres/use_case/pto_today.rb
|
76
|
+
- lib/bas/serialize/base.rb
|
77
|
+
- lib/bas/serialize/github/issues.rb
|
78
|
+
- lib/bas/serialize/imap/support_emails.rb
|
79
|
+
- lib/bas/serialize/notion/birthday_today.rb
|
80
|
+
- lib/bas/serialize/notion/pto_today.rb
|
81
|
+
- lib/bas/serialize/notion/work_items_limit.rb
|
82
|
+
- lib/bas/serialize/postgres/pto_today.rb
|
81
83
|
- lib/bas/use_cases/types/config.rb
|
82
84
|
- lib/bas/use_cases/use_case.rb
|
83
85
|
- lib/bas/use_cases/use_cases.rb
|
84
86
|
- lib/bas/version.rb
|
87
|
+
- lib/bas/write/base.rb
|
88
|
+
- lib/bas/write/logs/base.rb
|
89
|
+
- lib/bas/write/logs/use_case/console_log.rb
|
85
90
|
- renovate.json
|
86
91
|
- sig/business_automation_system.rbs
|
87
92
|
homepage: https://github.com/kommitters/bas
|
data/lib/bas/dispatcher/base.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../domain/exceptions/function_not_implemented"
|
4
|
-
|
5
|
-
module Dispatcher
|
6
|
-
##
|
7
|
-
# Serves as a foundational structure for implementing specific dispatchers. Acting as an interface,
|
8
|
-
# this class defines essential attributes and methods, providing a blueprint for creating custom
|
9
|
-
# dispatchers tailored to different platforms or services.
|
10
|
-
#
|
11
|
-
class Base
|
12
|
-
attr_reader :webhook, :name
|
13
|
-
|
14
|
-
# Initializes the dispatcher with essential configuration parameters.
|
15
|
-
#
|
16
|
-
def initialize(config)
|
17
|
-
@webhook = config[:webhook]
|
18
|
-
@name = config[:name]
|
19
|
-
end
|
20
|
-
|
21
|
-
# A method meant to send messages to an specific destination depending on the implementation.
|
22
|
-
# Must be overridden by subclasses, with specific logic based on the use case.
|
23
|
-
#
|
24
|
-
# <br>
|
25
|
-
# <b>returns</b> a <tt>Discord::Response</tt>
|
26
|
-
#
|
27
|
-
def dispatch(_payload)
|
28
|
-
raise Domain::Exceptions::FunctionNotImplemented
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|