Complete artifact binary transfer streaming
This commit is contained in:
@@ -14,10 +14,11 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
runEndpointHeader = "X-Run-Endpoint"
|
||||
runTimestampHeader = "X-Run-Timestamp"
|
||||
runNonceHeader = "X-Run-Nonce"
|
||||
runSignatureHeader = "X-Run-Signature"
|
||||
runEndpointHeader = "X-Run-Endpoint"
|
||||
runSessionTokenHeader = "X-Run-Session-Token"
|
||||
runTimestampHeader = "X-Run-Timestamp"
|
||||
runNonceHeader = "X-Run-Nonce"
|
||||
runSignatureHeader = "X-Run-Signature"
|
||||
)
|
||||
|
||||
type runRequestEnvelope struct {
|
||||
@@ -37,8 +38,8 @@ func (h *coreHandlers) requireRunSignature(next http.HandlerFunc) http.HandlerFu
|
||||
return
|
||||
}
|
||||
r.Body = io.NopCloser(bytes.NewReader(body))
|
||||
var envelope runRequestEnvelope
|
||||
if err := json.Unmarshal(body, &envelope); err != nil {
|
||||
envelope, ok := signedRunRequestEnvelope(r, body)
|
||||
if !ok {
|
||||
next(w, r)
|
||||
return
|
||||
}
|
||||
@@ -65,3 +66,19 @@ func (h *coreHandlers) requireRunSignature(next http.HandlerFunc) http.HandlerFu
|
||||
next(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
func signedRunRequestEnvelope(r *http.Request, body []byte) (runRequestEnvelope, bool) {
|
||||
if isOctetStream(r.Header.Get("Content-Type")) {
|
||||
return runRequestEnvelope{RunEndpointID: strings.TrimSpace(r.Header.Get(runEndpointHeader)), SessionToken: strings.TrimSpace(r.Header.Get(runSessionTokenHeader))}, true
|
||||
}
|
||||
var envelope runRequestEnvelope
|
||||
if err := json.Unmarshal(body, &envelope); err != nil {
|
||||
return runRequestEnvelope{}, false
|
||||
}
|
||||
return envelope, true
|
||||
}
|
||||
|
||||
func isOctetStream(contentType string) bool {
|
||||
mediaType := strings.ToLower(strings.TrimSpace(strings.Split(contentType, ";")[0]))
|
||||
return mediaType == "application/octet-stream"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user