mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-02-06 12:21:21 -05:00
feat(groupware): add WebsocketEndpoint to the JMAP Session
This commit is contained in:
@@ -48,15 +48,19 @@ type Session struct {
|
||||
// An identifier of the DownloadUrlTemplate to use in metrics and tracing
|
||||
DownloadEndpoint string
|
||||
|
||||
WebsocketEndpoint *url.URL
|
||||
SupportsWebsocketPush bool
|
||||
|
||||
SessionResponse
|
||||
}
|
||||
|
||||
var (
|
||||
invalidSessionResponseErrorMissingUsername = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide a username")}
|
||||
invalidSessionResponseErrorMissingApiUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide an API URL")}
|
||||
invalidSessionResponseErrorInvalidApiUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response provides an invalid API URL")}
|
||||
invalidSessionResponseErrorMissingUploadUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide an upload URL")}
|
||||
invalidSessionResponseErrorMissingDownloadUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide a download URL")}
|
||||
invalidSessionResponseErrorMissingUsername = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide a username")}
|
||||
invalidSessionResponseErrorMissingApiUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide an API URL")}
|
||||
invalidSessionResponseErrorInvalidApiUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response provides an invalid API URL")}
|
||||
invalidSessionResponseErrorMissingUploadUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide an upload URL")}
|
||||
invalidSessionResponseErrorMissingDownloadUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response does not provide a download URL")}
|
||||
invalidSessionResponseErrorInvalidWebsocketUrl = SimpleError{code: JmapErrorInvalidSessionResponse, err: errors.New("JMAP session response provides an invalid Websocket URL")}
|
||||
)
|
||||
|
||||
// Create a new Session from a SessionResponse.
|
||||
@@ -87,15 +91,28 @@ func newSession(sessionResponse SessionResponse) (Session, Error) {
|
||||
}
|
||||
downloadEndpoint := toEndpoint(downloadUrl)
|
||||
|
||||
var websocketEndpoint *url.URL = nil
|
||||
supportsWebsocketPush := false
|
||||
websocketUrl := sessionResponse.Capabilities.Websocket.Url
|
||||
if websocketUrl != "" {
|
||||
websocketEndpoint, err = url.Parse(websocketUrl)
|
||||
if err != nil {
|
||||
return Session{}, invalidSessionResponseErrorInvalidWebsocketUrl
|
||||
}
|
||||
supportsWebsocketPush = sessionResponse.Capabilities.Websocket.SupportsPush
|
||||
}
|
||||
|
||||
return Session{
|
||||
Username: username,
|
||||
JmapUrl: *apiUrl,
|
||||
JmapEndpoint: apiEndpoint,
|
||||
UploadUrlTemplate: uploadUrl,
|
||||
UploadEndpoint: uploadEndpoint,
|
||||
DownloadUrlTemplate: downloadUrl,
|
||||
DownloadEndpoint: downloadEndpoint,
|
||||
SessionResponse: sessionResponse,
|
||||
Username: username,
|
||||
JmapUrl: *apiUrl,
|
||||
JmapEndpoint: apiEndpoint,
|
||||
UploadUrlTemplate: uploadUrl,
|
||||
UploadEndpoint: uploadEndpoint,
|
||||
DownloadUrlTemplate: downloadUrl,
|
||||
DownloadEndpoint: downloadEndpoint,
|
||||
WebsocketEndpoint: websocketEndpoint,
|
||||
SupportsWebsocketPush: supportsWebsocketPush,
|
||||
SessionResponse: sessionResponse,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user