microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/setup-copilot-instructions

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

64lines · 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}