@@ -34,9 +34,10 @@ XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
34
34
<Route Url =" /packages/:package/:version/:platformVersion/?" Method =" GET" Call =" Package" Cors =" true" />
35
35
<!-- Publish Package -->
36
36
<Route Url =" /packages" Method =" POST" Call =" PublishPackage" Cors =" true" />
37
+ <!-- Unpublish Package Version -->
38
+ <Route Url =" /packages/:package/:version" Method =" Delete" Call =" UnPublishPackageVersion" Cors =" true" />
37
39
<!-- Unpublish Package -->
38
- <Route Url =" /packages/:package/:version" Method =" Delete" Call =" UnPublishPackage" Cors =" true" />
39
-
40
+ <Route Url =" /packages/:package" Method =" Delete" Call =" UnPublishPackage" Cors =" true" />
40
41
41
42
<!-- Package Archive -->
42
43
<Route Url =" /download/:package/:platformVersion/:file" Method =" GET" Call =" GetArchive" Cors =" true" />
@@ -115,7 +116,7 @@ ClassMethod Package(pkg As %String = "", version As %String = "", platformVersio
115
116
Return ..ReportHttpStatusCode (..#HTTP404NOTFOUND)
116
117
}
117
118
Set package = ##class (ZPM.Package ).NameVersionOpen (pkg , version , .tSC )
118
- If $$$ISERR(tSC ) || ('$IsObject (package )) {
119
+ If $$$ISERR(tSC ) || ('$IsObject (package ))||( package . deleted = 1 ) {
119
120
Return ..ReportHttpStatusCode (..#HTTP404NOTFOUND)
120
121
}
121
122
If package .deployed ,platformVersion '=" " {
@@ -141,7 +142,7 @@ ClassMethod PackageManifest(pkg As %String = "", version As %String = "", platfo
141
142
Set package = ##class (ZPM.Package ).NameVersionOpen (pkg , version )
142
143
}
143
144
144
- If ('$IsObject (package ))||('package .manifest .Size ) {
145
+ If ('$IsObject (package ))||('package .manifest .Size )||( package . deleted = 1 ) {
145
146
Return ..ReportHttpStatusCode (..#HTTP404NOTFOUND)
146
147
}
147
148
@@ -158,7 +159,7 @@ ClassMethod PackageInstaller(pkg As %String = "", version As %String = "") As %S
158
159
}
159
160
160
161
Set package = ##class (ZPM.Package ).NameVersionOpen (pkg , version )
161
- If ('$IsObject (package )) {
162
+ If ('$IsObject (package )||( package . deleted = 1 ) ) {
162
163
Return ..ReportHttpStatusCode (..#HTTP404NOTFOUND)
163
164
}
164
165
If package .installer .Size {
@@ -170,8 +171,26 @@ ClassMethod PackageInstaller(pkg As %String = "", version As %String = "") As %S
170
171
Return ..ReportHttpStatusCode (..#HTTP404NOTFOUND)
171
172
}
172
173
173
- /// Unpublish (delete) directly published package
174
- ClassMethod UnPublishPackage (pkg As %String = " " , version As %String = " " ) As %Status
174
+ ClassMethod UnPublishPackage (pkg As %String = " " ) As %Status
175
+ {
176
+ Set tSC = $$$OK
177
+ Set tSC = ##class (ZPM.Owner ).IsAuth ()
178
+ If ($$$ISERR(tSC )) {
179
+ Return ..ReportHttpStatusCode (..#HTTP401UNAUTHORIZED, tSC )
180
+ }
181
+ Set pkg = $$$lcase(pkg )
182
+ If ('##class (ZPM.Package ).NameExists (pkg )) {
183
+ Return ..ReportHttpStatusCode (..#HTTP404NOTFOUND)
184
+ }
185
+ Set tSC = ##class (ZPM.Owner ).IsOwner (pkg )
186
+ If ($$$ISERR(tSC )) {
187
+ Return ..ReportHttpStatusCode (..#HTTP403FORBIDDEN, tSC )
188
+ }
189
+ Return ##class (ZPM.Package ).DeletePackage (pkg )
190
+ }
191
+
192
+ /// Unpublish (delete) directly published package version
193
+ ClassMethod UnPublishPackageVersion (pkg As %String = " " , version As %String = " " ) As %Status
175
194
{
176
195
Set tSC = $$$OK
177
196
Set tSC = ##class (ZPM.Owner ).IsAuth ()
@@ -191,7 +210,7 @@ ClassMethod UnPublishPackage(pkg As %String = "", version As %String = "") As %S
191
210
// only directly published package could be deleted
192
211
Return ..ReportHttpStatusCode (..#HTTP400BADREQUEST)
193
212
}
194
- Return ##class (ZPM.Package ).DeleteExistingPackages (pkg , version , 1 )
213
+ Return ##class (ZPM.Package ).DeletePackageVersion (pkg , version )
195
214
}
196
215
197
216
ClassMethod PublishPackage () As %Status
@@ -211,7 +230,7 @@ ClassMethod PublishPackage() As %Status
211
230
If ($$$ISERR(tSC )) {
212
231
Return ..ReportHttpStatusCode (..#HTTP403FORBIDDEN, tSC )
213
232
}
214
- If (##class (ZPM.Package ).IsDeleted (name , version )) {
233
+ If (##class (ZPM.Package ).MarkAsDeleted (name , version )) {
215
234
Return ..ReportHttpStatusCode (..#HTTP500INTERNALSERVERERROR, $$$ERROR(5001 ," This version was deleted, change version number" ))
216
235
}
217
236
@@ -282,7 +301,7 @@ ClassMethod GetArchive(name, platformVersion, fileName) As %Status
282
301
Set package = ##class (ZPM.Package ).NameVersionOpen (name , version , , .tSC )
283
302
}
284
303
285
- If '$IsObject (package )||('package .size ) {
304
+ If '$IsObject (package )||('package .size )||( package . deleted = 1 ) {
286
305
Return ..ReportHttpStatusCode (..#HTTP404NOTFOUND)
287
306
}
288
307
@@ -310,7 +329,7 @@ ClassMethod AllPackages() As %Status
310
329
311
330
Set manifest = %request .Get (" manifest" ," " )
312
331
Set allVersions = %request .Get (" allVersions" ," " )
313
- Set owner = ##class (ZPM.Owner ).getId ()
332
+ Set owner = ##class (ZPM.Owner ).GetId ()
314
333
Set tList = ##class (ZPM.Package ).GetLatest (searchTerms , manifest , allVersions , owner , .tSC )
315
334
316
335
If ($$$ISERR(tSC )) {
0 commit comments