bns 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/._.rspec_status +0 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +2 -0
- data/README.md +163 -4
- data/SECURITY.md +13 -0
- data/lib/bns/dispatcher/discord/exceptions/invalid_webhook_token.rb +2 -2
- data/lib/bns/dispatcher/discord/implementation.rb +1 -1
- data/lib/bns/dispatcher/slack/exceptions/invalid_webhook_token.rb +16 -0
- data/lib/bns/dispatcher/slack/implementation.rb +51 -0
- data/lib/bns/dispatcher/slack/types/response.rb +21 -0
- data/lib/bns/domain/birthday.rb +2 -0
- data/lib/bns/domain/pto.rb +2 -0
- data/lib/bns/domain/work_items_limit.rb +39 -0
- data/lib/bns/fetcher/base.rb +13 -0
- data/lib/bns/fetcher/notion/{pto.rb → base.rb} +11 -7
- data/lib/bns/fetcher/notion/types/response.rb +1 -1
- data/lib/bns/fetcher/notion/use_case/birthday_next_week.rb +41 -0
- data/lib/bns/fetcher/notion/use_case/birthday_today.rb +29 -0
- data/lib/bns/fetcher/notion/use_case/pto_next_week.rb +71 -0
- data/lib/bns/fetcher/notion/use_case/pto_today.rb +30 -0
- data/lib/bns/fetcher/notion/use_case/work_items_limit.rb +37 -0
- data/lib/bns/fetcher/postgres/base.rb +46 -0
- data/lib/bns/fetcher/postgres/helper.rb +16 -0
- data/lib/bns/fetcher/postgres/types/response.rb +42 -0
- data/lib/bns/fetcher/postgres/use_case/pto_today.rb +32 -0
- data/lib/bns/formatter/base.rb +27 -3
- data/lib/bns/formatter/birthday.rb +34 -0
- data/lib/bns/formatter/exceptions/invalid_data.rb +15 -0
- data/lib/bns/formatter/pto.rb +76 -0
- data/lib/bns/formatter/work_items_limit.rb +43 -0
- data/lib/bns/mapper/notion/{birthday.rb → birthday_today.rb} +13 -21
- data/lib/bns/mapper/notion/{pto.rb → pto_today.rb} +15 -41
- data/lib/bns/mapper/notion/work_items_limit.rb +65 -0
- data/lib/bns/mapper/postgres/pto_today.rb +47 -0
- data/lib/bns/use_cases/use_cases.rb +227 -49
- data/lib/bns/version.rb +1 -1
- data/renovate.json +6 -0
- metadata +27 -10
- data/Gemfile.lock +0 -91
- data/lib/bns/fetcher/notion/birthday.rb +0 -53
- data/lib/bns/formatter/discord/birthday.rb +0 -43
- data/lib/bns/formatter/discord/exceptions/invalid_data.rb +0 -17
- data/lib/bns/formatter/discord/pto.rb +0 -52
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../../domain/pto"
|
4
|
-
require_relative "../base"
|
5
|
-
|
6
|
-
module Formatter
|
7
|
-
module Discord
|
8
|
-
##
|
9
|
-
# This class is an implementation of the Formatter::Base interface, specifically designed for formatting PTO
|
10
|
-
# data in a way suitable for Discord messages.
|
11
|
-
class Pto
|
12
|
-
include Base
|
13
|
-
|
14
|
-
# Implements the logic for building a formatted payload with the given template for PTO's.
|
15
|
-
#
|
16
|
-
# <br>
|
17
|
-
# <b>Params:</b>
|
18
|
-
# * <tt>List<Domain::Pto></tt> pto_list: List of mapped PTO's.
|
19
|
-
#
|
20
|
-
# <br>
|
21
|
-
# <b>raises</b> <tt>Formatter::Discord::Exceptions::InvalidData</tt> when invalid data is provided.
|
22
|
-
#
|
23
|
-
# <br>
|
24
|
-
# <b>returns</b> <tt>String</tt> payload, formatted payload suitable for a Discord message.
|
25
|
-
#
|
26
|
-
def format(ptos_list)
|
27
|
-
raise Formatter::Discord::Exceptions::InvalidData unless ptos_list.all? { |pto| pto.is_a?(Domain::Pto) }
|
28
|
-
|
29
|
-
template = ":beach: NAME is on PTO"
|
30
|
-
payload = ""
|
31
|
-
|
32
|
-
ptos_list.each do |pto|
|
33
|
-
payload += "#{template.gsub("NAME", pto.individual_name)} #{build_pto_message(pto)}\n"
|
34
|
-
end
|
35
|
-
|
36
|
-
payload
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def build_pto_message(pto)
|
42
|
-
if pto.start_date.include?("|")
|
43
|
-
start_time = pto.start_date.split("|")
|
44
|
-
end_time = pto.end_date.split("|")
|
45
|
-
"#{start_time[1]} - #{end_time[1]}"
|
46
|
-
else
|
47
|
-
"all day"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|