Skip to content

Commit

Permalink
Add support for compatibility date
Browse files Browse the repository at this point in the history
  • Loading branch information
sbfaulkner committed Jan 12, 2023
1 parent 06e2a47 commit 468a02d
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
13 changes: 11 additions & 2 deletions workers.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,14 @@ type CreateWorkerParams struct {
// values are the binding content
Bindings map[string]WorkerBinding

// CompatibilityFlags are the names of features from upcoming features of the Workers runtime.
// CompatibilityDate is a date in the form yyyy-mm-dd,
// which will be used to determine which version of the Workers runtime is used.
// https://developers.cloudflare.com/workers/platform/compatibility-dates/
CompatibilityDate string

// CompatibilityFlags are the names of features of the Workers runtime to be enabled or disabled,
// usually used together with CompatibilityDate.
// https://developers.cloudflare.com/workers/platform/compatibility-dates/#compatibility-flags
CompatibilityFlags []string
}

Expand Down Expand Up @@ -227,7 +234,7 @@ func (api *API) UploadWorker(ctx context.Context, rc *ResourceContainer, params
err error
)

if params.Module || params.Logpush != nil || len(params.Bindings) > 0 || len(params.CompatibilityFlags) > 0 {
if params.Module || params.Logpush != nil || len(params.Bindings) > 0 || params.CompatibilityDate != "" || len(params.CompatibilityFlags) > 0 {
contentType, body, err = formatMultipartBody(params)
if err != nil {
return WorkerScriptResponse{}, err
Expand Down Expand Up @@ -265,10 +272,12 @@ func formatMultipartBody(params CreateWorkerParams) (string, []byte, error) {
MainModule string `json:"main_module,omitempty"`
Bindings []workerBindingMeta `json:"bindings"`
Logpush *bool `json:"logpush,omitempty"`
CompatibilityDate string `json:"compatibility_date,omitempty"`
CompatibilityFlags []string `json:"compatibility_flags,omitempty"`
}{
Bindings: make([]workerBindingMeta, 0, len(params.Bindings)),
Logpush: params.Logpush,
CompatibilityDate: params.CompatibilityDate,
CompatibilityFlags: params.CompatibilityFlags,
}

Expand Down
14 changes: 10 additions & 4 deletions workers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ type multipartUpload struct {
Script string
BindingMeta map[string]workerBindingMeta
Logpush *bool
CompatibilityDate string
CompatibilityFlags []string
}

Expand All @@ -293,6 +294,7 @@ func parseMultipartUpload(r *http.Request) (multipartUpload, error) {
MainModule string `json:"main_module,omitempty"`
Bindings []workerBindingMeta `json:"bindings"`
Logpush *bool `json:"logpush,omitempty"`
CompatibilityDate string `json:"compatibility_date,omitempty"`
CompatibilityFlags []string `json:"compatibility_flags,omitempty"`
}
err = json.Unmarshal(mdBytes, &metadata)
Expand Down Expand Up @@ -323,6 +325,7 @@ func parseMultipartUpload(r *http.Request) (multipartUpload, error) {
Script: string(script),
BindingMeta: bindingMeta,
Logpush: metadata.Logpush,
CompatibilityDate: metadata.CompatibilityDate,
CompatibilityFlags: metadata.CompatibilityFlags,
}, nil
}
Expand Down Expand Up @@ -867,16 +870,18 @@ func TestUploadWorker_WithCompatibilityFlags(t *testing.T) {
setup()
defer teardown()

compatibilityDate := time.Now().Format("2006-01-02")
compatibilityFlags := []string{"formdata_parser_supports_files"}

handler := func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPut, r.Method, "Expected method 'PUT', got %s", r.Method)

mpUpload, err := parseMultipartUpload(r)
assert.NoError(t, err)

expectedCompatibilityFlags := []string{"formdata_parser_supports_files"}

assert.Equal(t, workerScript, mpUpload.Script)
assert.Equal(t, expectedCompatibilityFlags, mpUpload.CompatibilityFlags)
assert.Equal(t, compatibilityDate, mpUpload.CompatibilityDate)
assert.Equal(t, compatibilityFlags, mpUpload.CompatibilityFlags)

w.Header().Set("content-type", "application/json")
fmt.Fprintf(w, uploadWorkerResponseData)
Expand All @@ -886,7 +891,8 @@ func TestUploadWorker_WithCompatibilityFlags(t *testing.T) {
_, err := client.UploadWorker(context.Background(), AccountIdentifier(testAccountID), CreateWorkerParams{
ScriptName: "bar",
Script: workerScript,
CompatibilityFlags: []string{"formdata_parser_supports_files"},
CompatibilityDate: compatibilityDate,
CompatibilityFlags: compatibilityFlags,
})
assert.NoError(t, err)
}

0 comments on commit 468a02d

Please sign in to comment.