msteams_hermes 1.1.1 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 207fc7cd400e6d5acffe10bbb62b10b055ef3c26479901abbdcd582790484cc7
4
- data.tar.gz: febe827ff6ce1a4e2c0984e0856fe8208b1548a1055fc81b9876ddebd8208d54
3
+ metadata.gz: 4b3cdc7a7dfce17ff21c71884f2e774845e1ba7fe89a2c9ead3445f88a40c544
4
+ data.tar.gz: c509e71637183ffa574dedb800be337f06f07c04869e8a0bfef61d5b7e20f2b6
5
5
  SHA512:
6
- metadata.gz: 666bff112d33464b14e71fbc259b31a4a262d585fdb6038eeac34ccfe93e064755a3d43986844eb7bfa94db67a0b8555a2d080bd984e0d6799bd040996887561
7
- data.tar.gz: 56436076d4550034a3e98acbe78c6c7bc45fce73efc9165f265fa66f815001e9f3128c9b54ec0b78ab5b4bf412a94e749315c6379f5ec8b6518de507f25fd182
6
+ metadata.gz: 6f2d422662a3846abd375126115db6ce6a008a67e811fb8563a4d6955d328e80df3591d3049e463fc65b29a0f41ccd4f66595a1cbaddab0811c40de40ecc9e82
7
+ data.tar.gz: e0c7a189f4a9be321c068efef20aaafe5244095f2b6617006940c92f10bc93ce1e4dcfe462aa7f6e1066ddee1398a611eaa66dbc971124928a8273c7a233b9bb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  ## Changelog
2
2
 
3
+ ## [1.2.0] - 2024-12-20
4
+ - Add support for MSTeams workflow based webhooks
5
+
3
6
  ## [1.1.1] - 2023-01-24
4
7
  - Prevent causing 413 response from microsoft teams webhook
5
8
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- msteams_hermes (1.1.1)
4
+ msteams_hermes (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -35,8 +35,8 @@ GEM
35
35
  rainbow (3.1.1)
36
36
  rake (13.2.1)
37
37
  regexp_parser (2.9.2)
38
- rexml (3.2.8)
39
- strscan (>= 3.0.9)
38
+ rexml (3.3.4)
39
+ strscan
40
40
  rspec (3.13.0)
41
41
  rspec-core (~> 3.13.0)
42
42
  rspec-expectations (~> 3.13.0)
data/complex_example.rb CHANGED
@@ -19,7 +19,7 @@ header = MsTeamsHermes::Components::Container.new(
19
19
  weight: MsTeamsHermes::Style::FontWeight::BOLDER
20
20
  ),
21
21
  MsTeamsHermes::Components::TextBlock.new(
22
- text: "Saturday, 1 January 2022"
22
+ text: Time.now.strftime("%A, %d %B %Y %H:%M:%S").to_s
23
23
  )
24
24
  ]
25
25
  )
@@ -3,6 +3,15 @@
3
3
  require "net/http"
4
4
  require "json"
5
5
 
6
+ ##
7
+ # Module to encapsulate the logic that decides whether a given response
8
+ # is of type workflow or connector type webhook.
9
+ # Both types must be considered differently to support both types of
10
+ # MSTeams webhooks.
11
+ ##
12
+ module MsTeamsWebhookType
13
+ end
14
+
6
15
  module MsTeamsHermes
7
16
  ##
8
17
  # A class representing Microsoft's webhook message object
@@ -62,15 +71,12 @@ module MsTeamsHermes
62
71
 
63
72
  response = http.request(req)
64
73
 
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
74
+ return response if response_from_mst_workflow_webhook?(response) ||
75
+ response_from_mst_connector_webhook?(response)
69
76
 
70
- raise UnknownError, response.body
71
- end
77
+ raise MessageBodyTooLargeError, body_json.bytesize if message_too_large?(response)
72
78
 
73
- response
79
+ raise UnknownError, response.body
74
80
  end
75
81
  end
76
82
  # rubocop:enable Metrics/AbcSize
@@ -93,5 +99,21 @@ module MsTeamsHermes
93
99
  ]
94
100
  }.to_json
95
101
  end
102
+
103
+ private
104
+
105
+ def response_from_mst_workflow_webhook?(response)
106
+ response.code == "202" && response.body.empty?
107
+ end
108
+
109
+ def response_from_mst_connector_webhook?(response)
110
+ # For details see:
111
+ # https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL%2Ctext1#send-messages-using-curl-and-powershell
112
+ response.code == "200" && response.body == "1"
113
+ end
114
+
115
+ def message_too_large?(response)
116
+ response.body.include? MSTEAMS_MESSAGE_413_ERROR_TOKEN
117
+ end
96
118
  end
97
119
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MsTeamsHermes
4
- VERSION = "1.1.1"
4
+ VERSION = "1.2.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msteams_hermes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Rocha
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-18 00:00:00.000000000 Z
11
+ date: 2024-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug
@@ -148,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  - !ruby/object:Gem::Version
149
149
  version: '0'
150
150
  requirements: []
151
- rubygems_version: 3.5.9
151
+ rubygems_version: 3.5.23
152
152
  signing_key:
153
153
  specification_version: 4
154
154
  summary: Send messages to any Microsoft Teams' channel as easy as possible.