-
Notifications
You must be signed in to change notification settings - Fork 19
/
PublishClient.cls
72 lines (63 loc) · 2.76 KB
/
PublishClient.cls
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
Class %ZPM.PackageManager.Client.REST.PublishClient Extends (%ZPM.PackageManager.Client.REST.PackageManagerClient, %ZPM.PackageManager.Core.IPublishService)
{
Method PublishModule(pModule As %ZPM.PackageManager.Core.Module) As %Boolean
{
Quit ..Publish(pModule)
}
Method PublishApplication(pApplication As %ZPM.PackageManager.Core.Application) As %Boolean
{
Quit ..Publish(pApplication)
}
Method Publish(pModule As %ZPM.PackageManager.Core.VersionedBase) As %Boolean
{
If ((..Username="") || (..Password="")) && (..Token="") {
$$$ThrowStatus($$$ERROR($$$GeneralError, "Publishing module, authorization required."))
}
Set tRequest = ..GetHttpRequest()
Set tRequest.ContentType = "application/json"
Set publishTimeout = ##class(%ZPM.PackageManager.Client.Settings).GetValue("publish_timeout")
Set:publishTimeout'="" tRequest.Timeout = publishTimeout
$$$ThrowOnError(pModule.%JSONExportToStream(tRequest.EntityBody))
$$$ThrowOnError(tRequest.Post(tRequest.Location_"packages"))
If (tRequest.HttpResponse.StatusCode '= 200) {
If tRequest.HttpResponse.StatusCode = 401 {
$$$ThrowStatus($$$ERROR($$$GeneralError, "Publishing module, authorization required."))
} Else {
$$$ThrowStatus($$$ERROR($$$GeneralError, "Publishing module, something went wrong."))
}
}
Return 1
}
Method CheckUnpublishEnabled(packageName As %String, packageVersion As %String) As %Boolean
{
If ((..Username="") || (..Password="")) && (..Token="") {
$$$ThrowStatus($$$ERROR($$$GeneralError, "Unpublishing module, authorization required."))
}
Set tRequest = ..GetHttpRequest()
$$$ThrowOnError(tRequest.Send("OPTIONS",tRequest.Location_"packages/"_packageName_"/"_packageVersion))
If (tRequest.HttpResponse.StatusCode = 200) {
Set allow = $$$ucase(tRequest.HttpResponse.GetHeader("allow"))
If ( allow["DELETE" ) {
Return 1
}
}
Return 0
}
Method Unpublish(packageName As %String, packageVersion As %String) As %Status
{
If ((..Username="") || (..Password="")) && (..Token="") {
$$$ThrowStatus($$$ERROR($$$GeneralError, "Unpublishing module, authorization required."))
}
Set tRequest = ..GetHttpRequest()
$$$ThrowOnError(tRequest.Send("DELETE",tRequest.Location_"packages/"_packageName_"/"_packageVersion))
If (tRequest.HttpResponse.StatusCode '= 200) {
set errMsg = ""
try {
set errMsg = $piece({}.%FromJSON(tRequest.HttpResponse.Data).summary,":",2,*)
if (errMsg'="") {set errMsg = ";"_errMsg}
} catch {}
$$$ThrowStatus($$$ERROR($$$GeneralError, "Unpublishing module, something went wrong (HTTP response status code: "_tRequest.HttpResponse.StatusCode_errMsg_")."))
}
Return $$$OK
}
}