Skip to content

Commit 8e0504e

Browse files
committed
http options
1 parent 081007d commit 8e0504e

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/cls/ZPM/Registry.cls

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
5252
</Routes>
5353
}
5454

55+
ClassMethod OnPreDispatch(pUrl As %String, pMethod As %String, ByRef pContinue As %Boolean) As %Status
56+
{
57+
If ($$$lcase(pMethod)="options"),(1=$MATCH(pUrl,"^/packages/[^/]+/[^/]+/?$")) {
58+
Set pContinue = 0
59+
Return ..OptionsPackageVersion($PIECE(pUrl,"/",3),$PIECE(pUrl,"/",4))
60+
}
61+
Return ##super(pUrl, pMethod, .pContinue)
62+
}
63+
5564
/// Package Manager general information
5665
ClassMethod GetInfo() As %Status
5766
{
@@ -169,6 +178,21 @@ ClassMethod PackageInstaller(pkg As %String = "", version As %String = "") As %S
169178
Return ..ReportHttpStatusCode(..#HTTP404NOTFOUND)
170179
}
171180

181+
/// get available HTTP methods for /packages/:package/:version request
182+
ClassMethod OptionsPackageVersion(pkg As %String = "", version As %String = "") As %Status
183+
{
184+
Set options = "OPTIONS,GET"
185+
Set settingsFile = ##class(ZPM.Settings).%New()
186+
Set tSCAuth = ##class(ZPM.Owner).IsAuth()
187+
Set pkg = $$$lcase(pkg)
188+
Set tSCOwner = ##class(ZPM.Owner).IsOwner(pkg)
189+
If $$$ISOK(tSCAuth),$$$ISOK(tSCOwner),settingsFile.GetDeleteEnable() {
190+
Set options = options_",DELETE"
191+
}
192+
Do %response.SetHeader("ALLOW",options)
193+
Return $$$OK
194+
}
195+
172196
/// Unpublish (delete) directly published package version
173197
ClassMethod UnPublishPackageVersion(pkg As %String = "", version As %String = "") As %Status
174198
{

src/cls/ZPM/Settings.cls

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,12 @@ Method GetDeleteEnable() As %Boolean
130130
Set delete = obj."delete-enabled"
131131
}
132132
If ($LISTFIND(trueList,delete)) {
133+
Set ^zpmregistry(ns,"delete-enabled") = 1
133134
Return 1
135+
} Else {
136+
Set ^zpmregistry(ns,"delete-enabled") = 0
134137
}
138+
135139
} Catch ex {
136140
Do ex.Log()
137141
Set sc = ex.AsStatus()

0 commit comments

Comments
 (0)