chat_sdk-gchat 1.1.0 → 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: c07828b323f52de29ac4f1fa5cd28a9ebc1991218919943ab098c282f12abf10
4
- data.tar.gz: df8107d2939c79638eb19e72f556f3b418022edb3edf92fda051396d1f4ec6e6
3
+ metadata.gz: 3a9d22b76276f761a3436f508397dbef8b15fc177d03f390a1898e4f981bc9c1
4
+ data.tar.gz: 0f92f166374ea5b14dcc81e3ccd8742de0a3b244cf3e51bb71bc4c8b50ef276b
5
5
  SHA512:
6
- metadata.gz: 827f9b4143159fd535cf282add46628591da26d2c1ba2cc83196622adf2f1ed76e8132e77291a13c7662673f7602be7fed0d02a9ac924472c6ec3d27426f81f5
7
- data.tar.gz: 9ac83233af904d852c3706b73b6694ba0b78a03997782923def45689e8bb417e84eca20c166c28d6d4843c760647d360a7522b4a29dd74464582fcd6671f8df9
6
+ metadata.gz: f4aa6693d9ce80cec67766859a5aa95f28bf8db6dad55505cd404602db828231d47f08c57cf19881e9f008c7c8ca888ff73b857f4d779aae7c4135d9cfae7100
7
+ data.tar.gz: 869d867f863ac6201a63167e0dfa72f2f6e3e6b889a96454ecd54f7a733ca255006ebc3316314e1aa4f4efdbba18c8db1b21204cdc0a8d66d993296792a1e4e1
@@ -81,11 +81,11 @@ module ChatSDK
81
81
  build_response_message(result, channel_id, msg)
82
82
  end
83
83
 
84
- def edit_message(channel_id:, message_id:, message:)
84
+ def edit_message(channel_id:, message_id:, message:, **_options)
85
85
  require_capability!(:edit_messages)
86
86
  msg = ChatSDK::PostableMessage.from(message)
87
87
  request_body = build_message_body(msg)
88
- request_body[:name] = "spaces/#{channel_id}/messages/#{message_id}"
88
+ request_body[:name] = message_resource_name(channel_id, message_id)
89
89
 
90
90
  @client.update_message(
91
91
  message: request_body,
@@ -93,9 +93,9 @@ module ChatSDK
93
93
  )
94
94
  end
95
95
 
96
- def delete_message(channel_id:, message_id:)
96
+ def delete_message(channel_id:, message_id:, **_options)
97
97
  require_capability!(:delete_messages)
98
- @client.delete_message(name: "spaces/#{channel_id}/messages/#{message_id}")
98
+ @client.delete_message(name: message_resource_name(channel_id, message_id))
99
99
  end
100
100
 
101
101
  def post_ephemeral(channel_id:, user_id:, message:, thread_id: nil)
@@ -120,22 +120,22 @@ module ChatSDK
120
120
  super
121
121
  end
122
122
 
123
- def add_reaction(channel_id:, message_id:, emoji:)
123
+ def add_reaction(channel_id:, message_id:, emoji:, **_options)
124
124
  require_capability!(:reactions)
125
125
  @client.create_reaction(
126
- parent: "spaces/#{channel_id}/messages/#{message_id}",
126
+ parent: message_resource_name(channel_id, message_id),
127
127
  reaction: {
128
128
  emoji: {unicode: emoji}
129
129
  }
130
130
  )
131
131
  end
132
132
 
133
- def remove_reaction(channel_id:, message_id:, emoji:)
133
+ def remove_reaction(channel_id:, message_id:, emoji:, **_options)
134
134
  require_capability!(:reactions)
135
135
  # Google Chat requires the reaction resource name to delete
136
136
  # We construct it from the emoji unicode
137
137
  @client.delete_reaction(
138
- name: "spaces/#{channel_id}/messages/#{message_id}/reactions/#{emoji}"
138
+ name: "#{message_resource_name(channel_id, message_id)}/reactions/#{emoji}"
139
139
  )
140
140
  end
141
141
 
@@ -164,7 +164,7 @@ module ChatSDK
164
164
  super
165
165
  end
166
166
 
167
- def start_typing(channel_id:, thread_id: nil)
167
+ def start_typing(channel_id:, thread_id: nil, message_id: nil)
168
168
  super
169
169
  end
170
170
 
@@ -3,10 +3,40 @@
3
3
  module ChatSDK
4
4
  module GChat
5
5
  module ResourceName
6
+ MESSAGE_ID_PATTERN = /\A[A-Za-z0-9_.-]+\z/
7
+ SPACE_ID_PATTERN = /\A[A-Za-z0-9_-]+\z/
8
+
6
9
  def extract_id(resource_name)
7
10
  return resource_name unless resource_name.is_a?(String)
8
11
  resource_name.split("/").last || resource_name
9
12
  end
13
+
14
+ def message_resource_name(channel_id, message_id)
15
+ space_id = channel_id.to_s
16
+ unless channel_id.is_a?(String) && SPACE_ID_PATTERN.match?(space_id)
17
+ raise ChatSDK::Error, "Invalid Google Chat space ID: #{channel_id.inspect}"
18
+ end
19
+
20
+ unless message_id.is_a?(String)
21
+ raise ChatSDK::Error, "Invalid Google Chat message ID: #{message_id.inspect}"
22
+ end
23
+
24
+ space_name = "spaces/#{space_id}"
25
+ prefix = "#{space_name}/messages/"
26
+ message_name = message_id
27
+ message_name = "#{prefix}#{message_name}" if MESSAGE_ID_PATTERN.match?(message_name)
28
+
29
+ unless message_name.start_with?(prefix)
30
+ raise ChatSDK::Error, "Invalid Google Chat message ID: #{message_id.inspect}"
31
+ end
32
+
33
+ id = message_name.delete_prefix(prefix)
34
+ unless MESSAGE_ID_PATTERN.match?(id) && id != "." && id != ".."
35
+ raise ChatSDK::Error, "Invalid Google Chat message ID: #{message_id.inspect}"
36
+ end
37
+
38
+ "#{prefix}#{id}"
39
+ end
10
40
  end
11
41
  end
12
42
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chat_sdk-gchat
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Quentin Rousseau
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '0.1'
18
+ version: '1.2'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '0.1'
25
+ version: '1.2'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: google-apps-chat-v1
28
28
  requirement: !ruby/object:Gem::Requirement