teams_rb 2.0.1

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.
Files changed (86) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +47 -0
  3. data/LICENSE +21 -0
  4. data/README.md +500 -0
  5. data/docs/README.md +40 -0
  6. data/docs/essentials/README.md +13 -0
  7. data/docs/essentials/api-client.md +62 -0
  8. data/docs/essentials/app-authentication.md +27 -0
  9. data/docs/essentials/app-basics.md +50 -0
  10. data/docs/essentials/graph.md +41 -0
  11. data/docs/essentials/on-activity.md +72 -0
  12. data/docs/essentials/on-event.md +29 -0
  13. data/docs/essentials/proactive-messaging.md +44 -0
  14. data/docs/essentials/sending-messages.md +76 -0
  15. data/docs/essentials/sovereign-cloud.md +26 -0
  16. data/docs/getting-started/README.md +7 -0
  17. data/docs/getting-started/code-basics.md +61 -0
  18. data/docs/getting-started/quickstart.md +54 -0
  19. data/docs/getting-started/running-in-teams.md +44 -0
  20. data/docs/in-depth-guides/README.md +14 -0
  21. data/docs/in-depth-guides/adaptive-cards.md +62 -0
  22. data/docs/in-depth-guides/dialogs.md +77 -0
  23. data/docs/in-depth-guides/feedback.md +29 -0
  24. data/docs/in-depth-guides/meeting-events.md +27 -0
  25. data/docs/in-depth-guides/message-extensions.md +77 -0
  26. data/docs/in-depth-guides/message-reactions.md +29 -0
  27. data/docs/in-depth-guides/observability.md +28 -0
  28. data/docs/in-depth-guides/streaming.md +52 -0
  29. data/docs/in-depth-guides/tabs.md +59 -0
  30. data/docs/in-depth-guides/user-authentication.md +60 -0
  31. data/lib/teams/activity.rb +160 -0
  32. data/lib/teams/activity_context.rb +278 -0
  33. data/lib/teams/api/account.rb +90 -0
  34. data/lib/teams/api/activity_value.rb +49 -0
  35. data/lib/teams/api/bot_sign_in_client.rb +54 -0
  36. data/lib/teams/api/channel_data.rb +86 -0
  37. data/lib/teams/api/channel_info.rb +19 -0
  38. data/lib/teams/api/citation_appearance.rb +83 -0
  39. data/lib/teams/api/client.rb +28 -0
  40. data/lib/teams/api/conversation_account.rb +40 -0
  41. data/lib/teams/api/conversation_client.rb +156 -0
  42. data/lib/teams/api/conversation_reference.rb +83 -0
  43. data/lib/teams/api/conversation_resource.rb +19 -0
  44. data/lib/teams/api/meeting_client.rb +57 -0
  45. data/lib/teams/api/meeting_info.rb +26 -0
  46. data/lib/teams/api/meeting_notification_response.rb +29 -0
  47. data/lib/teams/api/meeting_participant.rb +33 -0
  48. data/lib/teams/api/message_activity.rb +201 -0
  49. data/lib/teams/api/message_extension.rb +110 -0
  50. data/lib/teams/api/model.rb +49 -0
  51. data/lib/teams/api/notification_info.rb +28 -0
  52. data/lib/teams/api/paged_members_result.rb +16 -0
  53. data/lib/teams/api/quoted_reply_entity.rb +65 -0
  54. data/lib/teams/api/reaction_client.rb +34 -0
  55. data/lib/teams/api/sent_activity.rb +48 -0
  56. data/lib/teams/api/task_module.rb +83 -0
  57. data/lib/teams/api/team_client.rb +45 -0
  58. data/lib/teams/api/team_details.rb +36 -0
  59. data/lib/teams/api/team_info.rb +44 -0
  60. data/lib/teams/api/tenant_info.rb +11 -0
  61. data/lib/teams/api/token.rb +81 -0
  62. data/lib/teams/api/typing_activity.rb +19 -0
  63. data/lib/teams/api/user_client.rb +83 -0
  64. data/lib/teams/app.rb +602 -0
  65. data/lib/teams/auth/client_secret_credentials.rb +7 -0
  66. data/lib/teams/auth/jwt_validator.rb +148 -0
  67. data/lib/teams/auth/token.rb +39 -0
  68. data/lib/teams/auth/token_manager.rb +68 -0
  69. data/lib/teams/cards/generated.rb +1764 -0
  70. data/lib/teams/cards/generated_base.rb +105 -0
  71. data/lib/teams/cards.rb +81 -0
  72. data/lib/teams/cloud_environment.rb +41 -0
  73. data/lib/teams/common/hashes.rb +20 -0
  74. data/lib/teams/common/http_client.rb +111 -0
  75. data/lib/teams/common/retry.rb +31 -0
  76. data/lib/teams/errors.rb +50 -0
  77. data/lib/teams/function_context.rb +82 -0
  78. data/lib/teams/graph/client.rb +73 -0
  79. data/lib/teams/http_stream.rb +460 -0
  80. data/lib/teams/rack_app.rb +62 -0
  81. data/lib/teams/response.rb +9 -0
  82. data/lib/teams/router.rb +171 -0
  83. data/lib/teams/storage/memory_store.rb +27 -0
  84. data/lib/teams/version.rb +5 -0
  85. data/lib/teams.rb +70 -0
  86. metadata +217 -0
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Teams
4
+ module Storage
5
+ class MemoryStore
6
+ def initialize(initial = {})
7
+ @data = initial.dup
8
+ # The store is shared across request threads in multi-threaded Rack
9
+ # servers. The upstream SDKs run single-threaded event loops and can
10
+ # skip locking; Ruby cannot.
11
+ @mutex = Mutex.new
12
+ end
13
+
14
+ def get(key)
15
+ @mutex.synchronize { @data[key] }
16
+ end
17
+
18
+ def set(key, value)
19
+ @mutex.synchronize { @data[key] = value }
20
+ end
21
+
22
+ def delete(key)
23
+ @mutex.synchronize { @data.delete(key) }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Teams
4
+ VERSION = "2.0.1"
5
+ end
data/lib/teams.rb ADDED
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "teams/version"
4
+ require_relative "teams/errors"
5
+ require_relative "teams/common/hashes"
6
+ require_relative "teams/common/retry"
7
+ require_relative "teams/cloud_environment"
8
+ require_relative "teams/cards"
9
+ require_relative "teams/cards/generated"
10
+ require_relative "teams/api/model"
11
+ require_relative "teams/api/account"
12
+ require_relative "teams/api/conversation_account"
13
+ require_relative "teams/api/conversation_resource"
14
+ require_relative "teams/api/paged_members_result"
15
+ require_relative "teams/api/tenant_info"
16
+ require_relative "teams/api/team_info"
17
+ require_relative "teams/api/team_details"
18
+ require_relative "teams/api/channel_info"
19
+ require_relative "teams/api/notification_info"
20
+ require_relative "teams/api/meeting_info"
21
+ require_relative "teams/api/meeting_participant"
22
+ require_relative "teams/api/meeting_notification_response"
23
+ require_relative "teams/api/channel_data"
24
+ require_relative "teams/api/activity_value"
25
+ require_relative "teams/api/quoted_reply_entity"
26
+ require_relative "teams/api/sent_activity"
27
+ require_relative "teams/api/citation_appearance"
28
+ require_relative "teams/api/task_module"
29
+ require_relative "teams/api/message_extension"
30
+ require_relative "teams/activity"
31
+ require_relative "teams/activity_context"
32
+ require_relative "teams/function_context"
33
+ require_relative "teams/http_stream"
34
+ require_relative "teams/router"
35
+ require_relative "teams/response"
36
+ require_relative "teams/storage/memory_store"
37
+ require_relative "teams/common/http_client"
38
+ require_relative "teams/api/conversation_reference"
39
+ require_relative "teams/auth/client_secret_credentials"
40
+ require_relative "teams/auth/token"
41
+ require_relative "teams/auth/token_manager"
42
+ require_relative "teams/auth/jwt_validator"
43
+ require_relative "teams/api/token"
44
+ require_relative "teams/api/reaction_client"
45
+ require_relative "teams/api/user_client"
46
+ require_relative "teams/api/bot_sign_in_client"
47
+ require_relative "teams/api/conversation_client"
48
+ require_relative "teams/api/team_client"
49
+ require_relative "teams/api/meeting_client"
50
+ require_relative "teams/api/client"
51
+ require_relative "teams/api/message_activity"
52
+ require_relative "teams/api/typing_activity"
53
+ require_relative "teams/graph/client"
54
+ require_relative "teams/rack_app"
55
+ require_relative "teams/app"
56
+
57
+ module Teams
58
+ # Constructs a threaded conversation ID by appending ";messageid={message_id}",
59
+ # the format the Teams service uses to route messages to a specific thread.
60
+ def self.to_threaded_conversation_id(conversation_id, message_id)
61
+ raise ArgumentError, "conversation_id must be a non-empty String" if conversation_id.to_s.empty?
62
+
63
+ message_id = message_id.to_s
64
+ unless message_id.match?(/\A\d+\z/) && message_id != "0"
65
+ raise ArgumentError, %(invalid message_id "#{message_id}": must be a non-zero numeric value)
66
+ end
67
+
68
+ "#{conversation_id.split(";").first};messageid=#{message_id}"
69
+ end
70
+ end
metadata ADDED
@@ -0,0 +1,217 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: teams_rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Devran Cosmo Uenal
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.3'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.3'
26
+ - !ruby/object:Gem::Dependency
27
+ name: faraday
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.14'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.14'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rack
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.2'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.2'
54
+ - !ruby/object:Gem::Dependency
55
+ name: minitest
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '6.0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '6.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rack-test
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '2.2'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '2.2'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rake
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '13'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '13'
96
+ description: 'A Ruby-native port of the Microsoft Teams SDK concepts for building
97
+ Teams bots and apps from Rack/Rails: messaging, Adaptive Cards, dialogs, message
98
+ extensions, streaming, OAuth user sign-in, Microsoft Graph, and tab remote functions.
99
+ An independent, community-maintained project, not affiliated with or endorsed by
100
+ Microsoft.'
101
+ email:
102
+ - devran@bavmind.com
103
+ executables: []
104
+ extensions: []
105
+ extra_rdoc_files: []
106
+ files:
107
+ - CHANGELOG.md
108
+ - LICENSE
109
+ - README.md
110
+ - docs/README.md
111
+ - docs/essentials/README.md
112
+ - docs/essentials/api-client.md
113
+ - docs/essentials/app-authentication.md
114
+ - docs/essentials/app-basics.md
115
+ - docs/essentials/graph.md
116
+ - docs/essentials/on-activity.md
117
+ - docs/essentials/on-event.md
118
+ - docs/essentials/proactive-messaging.md
119
+ - docs/essentials/sending-messages.md
120
+ - docs/essentials/sovereign-cloud.md
121
+ - docs/getting-started/README.md
122
+ - docs/getting-started/code-basics.md
123
+ - docs/getting-started/quickstart.md
124
+ - docs/getting-started/running-in-teams.md
125
+ - docs/in-depth-guides/README.md
126
+ - docs/in-depth-guides/adaptive-cards.md
127
+ - docs/in-depth-guides/dialogs.md
128
+ - docs/in-depth-guides/feedback.md
129
+ - docs/in-depth-guides/meeting-events.md
130
+ - docs/in-depth-guides/message-extensions.md
131
+ - docs/in-depth-guides/message-reactions.md
132
+ - docs/in-depth-guides/observability.md
133
+ - docs/in-depth-guides/streaming.md
134
+ - docs/in-depth-guides/tabs.md
135
+ - docs/in-depth-guides/user-authentication.md
136
+ - lib/teams.rb
137
+ - lib/teams/activity.rb
138
+ - lib/teams/activity_context.rb
139
+ - lib/teams/api/account.rb
140
+ - lib/teams/api/activity_value.rb
141
+ - lib/teams/api/bot_sign_in_client.rb
142
+ - lib/teams/api/channel_data.rb
143
+ - lib/teams/api/channel_info.rb
144
+ - lib/teams/api/citation_appearance.rb
145
+ - lib/teams/api/client.rb
146
+ - lib/teams/api/conversation_account.rb
147
+ - lib/teams/api/conversation_client.rb
148
+ - lib/teams/api/conversation_reference.rb
149
+ - lib/teams/api/conversation_resource.rb
150
+ - lib/teams/api/meeting_client.rb
151
+ - lib/teams/api/meeting_info.rb
152
+ - lib/teams/api/meeting_notification_response.rb
153
+ - lib/teams/api/meeting_participant.rb
154
+ - lib/teams/api/message_activity.rb
155
+ - lib/teams/api/message_extension.rb
156
+ - lib/teams/api/model.rb
157
+ - lib/teams/api/notification_info.rb
158
+ - lib/teams/api/paged_members_result.rb
159
+ - lib/teams/api/quoted_reply_entity.rb
160
+ - lib/teams/api/reaction_client.rb
161
+ - lib/teams/api/sent_activity.rb
162
+ - lib/teams/api/task_module.rb
163
+ - lib/teams/api/team_client.rb
164
+ - lib/teams/api/team_details.rb
165
+ - lib/teams/api/team_info.rb
166
+ - lib/teams/api/tenant_info.rb
167
+ - lib/teams/api/token.rb
168
+ - lib/teams/api/typing_activity.rb
169
+ - lib/teams/api/user_client.rb
170
+ - lib/teams/app.rb
171
+ - lib/teams/auth/client_secret_credentials.rb
172
+ - lib/teams/auth/jwt_validator.rb
173
+ - lib/teams/auth/token.rb
174
+ - lib/teams/auth/token_manager.rb
175
+ - lib/teams/cards.rb
176
+ - lib/teams/cards/generated.rb
177
+ - lib/teams/cards/generated_base.rb
178
+ - lib/teams/cloud_environment.rb
179
+ - lib/teams/common/hashes.rb
180
+ - lib/teams/common/http_client.rb
181
+ - lib/teams/common/retry.rb
182
+ - lib/teams/errors.rb
183
+ - lib/teams/function_context.rb
184
+ - lib/teams/graph/client.rb
185
+ - lib/teams/http_stream.rb
186
+ - lib/teams/rack_app.rb
187
+ - lib/teams/response.rb
188
+ - lib/teams/router.rb
189
+ - lib/teams/storage/memory_store.rb
190
+ - lib/teams/version.rb
191
+ homepage: https://github.com/bavmind/teams_rb
192
+ licenses:
193
+ - MIT
194
+ metadata:
195
+ source_code_uri: https://github.com/bavmind/teams_rb
196
+ documentation_uri: https://github.com/bavmind/teams_rb/tree/main/docs
197
+ changelog_uri: https://github.com/bavmind/teams_rb/blob/main/CHANGELOG.md
198
+ bug_tracker_uri: https://github.com/bavmind/teams_rb/issues
199
+ rubygems_mfa_required: 'true'
200
+ rdoc_options: []
201
+ require_paths:
202
+ - lib
203
+ required_ruby_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 4.0.0
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ requirements: []
214
+ rubygems_version: 4.0.10
215
+ specification_version: 4
216
+ summary: Unofficial Ruby SDK for building Microsoft Teams bots and apps
217
+ test_files: []