microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
core/integration-test-au

Branches

Tags

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

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/Invokes/ExecuteActionActivity.cs

79lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Api.Activities;
5using Microsoft.Teams.Api.Activities.Invokes;
6using Microsoft.Teams.Apps.Routing;
7
8namespace Microsoft.Teams.Apps.Activities.Invokes;
9
10[AttributeUsage(AttributeTargets.Method, Inherited = true)]
11public class ExecuteActionAttribute() : InvokeAttribute(Api.Activities.Invokes.Name.ExecuteAction, typeof(ExecuteActionActivity))
12{
13 public override object Coerce(IContext<IActivity> context) => context.ToActivityType<ExecuteActionActivity>();
14}
15
16public static partial class AppInvokeActivityExtensions
17{
18 [Obsolete("Use the handler with the cancellation token")]
19 public static App OnExecuteAction(this App app, Func<IContext<ExecuteActionActivity>, Task> handler)
20 {
21 app.Router.Register(new Route()
22 {
23 Name = string.Join("/", [ActivityType.Invoke, Name.ExecuteAction]),
24 Type = app.Status is null ? RouteType.System : RouteType.User,
25 Handler = async context =>
26 {
27 await handler(context.ToActivityType<ExecuteActionActivity>()).ConfigureAwait(false);
28 return null;
29 },
30 Selector = activity => activity is ExecuteActionActivity
31 });
32
33 return app;
34 }
35
36 [Obsolete("Use the handler with the cancellation token")]
37 public static App OnExecuteAction(this App app, Func<IContext<ExecuteActionActivity>, Task<object?>> handler)
38 {
39 app.Router.Register(new Route()
40 {
41 Name = string.Join("/", [ActivityType.Invoke, Name.ExecuteAction]),
42 Type = app.Status is null ? RouteType.System : RouteType.User,
43 Handler = context => handler(context.ToActivityType<ExecuteActionActivity>()),
44 Selector = activity => activity is ExecuteActionActivity
45 });
46
47 return app;
48 }
49
50 public static App OnExecuteAction(this App app, Func<IContext<ExecuteActionActivity>, CancellationToken, Task> handler)
51 {
52 app.Router.Register(new Route()
53 {
54 Name = string.Join("/", [ActivityType.Invoke, Name.ExecuteAction]),
55 Type = app.Status is null ? RouteType.System : RouteType.User,
56 Handler = async context =>
57 {
58 await handler(context.ToActivityType<ExecuteActionActivity>(), context.CancellationToken).ConfigureAwait(false);
59 return null;
60 },
61 Selector = activity => activity is ExecuteActionActivity
62 });
63
64 return app;
65 }
66
67 public static App OnExecuteAction(this App app, Func<IContext<ExecuteActionActivity>, CancellationToken, Task<object?>> handler)
68 {
69 app.Router.Register(new Route()
70 {
71 Name = string.Join("/", [ActivityType.Invoke, Name.ExecuteAction]),
72 Type = app.Status is null ? RouteType.System : RouteType.User,
73 Handler = context => handler(context.ToActivityType<ExecuteActionActivity>(), context.CancellationToken),
74 Selector = activity => activity is ExecuteActionActivity
75 });
76
77 return app;
78 }
79}