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/SignIn/TokenExchangeActivity.cs

129lines · 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 TokenExchangeAttribute() : InvokeAttribute(Api.Activities.Invokes.Name.SignIn.TokenExchange, typeof(SignIn.TokenExchangeActivity))
12{
13 public override object Coerce(IContext<IActivity> context) => context.ToActivityType<SignIn.TokenExchangeActivity>();
14}
15
16public static partial class AppInvokeActivityExtensions
17{
18 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, Task> handler)
19 {
20 app.Router.Register(new Route()
21 {
22 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
23 Type = app.Status is null ? RouteType.System : RouteType.User,
24 Handler = async context =>
25 {
26 await handler(context.ToActivityType<SignIn.TokenExchangeActivity>());
27 return null;
28 },
29 Selector = activity => activity is SignIn.TokenExchangeActivity
30 });
31
32 return app;
33 }
34
35 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, Task<Response<Api.TokenExchange.InvokeResponse>>> handler)
36 {
37 app.Router.Register(new Route()
38 {
39 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
40 Type = app.Status is null ? RouteType.System : RouteType.User,
41 Handler = async context => await handler(context.ToActivityType<SignIn.TokenExchangeActivity>()),
42 Selector = activity => activity is SignIn.TokenExchangeActivity
43 });
44
45 return app;
46 }
47
48 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, Task<Api.TokenExchange.InvokeResponse>> handler)
49 {
50 app.Router.Register(new Route()
51 {
52 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
53 Type = app.Status is null ? RouteType.System : RouteType.User,
54 Handler = async context => await handler(context.ToActivityType<SignIn.TokenExchangeActivity>()),
55 Selector = activity => activity is SignIn.TokenExchangeActivity
56 });
57
58 return app;
59 }
60
61 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, Task<Response>> handler)
62 {
63 app.Router.Register(new Route()
64 {
65 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
66 Type = app.Status is null ? RouteType.System : RouteType.User,
67 Handler = async context => await handler(context.ToActivityType<SignIn.TokenExchangeActivity>()),
68 Selector = activity => activity is SignIn.TokenExchangeActivity
69 });
70
71 return app;
72 }
73
74 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, CancellationToken, Task> handler)
75 {
76 app.Router.Register(new Route()
77 {
78 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
79 Type = app.Status is null ? RouteType.System : RouteType.User,
80 Handler = async context =>
81 {
82 await handler(context.ToActivityType<SignIn.TokenExchangeActivity>(), context.CancellationToken);
83 return null;
84 },
85 Selector = activity => activity is SignIn.TokenExchangeActivity
86 });
87
88 return app;
89 }
90
91 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, CancellationToken, Task<Response<Api.TokenExchange.InvokeResponse>>> handler)
92 {
93 app.Router.Register(new Route()
94 {
95 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
96 Type = app.Status is null ? RouteType.System : RouteType.User,
97 Handler = async context => await handler(context.ToActivityType<SignIn.TokenExchangeActivity>(), context.CancellationToken),
98 Selector = activity => activity is SignIn.TokenExchangeActivity
99 });
100
101 return app;
102 }
103
104 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, CancellationToken, Task<Api.TokenExchange.InvokeResponse>> handler)
105 {
106 app.Router.Register(new Route()
107 {
108 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
109 Type = app.Status is null ? RouteType.System : RouteType.User,
110 Handler = async context => await handler(context.ToActivityType<SignIn.TokenExchangeActivity>(), context.CancellationToken),
111 Selector = activity => activity is SignIn.TokenExchangeActivity
112 });
113
114 return app;
115 }
116
117 public static App OnTokenExchange(this App app, Func<IContext<SignIn.TokenExchangeActivity>, CancellationToken, Task<Response>> handler)
118 {
119 app.Router.Register(new Route()
120 {
121 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.TokenExchange]),
122 Type = app.Status is null ? RouteType.System : RouteType.User,
123 Handler = async context => await handler(context.ToActivityType<SignIn.TokenExchangeActivity>(), context.CancellationToken),
124 Selector = activity => activity is SignIn.TokenExchangeActivity
125 });
126
127 return app;
128 }
129}