Types/MSGraphAPI.Oauth.AccessToken.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<#
    .NOTES
    ===========================================================================
     Created with:     SAPIEN Technologies, Inc., PowerShell Studio 2017 v5.4.135
     Created on:     2/8/2017 2:05 PM
     Edited on: 2/16/2017
     Created by:     Mark Kraus
     Organization:     Mitel
     Filename:     MSGraphAPI.Oauth.AccessToken.ps1
    ===========================================================================
    .DESCRIPTION
        MSGraphAPI.Oauth.AccessToken Type Definition
#>


@{
    Name = 'MSGraphAPI.Oauth.AccessToken'
    DefaultDisplayPropertySet = @(
        'GUID'
        'RequestedDate'
        'LastRequestDate'
        'IsExpired'
        'Expires'
        'ExpiresUTC'
        'NotBefore'
        'NotBeforeUTC'
        'Scope'
        'Resource'
        'IsRefreshable'
        'Application'
    )
    Properties = @(
        @{
            MemberType = 'ScriptMethod'
            MemberName = 'ToString'
            Value = {
                "Guid: {0} IsExpired '{1}'" -f $This.GUID, $This.IsExpired
            }
        }
        @{
            MemberType = 'ScriptMethod'
            MemberName = 'GetAccessToken'
            Value = {
                try {
                    $This.AccessTokenCredential.GetNetworkCredential().password
                }
                catch {
                    $null
                }
            }
        }
        @{
            MemberType = 'ScriptMethod'
            MemberName = 'GetRefreshToken'
            Value = {
                try {
                    $This.RefreshTokenCredential.GetNetworkCredential().password
                }
                catch {
                    $null
                }
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'TokenType'
            Value = {
                $this.Response.token_type
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'Expires'
            Value = {
                $This.ExpiresUTC.ToLocalTime()
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'ExpiresUTC'
            Value = {
                if ($This.Response.expires_on) {
                    (get-date '1970/01/01 -0').ToUniversalTime().AddSeconds($This.Response.expires_on)
                }
                else {
                    [DateTime]::MinValue
                }
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'NotBeforeUTC'
            Value = {
                if ($This.Response.not_before) {
                    (get-date '1970/01/01 -0').ToUniversalTime().AddSeconds($This.Response.not_before)
                }
                else {
                    [DateTime]::MaxValue
                }
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'NotBefore'
            Value = {
                $This.NotBeforeUTC.ToLocalTime()
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'IsExpired'
            Value = {
                $(get-date).ToUniversalTime() -ge $this.ExpiresUTC
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'Scope'
            Value = {
                $This.Response.Scope -split ' '
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'Resource'
            Value = {
                $This.Response.Resource
            }
        }
        @{
            MemberType = 'ScriptMethod'
            MemberName = 'InvokeTokenRefresh'
            Value = {
                $This | Update-GraphOauthAccessToken
            }
        }
        @{
            MemberType = 'ScriptProperty'
            MemberName = 'IsRefreshable'
            Value = {
                if ($This.GetRefreshToken() -eq 'NOREFRESH') { Return $False }
                Return $True
            }
        }
    )
}