microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/change-attachmentlayout-carousel-to-grid

Branches

Tags

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

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/Invokes/SignIn/FailureActivity.cs

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