msteams_hermes 1.0.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.rubocop.yml +3 -2
- data/CHANGELOG.md +6 -0
- data/Gemfile +0 -4
- data/Gemfile.lock +57 -30
- data/complex_example.rb +2 -2
- data/lib/msteams_hermes/actions/open_url.rb +3 -3
- data/lib/msteams_hermes/components/adaptive_card.rb +15 -3
- data/lib/msteams_hermes/components/base.rb +0 -2
- data/lib/msteams_hermes/components/column.rb +1 -1
- data/lib/msteams_hermes/components/container.rb +1 -1
- data/lib/msteams_hermes/components/fact_set.rb +1 -1
- data/lib/msteams_hermes/components/text_block.rb +7 -7
- data/lib/msteams_hermes/message.rb +42 -1
- data/lib/msteams_hermes/msteams/entities/base.rb +14 -0
- data/lib/msteams_hermes/msteams/entities/mention.rb +38 -0
- data/lib/msteams_hermes/style/width.rb +20 -0
- data/lib/msteams_hermes/style.rb +2 -0
- data/lib/msteams_hermes/version.rb +1 -1
- data/msteams_hermes.gemspec +7 -3
- metadata +78 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 207fc7cd400e6d5acffe10bbb62b10b055ef3c26479901abbdcd582790484cc7
|
4
|
+
data.tar.gz: febe827ff6ce1a4e2c0984e0856fe8208b1548a1055fc81b9876ddebd8208d54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 666bff112d33464b14e71fbc259b31a4a262d585fdb6038eeac34ccfe93e064755a3d43986844eb7bfa94db67a0b8555a2d080bd984e0d6799bd040996887561
|
7
|
+
data.tar.gz: 56436076d4550034a3e98acbe78c6c7bc45fce73efc9165f265fa66f815001e9f3128c9b54ec0b78ab5b4bf412a94e749315c6379f5ec8b6518de507f25fd182
|
data/.github/workflows/ci.yml
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,59 +1,86 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
msteams_hermes (1.
|
4
|
+
msteams_hermes (1.1.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
addressable (2.8.6)
|
10
|
+
public_suffix (>= 2.0.2, < 6.0)
|
9
11
|
ast (2.4.2)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
bigdecimal (3.1.8)
|
13
|
+
byebug (11.1.3)
|
14
|
+
coderay (1.1.3)
|
15
|
+
crack (1.0.0)
|
16
|
+
bigdecimal
|
17
|
+
rexml
|
18
|
+
diff-lcs (1.5.1)
|
19
|
+
hashdiff (1.1.0)
|
20
|
+
json (2.7.2)
|
21
|
+
language_server-protocol (3.17.0.3)
|
22
|
+
method_source (1.1.0)
|
23
|
+
parallel (1.24.0)
|
24
|
+
parser (3.3.1.0)
|
14
25
|
ast (~> 2.4.1)
|
26
|
+
racc
|
27
|
+
pry (0.14.2)
|
28
|
+
coderay (~> 1.1)
|
29
|
+
method_source (~> 1.0)
|
30
|
+
pry-byebug (3.10.1)
|
31
|
+
byebug (~> 11.0)
|
32
|
+
pry (>= 0.13, < 0.15)
|
33
|
+
public_suffix (5.0.5)
|
34
|
+
racc (1.8.0)
|
15
35
|
rainbow (3.1.1)
|
16
|
-
rake (13.
|
17
|
-
regexp_parser (2.
|
18
|
-
rexml (3.2.
|
19
|
-
|
20
|
-
|
21
|
-
rspec-
|
22
|
-
rspec-
|
23
|
-
|
24
|
-
|
25
|
-
|
36
|
+
rake (13.2.1)
|
37
|
+
regexp_parser (2.9.2)
|
38
|
+
rexml (3.2.8)
|
39
|
+
strscan (>= 3.0.9)
|
40
|
+
rspec (3.13.0)
|
41
|
+
rspec-core (~> 3.13.0)
|
42
|
+
rspec-expectations (~> 3.13.0)
|
43
|
+
rspec-mocks (~> 3.13.0)
|
44
|
+
rspec-core (3.13.0)
|
45
|
+
rspec-support (~> 3.13.0)
|
46
|
+
rspec-expectations (3.13.0)
|
26
47
|
diff-lcs (>= 1.2.0, < 2.0)
|
27
|
-
rspec-support (~> 3.
|
28
|
-
rspec-mocks (3.
|
48
|
+
rspec-support (~> 3.13.0)
|
49
|
+
rspec-mocks (3.13.1)
|
29
50
|
diff-lcs (>= 1.2.0, < 2.0)
|
30
|
-
rspec-support (~> 3.
|
31
|
-
rspec-support (3.
|
32
|
-
rubocop (1.
|
51
|
+
rspec-support (~> 3.13.0)
|
52
|
+
rspec-support (3.13.1)
|
53
|
+
rubocop (1.63.5)
|
33
54
|
json (~> 2.3)
|
55
|
+
language_server-protocol (>= 3.17.0)
|
34
56
|
parallel (~> 1.10)
|
35
|
-
parser (>= 3.
|
57
|
+
parser (>= 3.3.0.2)
|
36
58
|
rainbow (>= 2.2.2, < 4.0)
|
37
59
|
regexp_parser (>= 1.8, < 3.0)
|
38
60
|
rexml (>= 3.2.5, < 4.0)
|
39
|
-
rubocop-ast (>= 1.
|
61
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
40
62
|
ruby-progressbar (~> 1.7)
|
41
|
-
unicode-display_width (>=
|
42
|
-
rubocop-ast (1.
|
43
|
-
parser (>= 3.
|
44
|
-
ruby-progressbar (1.
|
45
|
-
|
63
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
64
|
+
rubocop-ast (1.31.3)
|
65
|
+
parser (>= 3.3.1.0)
|
66
|
+
ruby-progressbar (1.13.0)
|
67
|
+
strscan (3.1.0)
|
68
|
+
unicode-display_width (2.5.0)
|
69
|
+
webmock (3.23.0)
|
70
|
+
addressable (>= 2.8.0)
|
71
|
+
crack (>= 0.3.2)
|
72
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
46
73
|
|
47
74
|
PLATFORMS
|
48
75
|
ruby
|
49
|
-
x86_64-darwin-20
|
50
|
-
x86_64-darwin-21
|
51
76
|
|
52
77
|
DEPENDENCIES
|
53
78
|
msteams_hermes!
|
79
|
+
pry-byebug
|
54
80
|
rake
|
55
81
|
rspec
|
56
82
|
rubocop
|
83
|
+
webmock (~> 3.23)
|
57
84
|
|
58
85
|
BUNDLED WITH
|
59
|
-
2.
|
86
|
+
2.5.10
|
data/complex_example.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#!/usr/bin/ruby
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require "msteams_hermes/actions/open_url"
|
@@ -72,4 +72,4 @@ content = MsTeamsHermes::Components::AdaptiveCard.new(
|
|
72
72
|
]
|
73
73
|
)
|
74
74
|
|
75
|
-
MsTeamsHermes::Message.new(webhook_url: YOUR_WEBHOOK_URL, content:
|
75
|
+
MsTeamsHermes::Message.new(webhook_url: YOUR_WEBHOOK_URL, content:).deliver
|
@@ -1,25 +1,33 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "msteams_hermes/components/base"
|
4
|
+
require "msteams_hermes/style"
|
4
5
|
|
5
6
|
module MsTeamsHermes
|
6
7
|
##
|
7
8
|
# Module containing Microsoft's components representations
|
8
9
|
##
|
9
10
|
module Components
|
11
|
+
include MsTeamsHermes::Style
|
10
12
|
##
|
11
13
|
# A class representing Microsoft's AdaptiveCard object
|
12
14
|
# https://adaptivecards.io/explorer/AdaptiveCard.html
|
13
15
|
##
|
14
16
|
class AdaptiveCard < Base
|
15
|
-
attr_reader :body, :actions
|
17
|
+
attr_reader :body, :actions, :entities, :width
|
16
18
|
|
17
|
-
def initialize(body:, actions: nil)
|
19
|
+
def initialize(body:, actions: nil, entities: [], width: Style::Width::DEFAULT)
|
18
20
|
@body = body
|
19
21
|
raise "AdaptiveCard `body` must be an Array" unless @body.is_a? Array
|
20
22
|
|
21
23
|
@actions = actions
|
22
24
|
raise "AdaptiveCard `actions` must be an Array" unless @actions.nil? || @actions.is_a?(Array)
|
25
|
+
|
26
|
+
@entities = entities
|
27
|
+
raise "AdaptiveCard `entities` must be an Array" unless @entities.nil? || @entities.is_a?(Array)
|
28
|
+
|
29
|
+
@width = width
|
30
|
+
raise "AdaptiveCard `width` must be one of the available Width options" unless Style::Width.all.include?(width)
|
23
31
|
end
|
24
32
|
|
25
33
|
def to_hash
|
@@ -27,7 +35,11 @@ module MsTeamsHermes
|
|
27
35
|
type: "AdaptiveCard",
|
28
36
|
version: "1.5",
|
29
37
|
body: body.map(&:to_hash),
|
30
|
-
actions: actions&.map(&:to_hash)
|
38
|
+
actions: actions&.map(&:to_hash),
|
39
|
+
msteams: {
|
40
|
+
entities: entities.map(&:to_hash),
|
41
|
+
width:
|
42
|
+
}
|
31
43
|
}
|
32
44
|
end
|
33
45
|
end
|
@@ -37,13 +37,13 @@ module MsTeamsHermes
|
|
37
37
|
def to_hash
|
38
38
|
{
|
39
39
|
type: "TextBlock",
|
40
|
-
text
|
41
|
-
color
|
42
|
-
size
|
43
|
-
font_type
|
44
|
-
weight
|
45
|
-
wrap
|
46
|
-
is_subtle:
|
40
|
+
text:,
|
41
|
+
color:,
|
42
|
+
size:,
|
43
|
+
font_type:,
|
44
|
+
weight:,
|
45
|
+
wrap:,
|
46
|
+
is_subtle:
|
47
47
|
}
|
48
48
|
end
|
49
49
|
end
|
@@ -9,6 +9,32 @@ module MsTeamsHermes
|
|
9
9
|
# https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL#send-adaptive-cards-using-an-incoming-webhook
|
10
10
|
##
|
11
11
|
class Message
|
12
|
+
##
|
13
|
+
# Raises when the message is larger than the latest known maximum size of a microsoft teams message
|
14
|
+
##
|
15
|
+
class MessageBodyTooLargeError < StandardError
|
16
|
+
def initialize(current_size)
|
17
|
+
super "Microsoft Teams Webhook answered with a 413 due to content size limitations" \
|
18
|
+
" (last check it was about #{MSTEAMS_MESSAGE_SIZE_LIMIT} bytes)." \
|
19
|
+
"\nYour message results in a size of about #{current_size} bytes which is too much."
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
##
|
24
|
+
# Raises when the response message changes from the successful response
|
25
|
+
##
|
26
|
+
class UnknownError < StandardError
|
27
|
+
def initialize(error)
|
28
|
+
super "Microsoft Teams Webhook had an unexpected response body:\n#{error}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Docu says: 'The message size limit is 28 KB',
|
33
|
+
# but testing aligned with 21KB.
|
34
|
+
# See: https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook
|
35
|
+
MSTEAMS_MESSAGE_SIZE_LIMIT = 21_000
|
36
|
+
MSTEAMS_MESSAGE_413_ERROR_TOKEN = "returned HTTP error 413"
|
37
|
+
|
12
38
|
attr_reader :webhook_url, :content
|
13
39
|
|
14
40
|
def initialize(content:, webhook_url: ENV["WEBHOOK_URL"])
|
@@ -19,6 +45,8 @@ module MsTeamsHermes
|
|
19
45
|
raise "Message `content` must be an AdaptiveCard" unless @content.is_a? Components::AdaptiveCard
|
20
46
|
end
|
21
47
|
|
48
|
+
# rubocop:disable Metrics/AbcSize
|
49
|
+
# rubocop:disable Metrics/MethodLength
|
22
50
|
##
|
23
51
|
# Sends a HTTP request to the webhook URL specified via
|
24
52
|
# either environment variable or when initializing the class
|
@@ -31,9 +59,22 @@ module MsTeamsHermes
|
|
31
59
|
req = Net::HTTP::Post.new(uri)
|
32
60
|
req.body = body_json
|
33
61
|
req["Content-Type"] = "application/json"
|
34
|
-
|
62
|
+
|
63
|
+
response = http.request(req)
|
64
|
+
|
65
|
+
# For details see:
|
66
|
+
# https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL%2Ctext1#send-messages-using-curl-and-powershell
|
67
|
+
if response.body != "1"
|
68
|
+
raise MessageBodyTooLargeError, body_json.bytesize if response.body.include? MSTEAMS_MESSAGE_413_ERROR_TOKEN
|
69
|
+
|
70
|
+
raise UnknownError, response.body
|
71
|
+
end
|
72
|
+
|
73
|
+
response
|
35
74
|
end
|
36
75
|
end
|
76
|
+
# rubocop:enable Metrics/AbcSize
|
77
|
+
# rubocop:enable Metrics/MethodLength
|
37
78
|
|
38
79
|
##
|
39
80
|
# Formats the JSON object to be set on the HTTP request
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MsTeamsHermes
|
4
|
+
module MsTeams
|
5
|
+
module Entities
|
6
|
+
# Super class for entities to enforce overridding the `to_hash` method
|
7
|
+
class Base
|
8
|
+
def to_hash
|
9
|
+
raise "Should be implemented on the subclass"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "msteams_hermes/msteams/entities/base"
|
4
|
+
|
5
|
+
module MsTeamsHermes
|
6
|
+
module MsTeams
|
7
|
+
module Entities
|
8
|
+
##
|
9
|
+
# A class representing Microsoft's Msteams.Mention object
|
10
|
+
# https://learn.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-format?tabs=adaptive-md%2Cdesktop%2Cconnector-html#user-mention-in-incoming-webhook-with-adaptive-cards
|
11
|
+
##
|
12
|
+
class Mention < Base
|
13
|
+
attr_reader :mention_reference, :mention_string, :user_id
|
14
|
+
|
15
|
+
def initialize(text:, name:, id:)
|
16
|
+
raise "`text` must be a string" unless text.is_a? String
|
17
|
+
raise "`text` must contain <at>...</at>" unless text.include?("<at>") && text.include?("</at>")
|
18
|
+
raise "`id` must be a string" unless text.is_a? String
|
19
|
+
|
20
|
+
@mention_reference = text # String surrounded by <at>string</at> that marks the mention section in a text
|
21
|
+
@mention_string = name # allows for overriding the mention_reference
|
22
|
+
@user_id = id
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_hash
|
26
|
+
{
|
27
|
+
type: "mention",
|
28
|
+
text: mention_reference,
|
29
|
+
mentioned: {
|
30
|
+
id: user_id,
|
31
|
+
name: mention_string
|
32
|
+
}
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MsTeamsHermes
|
4
|
+
##
|
5
|
+
# Module containing Microsoft's style representations
|
6
|
+
##
|
7
|
+
module Style
|
8
|
+
##
|
9
|
+
# Module containing available width options for the AdaptiveCard component
|
10
|
+
##
|
11
|
+
module Width
|
12
|
+
DEFAULT = "default"
|
13
|
+
FULL = "full"
|
14
|
+
|
15
|
+
def self.all
|
16
|
+
[DEFAULT, FULL]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/msteams_hermes/style.rb
CHANGED
@@ -5,6 +5,7 @@ require "msteams_hermes/style/container_style"
|
|
5
5
|
require "msteams_hermes/style/font_size"
|
6
6
|
require "msteams_hermes/style/font_type"
|
7
7
|
require "msteams_hermes/style/font_weight"
|
8
|
+
require "msteams_hermes/style/width"
|
8
9
|
|
9
10
|
module MsTeamsHermes
|
10
11
|
##
|
@@ -16,5 +17,6 @@ module MsTeamsHermes
|
|
16
17
|
include MsTeamsHermes::Style::FontSize
|
17
18
|
include MsTeamsHermes::Style::FontType
|
18
19
|
include MsTeamsHermes::Style::FontWeight
|
20
|
+
include MsTeamsHermes::Style::Width
|
19
21
|
end
|
20
22
|
end
|
data/msteams_hermes.gemspec
CHANGED
@@ -16,12 +16,13 @@ Gem::Specification.new do |spec|
|
|
16
16
|
"Microsoft's adaptive cards."
|
17
17
|
spec.homepage = "https://github.com/xing/msteams_hermes"
|
18
18
|
spec.license = "MIT"
|
19
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
20
19
|
|
21
20
|
spec.metadata["homepage_uri"] = spec.homepage
|
22
21
|
spec.metadata["source_code_uri"] = "https://github.com/xing/msteams_hermes"
|
23
22
|
spec.metadata["changelog_uri"] = "https://github.com/xing/msteams_hermes/CHANGELOG.md"
|
24
23
|
|
24
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.1")
|
25
|
+
|
25
26
|
# Specify which files should be added to the gem when it is released.
|
26
27
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
27
28
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
@@ -34,6 +35,9 @@ Gem::Specification.new do |spec|
|
|
34
35
|
# Uncomment to register a new dependency of your gem
|
35
36
|
# spec.add_dependency "example-gem", "~> 1.0"
|
36
37
|
|
37
|
-
|
38
|
-
|
38
|
+
spec.add_development_dependency "pry-byebug"
|
39
|
+
spec.add_development_dependency "rake"
|
40
|
+
spec.add_development_dependency "rspec"
|
41
|
+
spec.add_development_dependency "rubocop"
|
42
|
+
spec.add_development_dependency "webmock", "~> 3.23"
|
39
43
|
end
|
metadata
CHANGED
@@ -1,15 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: msteams_hermes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rafael Rocha
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
11
|
+
date: 2024-06-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pry-byebug
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.23'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.23'
|
13
83
|
description: This gem helps you sending messages to your Microsoft Teams channels.
|
14
84
|
With autonomy to create your own layouts, like UI kits such as React, Flutter, SwiftUI
|
15
85
|
(and some others), you will be able to customize it with the objects representations
|
@@ -45,12 +115,15 @@ files:
|
|
45
115
|
- lib/msteams_hermes/components/fact_set.rb
|
46
116
|
- lib/msteams_hermes/components/text_block.rb
|
47
117
|
- lib/msteams_hermes/message.rb
|
118
|
+
- lib/msteams_hermes/msteams/entities/base.rb
|
119
|
+
- lib/msteams_hermes/msteams/entities/mention.rb
|
48
120
|
- lib/msteams_hermes/style.rb
|
49
121
|
- lib/msteams_hermes/style/colors.rb
|
50
122
|
- lib/msteams_hermes/style/container_style.rb
|
51
123
|
- lib/msteams_hermes/style/font_size.rb
|
52
124
|
- lib/msteams_hermes/style/font_type.rb
|
53
125
|
- lib/msteams_hermes/style/font_weight.rb
|
126
|
+
- lib/msteams_hermes/style/width.rb
|
54
127
|
- lib/msteams_hermes/version.rb
|
55
128
|
- msteams_hermes.gemspec
|
56
129
|
homepage: https://github.com/xing/msteams_hermes
|
@@ -68,14 +141,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
141
|
requirements:
|
69
142
|
- - ">="
|
70
143
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
144
|
+
version: '3.1'
|
72
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
146
|
requirements:
|
74
147
|
- - ">="
|
75
148
|
- !ruby/object:Gem::Version
|
76
149
|
version: '0'
|
77
150
|
requirements: []
|
78
|
-
rubygems_version: 3.
|
151
|
+
rubygems_version: 3.5.9
|
79
152
|
signing_key:
|
80
153
|
specification_version: 4
|
81
154
|
summary: Send messages to any Microsoft Teams' channel as easy as possible.
|