microsoft/teams.net

Public

mirrored from https://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v2.0.8

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/Invokes/Search/AnswerSearchActivity.cs

163lines · modecode

1using Microsoft.Teams.Api.Activities;
2using Microsoft.Teams.Api.Activities.Invokes;
3using Microsoft.Teams.Api.Search;
4using Microsoft.Teams.Apps.Routing;
5
6namespace Microsoft.Teams.Apps.Activities.Invokes;
7
8public static partial class Search
9{
10 [AttributeUsage(AttributeTargets.Method, Inherited = true)]
11 public class Answer() : SearchAttribute
12 {
13 public override bool Select(IActivity activity)
14 {
15 if (activity is SearchActivity search)
16 {
17 return search.Value.Kind.IsSearchAnswer;
18 }
19
20 return false;
21 }
22 }
23}
24
25public static partial class AppInvokeActivityExtensions
26{
27 [Obsolete("Use the handler with the cancellation token")]
28 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, Task> handler)
29 {
30 app.Router.Register(new Route()
31 {
32 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
33 Type = app.Status is null ? RouteType.System : RouteType.User,
34 Handler = async context =>
35 {
36 await handler(context.ToActivityType<SearchActivity>()).ConfigureAwait(false);
37 return null;
38 },
39 Selector = activity =>
40 {
41 if (activity is SearchActivity search)
42 {
43 return search.Value.Kind.IsSearchAnswer;
44 }
45
46 return false;
47 }
48 });
49
50 return app;
51 }
52
53 [Obsolete("Use the handler with the cancellation token")]
54 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, Task<Response<SearchResponse>>> handler)
55 {
56 app.Router.Register(new Route()
57 {
58 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
59 Type = app.Status is null ? RouteType.System : RouteType.User,
60 Handler = async context => await handler(context.ToActivityType<SearchActivity>()).ConfigureAwait(false),
61 Selector = activity =>
62 {
63 if (activity is SearchActivity search)
64 {
65 return search.Value.Kind.IsSearchAnswer;
66 }
67
68 return false;
69 }
70 });
71
72 return app;
73 }
74
75 [Obsolete("Use the handler with the cancellation token")]
76 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, Task<SearchResponse>> handler)
77 {
78 app.Router.Register(new Route()
79 {
80 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
81 Type = app.Status is null ? RouteType.System : RouteType.User,
82 Handler = async context => await handler(context.ToActivityType<SearchActivity>()).ConfigureAwait(false),
83 Selector = activity =>
84 {
85 if (activity is SearchActivity search)
86 {
87 return search.Value.Kind.IsSearchAnswer;
88 }
89
90 return false;
91 }
92 });
93
94 return app;
95 }
96
97 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, CancellationToken, Task> handler)
98 {
99 app.Router.Register(new Route()
100 {
101 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
102 Type = app.Status is null ? RouteType.System : RouteType.User,
103 Handler = async context =>
104 {
105 await handler(context.ToActivityType<SearchActivity>(), context.CancellationToken).ConfigureAwait(false);
106 return null;
107 },
108 Selector = activity =>
109 {
110 if (activity is SearchActivity search)
111 {
112 return search.Value.Kind.IsSearchAnswer;
113 }
114
115 return false;
116 }
117 });
118
119 return app;
120 }
121
122 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, CancellationToken, Task<Response<SearchResponse>>> handler)
123 {
124 app.Router.Register(new Route()
125 {
126 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
127 Type = app.Status is null ? RouteType.System : RouteType.User,
128 Handler = async context => await handler(context.ToActivityType<SearchActivity>(), context.CancellationToken).ConfigureAwait(false),
129 Selector = activity =>
130 {
131 if (activity is SearchActivity search)
132 {
133 return search.Value.Kind.IsSearchAnswer;
134 }
135
136 return false;
137 }
138 });
139
140 return app;
141 }
142
143 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, CancellationToken, Task<SearchResponse>> handler)
144 {
145 app.Router.Register(new Route()
146 {
147 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
148 Type = app.Status is null ? RouteType.System : RouteType.User,
149 Handler = async context => await handler(context.ToActivityType<SearchActivity>(), context.CancellationToken).ConfigureAwait(false),
150 Selector = activity =>
151 {
152 if (activity is SearchActivity search)
153 {
154 return search.Value.Kind.IsSearchAnswer;
155 }
156
157 return false;
158 }
159 });
160
161 return app;
162 }
163}