microsoft/typespec

Public

mirrored from https://github.com/microsoft/typespecAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/add-visit-implementations

Branches

Tags

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

Clone

HTTPS

Download ZIP

eng/emitters/scripts/ApiView-Helpers.ps1

118lines · modecode

1function MapLanguageToRequestParam($language)
2{
3 $lang = $language
4 # Update language name to match those in API cosmos DB. Cosmos SQL is case sensitive and handling this within the query makes it slow.
5 if($lang -eq 'javascript'){
6 $lang = "JavaScript"
7 }
8 elseif ($lang -eq "dotnet"){
9 $lang = "C%23"
10 }
11 elseif ($lang -eq "java"){
12 $lang = "Java"
13 }
14 elseif ($lang -eq "python"){
15 $lang = "Python"
16 }
17 else{
18 $lang = $null
19 }
20 return $lang
21}
22
23function Check-ApiReviewStatus($packageName, $packageVersion, $language, $url, $apiKey, $apiApprovalStatus = $null, $packageNameStatus = $null)
24{
25 # Get API view URL and API Key to check status
26 Write-Host "Checking API review status for package: ${packageName}"
27 $lang = MapLanguageToRequestParam -language $language
28 if ($lang -eq $null) {
29 return
30 }
31 $headers = @{ "ApiKey" = $apiKey }
32
33 if (!$apiApprovalStatus) {
34 $apiApprovalStatus = [PSCustomObject]@{
35 IsApproved = $false
36 Details = ""
37 }
38 }
39
40 if (!$packageNameStatus) {
41 $packageNameStatus = [PSCustomObject]@{
42 IsApproved = $false
43 Details = ""
44 }
45 }
46
47 try
48 {
49 $requestUrl = "${url}?language=${lang}&packageName=${packageName}&packageVersion=${packageVersion}"
50 Write-Host "Request to APIView: [${requestUrl}]"
51 $response = Invoke-WebRequest $requestUrl -Method 'GET' -Headers $headers
52 Write-Host "Response: $($response.StatusCode)"
53 Process-ReviewStatusCode -statusCode $response.StatusCode -packageName $packageName -apiApprovalStatus $apiApprovalStatus -packageNameStatus $packageNameStatus
54 if ($apiApprovalStatus.IsApproved) {
55 Write-Host $($apiApprovalStatus.Details)
56 }
57 else {
58 Write-warning $($apiApprovalStatus.Details)
59 }
60 if ($packageNameStatus.IsApproved) {
61 Write-Host $($packageNameStatus.Details)
62 }
63 else {
64 Write-warning $($packageNameStatus.Details)
65 }
66 }
67 catch
68 {
69 Write-Warning "Failed to check API review status for package $($PackageName). You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on API Approval."
70 }
71}
72
73function Process-ReviewStatusCode($statusCode, $packageName, $apiApprovalStatus, $packageNameStatus)
74{
75 $apiApproved = $false
76 $apiApprovalDetails = "API Review is not approved for package $($packageName). Release pipeline will fail if API review is not approved for a GA version release. You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on API Approval."
77
78 $packageNameApproved = $false
79 $packageNameApprovalDetails = ""
80
81 # 200 API approved and Package name approved
82 # 201 API review is not approved, Package name is approved
83 # 202 API review is not approved, Package name is not approved
84
85 switch ($statusCode)
86 {
87 200
88 {
89 $apiApprovalDetails = "API Review is approved for package $($packageName)"
90 $apiApproved = $true
91
92 $packageNameApproved = $true
93 $packageNameApprovalDetails = "Package name is approved for package $($packageName)"
94 }
95 201
96 {
97 $packageNameApproved = $true
98 $packageNameApprovalDetails = "Package name is approved for package $($packageName)"
99 }
100 202
101 {
102 $packageNameApprovalDetails = "Package name $($packageName) is not yet approved by an SDK API approver. Package name must be approved to release a beta version if $($packageName) was never released as a stable version."
103 $packageNameApprovalDetails += " You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on package name Approval."
104 }
105 default
106 {
107 $apiApprovalDetails = "Invalid status code from APIView. status code $($statusCode)"
108 $packageNameApprovalDetails = "Invalid status code from APIView. status code $($statusCode)"
109 Write-Error "Failed to process API Review status for for package $($PackageName). Please reach out to Azure SDK engineering systems on teams channel."
110 }
111 }
112
113 $apiApprovalStatus.IsApproved = $apiApproved
114 $apiApprovalStatus.Details = $apiApprovalDetails
115
116 $packageNameStatus.IsApproved = $packageNameApproved
117 $packageNameStatus.Details = $packageNameApprovalDetails
118}
119