bas 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile +6 -0
- data/README.md +27 -24
- data/lib/bas/domain/issue.rb +22 -0
- data/lib/bas/domain/pto.rb +45 -4
- data/lib/bas/formatter/base.rb +2 -2
- data/lib/bas/formatter/birthday.rb +8 -4
- data/lib/bas/formatter/pto.rb +27 -26
- 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/read/github/base.rb +57 -0
- data/lib/bas/read/github/types/response.rb +27 -0
- 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/serialize/github/issues.rb +57 -0
- 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/serialize/notion/pto_today.rb +75 -0
- data/lib/bas/{mapper → serialize}/notion/work_items_limit.rb +7 -7
- data/lib/bas/{mapper → serialize}/postgres/pto_today.rb +9 -9
- 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 -59
- 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 +43 -33
- 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/imap/use_case/support_emails.rb +0 -26
- data/lib/bas/mapper/notion/pto_today.rb +0 -70
- /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
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../domain/issue"
|
4
|
+
require_relative "../base"
|
5
|
+
|
6
|
+
module Serialize
|
7
|
+
module Github
|
8
|
+
##
|
9
|
+
# This class implements the methods of the Serialize::Base module, specifically designed for
|
10
|
+
# preparing or shaping Github issues data coming from a Read::Base implementation.
|
11
|
+
class Issues
|
12
|
+
include Base
|
13
|
+
|
14
|
+
# Implements the logic for shaping the results from a reader response.
|
15
|
+
#
|
16
|
+
# <br>
|
17
|
+
# <b>Params:</b>
|
18
|
+
# * <tt>Read::Github::Types::Response</tt> github_response: Array of github issues data.
|
19
|
+
#
|
20
|
+
# <br>
|
21
|
+
# <b>return</b> <tt>List<Domain::Issue></tt> serialized github issues to be used by a
|
22
|
+
# Formatter::Base implementation.
|
23
|
+
#
|
24
|
+
def execute(github_response)
|
25
|
+
return [] if github_response.results.empty?
|
26
|
+
|
27
|
+
normalized_github_data = normalize_response(github_response.results)
|
28
|
+
|
29
|
+
normalized_github_data.map do |issue|
|
30
|
+
Domain::Issue.new(
|
31
|
+
issue["title"], issue["state"], issue["assignees"], issue["body"], issue["url"]
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def normalize_response(results)
|
39
|
+
return [] if results.nil?
|
40
|
+
|
41
|
+
results.map do |value|
|
42
|
+
{
|
43
|
+
"title" => value[:title],
|
44
|
+
"state" => value[:state],
|
45
|
+
"assignees" => extract_assignees(value[:assignees]),
|
46
|
+
"body" => value[:body],
|
47
|
+
"url" => value[:url]
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def extract_assignees(assignees)
|
53
|
+
assignees.map { |assignee| assignee[:login] }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -3,25 +3,25 @@
|
|
3
3
|
require_relative "../../domain/email"
|
4
4
|
require_relative "../base"
|
5
5
|
|
6
|
-
module
|
6
|
+
module Serialize
|
7
7
|
module Imap
|
8
8
|
##
|
9
|
-
# This class
|
10
|
-
# preparing or shaping support emails data coming from a
|
9
|
+
# This class implements the methods of the Serialize::Base module, specifically designed for
|
10
|
+
# preparing or shaping support emails data coming from a Read::Base implementation.
|
11
11
|
class SupportEmails
|
12
12
|
include Base
|
13
13
|
|
14
|
-
# Implements the logic for shaping the results from a
|
14
|
+
# Implements the logic for shaping the results from a reader response.
|
15
15
|
#
|
16
16
|
# <br>
|
17
17
|
# <b>Params:</b>
|
18
|
-
# * <tt>
|
18
|
+
# * <tt>Read::Imap::Types::Response</tt> imap_response: Array of imap emails data.
|
19
19
|
#
|
20
20
|
# <br>
|
21
|
-
# <b>return</b> <tt>List<Domain::Email></tt> support_emails_list,
|
21
|
+
# <b>return</b> <tt>List<Domain::Email></tt> support_emails_list, serialized support emails to be used by a
|
22
22
|
# Formatter::Base implementation.
|
23
23
|
#
|
24
|
-
def
|
24
|
+
def execute(imap_response)
|
25
25
|
return [] if imap_response.results.empty?
|
26
26
|
|
27
27
|
normalized_email_data = normalize_response(imap_response.results)
|
@@ -3,27 +3,27 @@
|
|
3
3
|
require_relative "../../domain/birthday"
|
4
4
|
require_relative "../base"
|
5
5
|
|
6
|
-
module
|
6
|
+
module Serialize
|
7
7
|
module Notion
|
8
8
|
##
|
9
|
-
# This class
|
10
|
-
# shaping birthdays data coming from a
|
9
|
+
# This class implements the methods of the Serialize::Base module, specifically designed for preparing or
|
10
|
+
# shaping birthdays data coming from a Read::Base implementation.
|
11
11
|
class BirthdayToday
|
12
12
|
include Base
|
13
13
|
|
14
14
|
BIRTHDAY_PARAMS = ["Complete Name", "BD_this_year"].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::Birthday></tt> birthdays_list,
|
23
|
+
# <b>return</b> <tt>List<Domain::Birthday></tt> birthdays_list, serialized birthdays 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)
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../domain/pto"
|
4
|
+
require_relative "../base"
|
5
|
+
|
6
|
+
module Serialize
|
7
|
+
module Notion
|
8
|
+
##
|
9
|
+
# This class implements the methods of the Serialize::Base module, specifically designed for preparing or
|
10
|
+
# shaping PTO's data coming from a Read::Base implementation.
|
11
|
+
#
|
12
|
+
class PtoToday
|
13
|
+
include Base
|
14
|
+
|
15
|
+
PTO_PARAMS = ["Description", "Desde?", "Hasta?"].freeze
|
16
|
+
|
17
|
+
# Implements the logic for shaping the results from a reader response.
|
18
|
+
#
|
19
|
+
# <br>
|
20
|
+
# <b>Params:</b>
|
21
|
+
# * <tt>Read::Notion::Types::Response</tt> notion_response: Notion response object.
|
22
|
+
#
|
23
|
+
# <br>
|
24
|
+
# <b>returns</b> <tt>List<Domain::Pto></tt> ptos_list, serialized PTO's to be used by a Formatter::Base
|
25
|
+
# implementation.
|
26
|
+
#
|
27
|
+
def execute(notion_response)
|
28
|
+
return [] if notion_response.results.empty?
|
29
|
+
|
30
|
+
normalized_notion_data = normalize_response(notion_response.results)
|
31
|
+
|
32
|
+
normalized_notion_data.map do |pto|
|
33
|
+
Domain::Pto.new(pto["Description"], pto["Desde?"], pto["Hasta?"])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def normalize_response(response)
|
40
|
+
return [] if response.nil?
|
41
|
+
|
42
|
+
response.map do |value|
|
43
|
+
pto_fields = value["properties"].slice(*PTO_PARAMS)
|
44
|
+
|
45
|
+
{
|
46
|
+
"Description" => extract_description_field_value(pto_fields["Description"]),
|
47
|
+
"Desde?" => extract_date_field_value(pto_fields["Desde?"]),
|
48
|
+
"Hasta?" => extract_date_field_value(pto_fields["Hasta?"])
|
49
|
+
}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def extract_description_field_value(data)
|
54
|
+
names = data["title"].map { |name| name["plain_text"] }
|
55
|
+
|
56
|
+
names.join(" ")
|
57
|
+
end
|
58
|
+
|
59
|
+
def extract_date_field_value(date)
|
60
|
+
{
|
61
|
+
from: extract_start_date(date),
|
62
|
+
to: extract_end_date(date)
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
def extract_start_date(data)
|
67
|
+
data["date"]["start"]
|
68
|
+
end
|
69
|
+
|
70
|
+
def extract_end_date(data)
|
71
|
+
data["date"]["end"]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -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,32 +3,32 @@
|
|
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)
|
27
27
|
|
28
28
|
ptos.map do |pto|
|
29
29
|
name = pto["name"]
|
30
|
-
start_date = pto["start_date"]
|
31
|
-
end_date = pto["end_date"]
|
30
|
+
start_date = { from: pto["start_date"], to: nil }
|
31
|
+
end_date = { from: pto["end_date"], to: nil }
|
32
32
|
|
33
33
|
Domain::Pto.new(name, start_date, end_date)
|
34
34
|
end
|
@@ -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,20 +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 "../
|
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"
|
11
12
|
|
12
|
-
#
|
13
|
-
require_relative "../
|
14
|
-
require_relative "../
|
15
|
-
require_relative "../
|
16
|
-
require_relative "../
|
17
|
-
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"
|
18
20
|
|
19
21
|
# formatter
|
20
22
|
require_relative "../formatter/birthday"
|
@@ -22,9 +24,12 @@ require_relative "../formatter/pto"
|
|
22
24
|
require_relative "../formatter/work_items_limit"
|
23
25
|
require_relative "../formatter/support_emails"
|
24
26
|
|
25
|
-
#
|
26
|
-
require_relative "../
|
27
|
-
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"
|
28
33
|
|
29
34
|
require_relative "use_case"
|
30
35
|
require_relative "./types/config"
|
@@ -39,11 +44,11 @@ module UseCases
|
|
39
44
|
# <b>Example</b>
|
40
45
|
#
|
41
46
|
# options = {
|
42
|
-
#
|
47
|
+
# read_options: {
|
43
48
|
# database_id: NOTION_DATABASE_ID,
|
44
49
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
45
50
|
# },
|
46
|
-
#
|
51
|
+
# process_options: {
|
47
52
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
48
53
|
# name: "Birthday Bot"
|
49
54
|
# }
|
@@ -73,11 +78,12 @@ module UseCases
|
|
73
78
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
74
79
|
#
|
75
80
|
def self.notify_birthday_from_notion_to_discord(options)
|
76
|
-
|
77
|
-
|
81
|
+
read = Read::Notion::BirthdayToday.new(options[:read_options])
|
82
|
+
serialize = Serialize::Notion::BirthdayToday.new
|
78
83
|
formatter = Formatter::Birthday.new(options[:format_options])
|
79
|
-
|
80
|
-
|
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)
|
81
87
|
|
82
88
|
UseCases::UseCase.new(use_case_config)
|
83
89
|
end
|
@@ -87,11 +93,11 @@ module UseCases
|
|
87
93
|
# <b>Example</b>
|
88
94
|
#
|
89
95
|
# options = {
|
90
|
-
#
|
96
|
+
# read_options: {
|
91
97
|
# database_id: NOTION_DATABASE_ID,
|
92
98
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
93
99
|
# },
|
94
|
-
#
|
100
|
+
# process_options: {
|
95
101
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
96
102
|
# name: "Birthday Bot"
|
97
103
|
# },
|
@@ -125,11 +131,12 @@ module UseCases
|
|
125
131
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
126
132
|
#
|
127
133
|
def self.notify_next_week_birthday_from_notion_to_discord(options)
|
128
|
-
|
129
|
-
|
134
|
+
read = Read::Notion::BirthdayNextWeek.new(options[:read_options])
|
135
|
+
serialize = Serialize::Notion::BirthdayToday.new
|
130
136
|
formatter = Formatter::Birthday.new(options[:format_options])
|
131
|
-
|
132
|
-
|
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)
|
133
140
|
|
134
141
|
UseCases::UseCase.new(use_case_cofig)
|
135
142
|
end
|
@@ -140,11 +147,11 @@ module UseCases
|
|
140
147
|
# <b>Example</b>
|
141
148
|
#
|
142
149
|
# options = {
|
143
|
-
#
|
150
|
+
# read_options: {
|
144
151
|
# database_id: NOTION_DATABASE_ID,
|
145
152
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
146
153
|
# },
|
147
|
-
#
|
154
|
+
# process_options: {
|
148
155
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
149
156
|
# name: "Pto Bot"
|
150
157
|
# }
|
@@ -172,11 +179,12 @@ module UseCases
|
|
172
179
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
173
180
|
#
|
174
181
|
def self.notify_pto_from_notion_to_discord(options)
|
175
|
-
|
176
|
-
|
182
|
+
read = Read::Notion::PtoToday.new(options[:read_options])
|
183
|
+
serialize = Serialize::Notion::PtoToday.new
|
177
184
|
formatter = Formatter::Pto.new(options[:format_options])
|
178
|
-
|
179
|
-
|
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)
|
180
188
|
|
181
189
|
UseCases::UseCase.new(use_case_config)
|
182
190
|
end
|
@@ -187,11 +195,11 @@ module UseCases
|
|
187
195
|
# <b>Example</b>
|
188
196
|
#
|
189
197
|
# options = {
|
190
|
-
#
|
198
|
+
# read_options: {
|
191
199
|
# database_id: NOTION_DATABASE_ID,
|
192
200
|
# secret: NOTION_API_INTEGRATION_SECRET,
|
193
201
|
# },
|
194
|
-
#
|
202
|
+
# process_options: {
|
195
203
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
196
204
|
# name: "Pto Bot"
|
197
205
|
# },
|
@@ -223,11 +231,12 @@ module UseCases
|
|
223
231
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
224
232
|
#
|
225
233
|
def self.notify_next_week_pto_from_notion_to_discord(options)
|
226
|
-
|
227
|
-
|
234
|
+
read = Read::Notion::PtoNextWeek.new(options[:read_options])
|
235
|
+
serialize = Serialize::Notion::PtoToday.new
|
228
236
|
formatter = Formatter::Pto.new(options[:format_options])
|
229
|
-
|
230
|
-
|
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)
|
231
240
|
|
232
241
|
UseCases::UseCase.new(use_case_config)
|
233
242
|
end
|
@@ -238,7 +247,7 @@ module UseCases
|
|
238
247
|
# <b>Example</b>
|
239
248
|
#
|
240
249
|
# options = {
|
241
|
-
#
|
250
|
+
# read_options: {
|
242
251
|
# connection: {
|
243
252
|
# host: "localhost",
|
244
253
|
# port: 5432,
|
@@ -247,7 +256,7 @@ module UseCases
|
|
247
256
|
# password: "postgres"
|
248
257
|
# }
|
249
258
|
# },
|
250
|
-
#
|
259
|
+
# process_options:{
|
251
260
|
# webhook: "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
|
252
261
|
# name: "Pto Bot"
|
253
262
|
# },
|
@@ -277,11 +286,12 @@ module UseCases
|
|
277
286
|
# https://api.slack.com/messaging/webhooks#create_a_webhook
|
278
287
|
#
|
279
288
|
def self.notify_pto_from_postgres_to_slack(options)
|
280
|
-
|
281
|
-
|
289
|
+
read = Read::Postgres::PtoToday.new(options[:read_options])
|
290
|
+
serialize = Serialize::Postgres::PtoToday.new
|
282
291
|
formatter = Formatter::Pto.new(options[:format_options])
|
283
|
-
|
284
|
-
|
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)
|
285
295
|
|
286
296
|
UseCases::UseCase.new(use_case_config)
|
287
297
|
end
|
@@ -292,11 +302,11 @@ module UseCases
|
|
292
302
|
# <b>Example</b>
|
293
303
|
#
|
294
304
|
# options = {
|
295
|
-
#
|
305
|
+
# read_options: {
|
296
306
|
# database_id: NOTION_DATABASE_ID,
|
297
307
|
# secret: NOTION_API_INTEGRATION_SECRET
|
298
308
|
# },
|
299
|
-
#
|
309
|
+
# process_options: {
|
300
310
|
# webhook: "https://discord.com/api/webhooks/1199213527672565760/KmpoIzBet9xYG16oFh8W1RWHbpIqT7UtTBRrhfLcvWZdNiVZCTM-gpil2Qoy4eYEgpdf",
|
301
311
|
# name: "wipLimit"
|
302
312
|
# }
|
@@ -324,11 +334,12 @@ module UseCases
|
|
324
334
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
325
335
|
#
|
326
336
|
def self.notify_wip_limit_from_notion_to_discord(options)
|
327
|
-
|
328
|
-
|
337
|
+
read = Read::Notion::WorkItemsLimit.new(options[:read_options])
|
338
|
+
serialize = Serialize::Notion::WorkItemsLimit.new
|
329
339
|
formatter = Formatter::WorkItemsLimit.new(options[:format_options])
|
330
|
-
|
331
|
-
|
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)
|
332
343
|
|
333
344
|
UseCases::UseCase.new(use_case_config)
|
334
345
|
end
|
@@ -339,7 +350,7 @@ module UseCases
|
|
339
350
|
# <b>Example</b>
|
340
351
|
#
|
341
352
|
# options = {
|
342
|
-
#
|
353
|
+
# read_options: {
|
343
354
|
# user: 'info@email.co',
|
344
355
|
# refresh_token: REFRESH_TOKEN,
|
345
356
|
# client_id: CLIENT_ID,
|
@@ -347,7 +358,7 @@ module UseCases
|
|
347
358
|
# inbox: 'INBOX',
|
348
359
|
# search_email: 'support@email.co'
|
349
360
|
# },
|
350
|
-
#
|
361
|
+
# process_options: {
|
351
362
|
# webhook: "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
|
352
363
|
# name: "emailSupport"
|
353
364
|
# }
|
@@ -366,11 +377,12 @@ module UseCases
|
|
366
377
|
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
|
367
378
|
#
|
368
379
|
def self.notify_support_email_from_imap_to_discord(options)
|
369
|
-
|
370
|
-
|
380
|
+
read = Read::Imap::SupportEmails.new(options[:read_options])
|
381
|
+
serialize = Serialize::Imap::SupportEmails.new
|
371
382
|
formatter = Formatter::SupportEmails.new(options[:format_options])
|
372
|
-
|
373
|
-
|
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)
|
374
386
|
|
375
387
|
UseCases::UseCase.new(use_case_config)
|
376
388
|
end
|
data/lib/bas/version.rb
CHANGED