microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
samples/migration-bot

Branches

Tags

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

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/Invokes/Configs/FetchActivity.cs

107lines · 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.Api.Config;
7using Microsoft.Teams.Apps.Routing;
8
9namespace Microsoft.Teams.Apps.Activities.Invokes;
10
11public static partial class Config
12{
13 [AttributeUsage(AttributeTargets.Method, Inherited = true)]
14 public class FetchAttribute() : InvokeAttribute(Api.Activities.Invokes.Name.Configs.Fetch, typeof(Configs.FetchActivity))
15 {
16 public override object Coerce(IContext<IActivity> context) => context.ToActivityType<Configs.FetchActivity>();
17 }
18}
19
20public static partial class AppInvokeActivityExtensions
21{
22 public static App OnConfigFetch(this App app, Func<IContext<Configs.FetchActivity>, Task> handler)
23 {
24 app.Router.Register(new Route()
25 {
26 Name = string.Join("/", [ActivityType.Invoke, Name.Configs.Fetch]),
27 Type = app.Status is null ? RouteType.System : RouteType.User,
28 Handler = async context =>
29 {
30 await handler(context.ToActivityType<Configs.FetchActivity>());
31 return null;
32 },
33 Selector = activity => activity is Configs.FetchActivity
34 });
35
36 return app;
37 }
38
39 public static App OnConfigFetch(this App app, Func<IContext<Configs.FetchActivity>, Task<Response<ConfigResponse>>> handler)
40 {
41 app.Router.Register(new Route()
42 {
43 Name = string.Join("/", [ActivityType.Invoke, Name.Configs.Fetch]),
44 Type = app.Status is null ? RouteType.System : RouteType.User,
45 Handler = async context => await handler(context.ToActivityType<Configs.FetchActivity>()),
46 Selector = activity => activity is Configs.FetchActivity
47 });
48
49 return app;
50 }
51
52 public static App OnConfigFetch(this App app, Func<IContext<Configs.FetchActivity>, Task<ConfigResponse>> handler)
53 {
54 app.Router.Register(new Route()
55 {
56 Name = string.Join("/", [ActivityType.Invoke, Name.Configs.Fetch]),
57 Type = app.Status is null ? RouteType.System : RouteType.User,
58 Handler = async context => await handler(context.ToActivityType<Configs.FetchActivity>()),
59 Selector = activity => activity is Configs.FetchActivity
60 });
61
62 return app;
63 }
64
65 public static App OnConfigFetch(this App app, Func<IContext<Configs.FetchActivity>, CancellationToken, Task> handler)
66 {
67 app.Router.Register(new Route()
68 {
69 Name = string.Join("/", [ActivityType.Invoke, Name.Configs.Fetch]),
70 Type = app.Status is null ? RouteType.System : RouteType.User,
71 Handler = async context =>
72 {
73 await handler(context.ToActivityType<Configs.FetchActivity>(), context.CancellationToken);
74 return null;
75 },
76 Selector = activity => activity is Configs.FetchActivity
77 });
78
79 return app;
80 }
81
82 public static App OnConfigFetch(this App app, Func<IContext<Configs.FetchActivity>, CancellationToken, Task<Response<ConfigResponse>>> handler)
83 {
84 app.Router.Register(new Route()
85 {
86 Name = string.Join("/", [ActivityType.Invoke, Name.Configs.Fetch]),
87 Type = app.Status is null ? RouteType.System : RouteType.User,
88 Handler = async context => await handler(context.ToActivityType<Configs.FetchActivity>(), context.CancellationToken),
89 Selector = activity => activity is Configs.FetchActivity
90 });
91
92 return app;
93 }
94
95 public static App OnConfigFetch(this App app, Func<IContext<Configs.FetchActivity>, CancellationToken, Task<ConfigResponse>> handler)
96 {
97 app.Router.Register(new Route()
98 {
99 Name = string.Join("/", [ActivityType.Invoke, Name.Configs.Fetch]),
100 Type = app.Status is null ? RouteType.System : RouteType.User,
101 Handler = async context => await handler(context.ToActivityType<Configs.FetchActivity>(), context.CancellationToken),
102 Selector = activity => activity is Configs.FetchActivity
103 });
104
105 return app;
106 }
107}