1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
4
+ function Get-GitHubReferrerTraffic
5
+ {
6
+ <#
7
+ . SYNOPSIS
8
+ Get the top 10 referrers over the last 14 days for a given GitHub repository.
9
+
10
+ . DESCRIPTION
11
+ Get the top 10 referrers over the last 14 days for a given GitHub repository.
12
+
13
+ The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
14
+
15
+ . PARAMETER OwnerName
16
+ Owner of the repository.
17
+ If not supplied here, the DefaultOwnerName configuration property value will be used.
18
+
19
+ . PARAMETER RepositoryName
20
+ Name of the repository.
21
+ If not supplied here, the DefaultRepositoryName configuration property value will be used.
22
+
23
+ . PARAMETER Uri
24
+ Uri for the repository.
25
+ The OwnerName and RepositoryName will be extracted from here instead of needing to provide
26
+ them individually.
27
+
28
+ . PARAMETER AccessToken
29
+ If provided, this will be used as the AccessToken for authentication with the
30
+ REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
31
+
32
+ . PARAMETER NoStatus
33
+ If this switch is specified, long-running commands will run on the main thread
34
+ with no commandline status update. When not specified, those commands run in
35
+ the background, enabling the command prompt to provide status information.
36
+ If not supplied here, the DefaultNoStatus configuration property value will be used.
37
+
38
+ . EXAMPLE
39
+ Get-GitHubReferrerTraffic -OwnerName Powershell -RepositoryName PowerShellForGitHub
40
+
41
+ Get the top 10 referrers over the last 14 days from the PowerShell\PowerShellForGitHub project.
42
+ #>
43
+ [CmdletBinding (
44
+ SupportsShouldProcess ,
45
+ DefaultParametersetName = ' Elements' )]
46
+ [Diagnostics.CodeAnalysis.SuppressMessageAttribute (" PSShouldProcess" , " " , Justification= " Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently." )]
47
+ param (
48
+ [Parameter (ParameterSetName = ' Elements' )]
49
+ [string ] $OwnerName ,
50
+
51
+ [Parameter (ParameterSetName = ' Elements' )]
52
+ [string ] $RepositoryName ,
53
+
54
+ [Parameter (
55
+ Mandatory ,
56
+ ParameterSetName = ' Uri' )]
57
+ [string ] $Uri ,
58
+
59
+ [string ] $AccessToken ,
60
+
61
+ [switch ] $NoStatus
62
+ )
63
+
64
+ Write-InvocationLog - Invocation $MyInvocation
65
+
66
+ $elements = Resolve-RepositoryElements - BoundParameters $PSBoundParameters
67
+ $OwnerName = $elements.ownerName
68
+ $RepositoryName = $elements.repositoryName
69
+
70
+ $telemetryProperties = @ {
71
+ ' OwnerName' = (Get-PiiSafeString - PlainText $OwnerName )
72
+ ' RepositoryName' = (Get-PiiSafeString - PlainText $RepositoryName )
73
+ }
74
+
75
+ $params = @ {
76
+ ' UriFragment' = " repos/$OwnerName /$RepositoryName /traffic/popular/referrers"
77
+ ' Method' = ' Get'
78
+ ' Description' = " Getting referrers for $RepositoryName "
79
+ ' AccessToken' = $AccessToken
80
+ ' TelemetryEventName' = $MyInvocation.MyCommand.Name
81
+ ' TelemetryProperties' = $telemetryProperties
82
+ ' NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue - BoundParameters $PSBoundParameters - Name NoStatus - ConfigValueName DefaultNoStatus)
83
+ }
84
+
85
+ return Invoke-GHRestMethod @params
86
+ }
87
+
88
+ function Get-GitHubPathTraffic
89
+ {
90
+ <#
91
+ . SYNOPSIS
92
+ Get the top 10 popular contents over the last 14 days for a given Github repository.
93
+
94
+ . DESCRIPTION
95
+ Get the top 10 popular contents over the last 14 days for a given GitHub repository.
96
+
97
+ The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
98
+
99
+ . PARAMETER OwnerName
100
+ Owner of the repository.
101
+ If not supplied here, the DefaultOwnerName configuration property value will be used.
102
+
103
+ . PARAMETER RepositoryName
104
+ Name of the repository.
105
+ If not supplied here, the DefaultRepositoryName configuration property value will be used.
106
+
107
+ . PARAMETER Uri
108
+ Uri for the repository.
109
+ The OwnerName and RepositoryName will be extracted from here instead of needing to provide
110
+ them individually.
111
+
112
+ . PARAMETER AccessToken
113
+ If provided, this will be used as the AccessToken for authentication with the
114
+ REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
115
+
116
+ . PARAMETER NoStatus
117
+ If this switch is specified, long-running commands will run on the main thread
118
+ with no commandline status update. When not specified, those commands run in
119
+ the background, enabling the command prompt to provide status information.
120
+ If not supplied here, the DefaultNoStatus configuration property value will be used.
121
+
122
+ . EXAMPLE
123
+ Get-GitHubPathTraffic -OwnerName Powershell -RepositoryName PowerShellForGitHub
124
+
125
+ Get the top 10 popular contents over the last 14 days from the PowerShell\PowerShellForGitHub project.
126
+ #>
127
+ [CmdletBinding (
128
+ SupportsShouldProcess ,
129
+ DefaultParametersetName = ' Elements' )]
130
+ [Diagnostics.CodeAnalysis.SuppressMessageAttribute (" PSShouldProcess" , " " , Justification= " Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently." )]
131
+ param (
132
+ [Parameter (ParameterSetName = ' Elements' )]
133
+ [string ] $OwnerName ,
134
+
135
+ [Parameter (ParameterSetName = ' Elements' )]
136
+ [string ] $RepositoryName ,
137
+
138
+ [Parameter (
139
+ Mandatory ,
140
+ ParameterSetName = ' Uri' )]
141
+ [string ] $Uri ,
142
+
143
+ [string ] $AccessToken ,
144
+
145
+ [switch ] $NoStatus
146
+ )
147
+
148
+ Write-InvocationLog - Invocation $MyInvocation
149
+
150
+ $elements = Resolve-RepositoryElements - BoundParameters $PSBoundParameters
151
+ $OwnerName = $elements.ownerName
152
+ $RepositoryName = $elements.repositoryName
153
+
154
+ $telemetryProperties = @ {
155
+ ' OwnerName' = (Get-PiiSafeString - PlainText $OwnerName )
156
+ ' RepositoryName' = (Get-PiiSafeString - PlainText $RepositoryName )
157
+ }
158
+
159
+ $params = @ {
160
+ ' UriFragment' = " repos/$OwnerName /$RepositoryName /traffic/popular/paths"
161
+ ' Method' = ' Get'
162
+ ' Description' = " Getting popular contents for $RepositoryName "
163
+ ' AccessToken' = $AccessToken
164
+ ' TelemetryEventName' = $MyInvocation.MyCommand.Name
165
+ ' TelemetryProperties' = $telemetryProperties
166
+ ' NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue - BoundParameters $PSBoundParameters - Name NoStatus - ConfigValueName DefaultNoStatus)
167
+ }
168
+
169
+ return Invoke-GHRestMethod @params
170
+ }
171
+
172
+ function Get-GitHubViewTraffic
173
+ {
174
+ <#
175
+ . SYNOPSIS
176
+ Get the total number of views and breakdown per day or week for the last 14 days for the given Github Repository.
177
+
178
+ . DESCRIPTION
179
+ Get the total number of views and breakdown per day or week for the last 14 days.
180
+ Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
181
+
182
+ The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
183
+
184
+ . PARAMETER OwnerName
185
+ Owner of the repository.
186
+ If not supplied here, the DefaultOwnerName configuration property value will be used.
187
+
188
+ . PARAMETER RepositoryName
189
+ Name of the repository.
190
+ If not supplied here, the DefaultRepositoryName configuration property value will be used.
191
+
192
+ . PARAMETER Uri
193
+ Uri for the repository.
194
+ The OwnerName and RepositoryName will be extracted from here instead of needing to provide
195
+ them individually.
196
+
197
+ . PARAMETER Per
198
+ The interval at which return to return the view counts.
199
+
200
+ . PARAMETER AccessToken
201
+ If provided, this will be used as the AccessToken for authentication with the
202
+ REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
203
+
204
+ . PARAMETER NoStatus
205
+ If this switch is specified, long-running commands will run on the main thread
206
+ with no commandline status update. When not specified, those commands run in
207
+ the background, enabling the command prompt to provide status information.
208
+ If not supplied here, the DefaultNoStatus configuration property value will be used.
209
+
210
+ . EXAMPLE
211
+ Get-GitHubViewTraffic -OwnerName Powershell -RepositoryName PowerShellForGitHub
212
+
213
+ Get the total number of views and breakdown per day or week for the last 14 days from the PowerShell\PowerShellForGitHub project.
214
+ #>
215
+ [CmdletBinding (
216
+ SupportsShouldProcess ,
217
+ DefaultParametersetName = ' Elements' )]
218
+ [Diagnostics.CodeAnalysis.SuppressMessageAttribute (" PSShouldProcess" , " " , Justification= " Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently." )]
219
+ param (
220
+ [Parameter (ParameterSetName = ' Elements' )]
221
+ [string ] $OwnerName ,
222
+
223
+ [Parameter (ParameterSetName = ' Elements' )]
224
+ [string ] $RepositoryName ,
225
+
226
+ [Parameter (
227
+ Mandatory ,
228
+ ParameterSetName = ' Uri' )]
229
+ [string ] $Uri ,
230
+
231
+ [ValidateSet (' day' , ' week' )]
232
+ [string ] $Per = ' day' ,
233
+
234
+ [string ] $AccessToken ,
235
+
236
+ [switch ] $NoStatus
237
+ )
238
+
239
+ Write-InvocationLog - Invocation $MyInvocation
240
+
241
+ $elements = Resolve-RepositoryElements - BoundParameters $PSBoundParameters
242
+ $OwnerName = $elements.ownerName
243
+ $RepositoryName = $elements.repositoryName
244
+
245
+ $telemetryProperties = @ {
246
+ ' OwnerName' = (Get-PiiSafeString - PlainText $OwnerName )
247
+ ' RepositoryName' = (Get-PiiSafeString - PlainText $RepositoryName )
248
+ ' Per' = $Per
249
+ }
250
+
251
+ $getParams = @ (
252
+ " per=$Per "
253
+ )
254
+
255
+ $params = @ {
256
+ ' UriFragment' = " repos/$OwnerName /$RepositoryName /traffic/views`?" + ($getParams -join ' &' )
257
+ ' Method' = ' Get'
258
+ ' Description' = " Getting views for $RepositoryName "
259
+ ' AccessToken' = $AccessToken
260
+ ' TelemetryEventName' = $MyInvocation.MyCommand.Name
261
+ ' TelemetryProperties' = $telemetryProperties
262
+ ' NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue - BoundParameters $PSBoundParameters - Name NoStatus - ConfigValueName DefaultNoStatus)
263
+ }
264
+
265
+ return Invoke-GHRestMethod @params
266
+ }
267
+
268
+ function Get-GitHubCloneTraffic
269
+ {
270
+ <#
271
+ . SYNOPSIS
272
+ Get the total number of clones and breakdown per day or week for the last 14 days for the given Github Repository.
273
+
274
+ . DESCRIPTION
275
+ Get the total number of clones and breakdown per day or week for the last 14 days.
276
+ Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
277
+
278
+ The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
279
+
280
+ . PARAMETER OwnerName
281
+ Owner of the repository.
282
+ If not supplied here, the DefaultOwnerName configuration property value will be used.
283
+
284
+ . PARAMETER RepositoryName
285
+ Name of the repository.
286
+ If not supplied here, the DefaultRepositoryName configuration property value will be used.
287
+
288
+ . PARAMETER Uri
289
+ Uri for the repository.
290
+ The OwnerName and RepositoryName will be extracted from here instead of needing to provide
291
+ them individually.
292
+
293
+ . PARAMETER Per
294
+ The interval at which return to return the view counts.
295
+
296
+ . PARAMETER AccessToken
297
+ If provided, this will be used as the AccessToken for authentication with the
298
+ REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
299
+
300
+ . PARAMETER NoStatus
301
+ If this switch is specified, long-running commands will run on the main thread
302
+ with no commandline status update. When not specified, those commands run in
303
+ the background, enabling the command prompt to provide status information.
304
+ If not supplied here, the DefaultNoStatus configuration property value will be used.
305
+
306
+ . EXAMPLE
307
+ Get-GitHubCloneTraffic -OwnerName Powershell -RepositoryName PowerShellForGitHub
308
+
309
+ Get the total number of clones and breakdown per day or week for the last 14 days from the PowerShell\PowerShellForGitHub project.
310
+ #>
311
+ [CmdletBinding (
312
+ SupportsShouldProcess ,
313
+ DefaultParametersetName = ' Elements' )]
314
+ [Diagnostics.CodeAnalysis.SuppressMessageAttribute (" PSShouldProcess" , " " , Justification= " Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently." )]
315
+ param (
316
+ [Parameter (ParameterSetName = ' Elements' )]
317
+ [string ] $OwnerName ,
318
+
319
+ [Parameter (ParameterSetName = ' Elements' )]
320
+ [string ] $RepositoryName ,
321
+
322
+ [Parameter (
323
+ Mandatory ,
324
+ ParameterSetName = ' Uri' )]
325
+ [string ] $Uri ,
326
+
327
+ [ValidateSet (' day' , ' week' )]
328
+ [string ] $Per = ' day' ,
329
+
330
+ [string ] $AccessToken ,
331
+
332
+ [switch ] $NoStatus
333
+ )
334
+
335
+ Write-InvocationLog - Invocation $MyInvocation
336
+
337
+ $elements = Resolve-RepositoryElements - BoundParameters $PSBoundParameters
338
+ $OwnerName = $elements.ownerName
339
+ $RepositoryName = $elements.repositoryName
340
+
341
+ $telemetryProperties = @ {
342
+ ' OwnerName' = (Get-PiiSafeString - PlainText $OwnerName )
343
+ ' RepositoryName' = (Get-PiiSafeString - PlainText $RepositoryName )
344
+ ' Per' = $Per
345
+ }
346
+
347
+ $getParams = @ (
348
+ " per=$Per "
349
+ )
350
+
351
+ $params = @ {
352
+ ' UriFragment' = " repos/$OwnerName /$RepositoryName /traffic/clones`?" + ($getParams -join ' &' )
353
+ ' Method' = ' Get'
354
+ ' Description' = " Getting number of clones for $RepositoryName "
355
+ ' AccessToken' = $AccessToken
356
+ ' TelemetryEventName' = $MyInvocation.MyCommand.Name
357
+ ' TelemetryProperties' = $telemetryProperties
358
+ ' NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue - BoundParameters $PSBoundParameters - Name NoStatus - ConfigValueName DefaultNoStatus)
359
+ }
360
+
361
+ return Invoke-GHRestMethod @params
362
+ }
0 commit comments