1
1
using Microsoft . Rest ;
2
2
using System ;
3
+ using System . Linq ;
3
4
using System . Management . Automation ;
5
+ using System . Net . Http ;
4
6
using UiPath . PowerShell . Models ;
5
7
using UiPath . PowerShell . Util ;
6
8
using UiPath . Web . Client ;
@@ -29,6 +31,7 @@ public class GetAuthToken: UiPathCmdlet
29
31
{
30
32
private const string UserPasswordSet = "UserPassword" ;
31
33
private const string WindowsCredentialsSet = "WindowsCredentials" ;
34
+ private const string UnauthenticatedSet = "Unauthenticated" ;
32
35
33
36
[ Parameter ( Mandatory = true , Position = 0 ) ]
34
37
public string URL { get ; set ; }
@@ -45,34 +48,74 @@ public class GetAuthToken: UiPathCmdlet
45
48
[ Parameter ( Mandatory = true , ParameterSetName = WindowsCredentialsSet ) ]
46
49
public SwitchParameter WindowsCredentials { get ; set ; }
47
50
51
+ [ Parameter ( Mandatory = true , ParameterSetName = UnauthenticatedSet ) ]
52
+ public SwitchParameter Unauthenticated { get ; set ; }
53
+
48
54
[ Parameter ]
49
55
public SwitchParameter Session { get ; set ; }
50
56
51
57
protected override void ProcessRecord ( )
52
58
{
53
- AuthToken authToken = null ;
54
- if ( ParameterSetName == UserPasswordSet )
59
+ try
55
60
{
56
- authToken = GetUserToken ( ) ;
61
+ AuthToken authToken = null ;
62
+ if ( ParameterSetName == UserPasswordSet )
63
+ {
64
+ authToken = GetUserToken ( ) ;
65
+ }
66
+ else if ( ParameterSetName == WindowsCredentialsSet )
67
+ {
68
+ authToken = GetWindowsToken ( ) ;
69
+ }
70
+ else if ( ParameterSetName == UnauthenticatedSet )
71
+ {
72
+ authToken = GetUnauthenticatedToken ( ) ;
73
+ }
74
+
75
+ GetServerVersion ( authToken ) ;
76
+
77
+ if ( Session . IsPresent )
78
+ {
79
+ AuthenticatedCmdlet . SetAuthToken ( authToken ) ;
80
+ }
81
+
82
+ WriteObject ( authToken ) ;
57
83
}
58
- else if ( ParameterSetName == WindowsCredentialsSet )
84
+ catch ( Exception e )
59
85
{
60
- authToken = GetWindowsToken ( ) ;
86
+ WriteVerbose ( e . ToString ( ) ) ;
61
87
}
62
- if ( Session . IsPresent )
88
+ }
89
+
90
+ private void GetServerVersion ( AuthToken authToken )
91
+ {
92
+ using ( var api = AuthenticatedCmdlet . MakeApi ( authToken ) )
63
93
{
64
- AuthenticatedCmdlet . SetAuthToken ( authToken ) ;
94
+ api . MakeHttpRequest ( HttpMethod . Get , "/odata/$metadata" , null , out var response , out var headers ) ;
95
+ if ( headers . TryGetValues ( "api-supported-versions" , out var values ) )
96
+ {
97
+ authToken . ApiVersion = values . First ( ) ;
98
+ }
65
99
}
100
+ }
66
101
67
- WriteObject ( authToken ) ;
102
+ private AuthToken GetUnauthenticatedToken ( )
103
+ {
104
+ return new AuthToken
105
+ {
106
+ URL = URL ,
107
+ WindowsCredentials = false ,
108
+ Authenticated = false
109
+ } ;
68
110
}
69
111
70
112
private AuthToken GetWindowsToken ( )
71
113
{
72
114
return new AuthToken
73
115
{
74
116
URL = URL ,
75
- WindowsCredentials = true
117
+ WindowsCredentials = true ,
118
+ Authenticated = true
76
119
} ;
77
120
}
78
121
@@ -97,7 +140,8 @@ private AuthToken GetUserToken()
97
140
{
98
141
Token = token ,
99
142
URL = URL ,
100
- WindowsCredentials = false
143
+ WindowsCredentials = false ,
144
+ Authenticated = true
101
145
} ;
102
146
103
147
}
0 commit comments