diff --git a/src/cmd/serviceDeploy.go b/src/cmd/serviceDeploy.go index fc55f66..599c56c 100644 --- a/src/cmd/serviceDeploy.go +++ b/src/cmd/serviceDeploy.go @@ -151,7 +151,7 @@ func serviceDeployCmd() *cmdBuilder.Cmd { writer.CloseWithError(err) }() - if err := packageStream(ctx, appVersion.UploadUrl, finalReader); err != nil { + if err := packageStream(ctx, cmdData.RestApiClient, appVersion.Id, finalReader); err != nil { // if an error occurred while packing the app, return that error return err } diff --git a/src/cmd/servicePush.go b/src/cmd/servicePush.go index 7ccf844..3b4f36d 100644 --- a/src/cmd/servicePush.go +++ b/src/cmd/servicePush.go @@ -153,7 +153,7 @@ func servicePushCmd() *cmdBuilder.Cmd { defer wg.Done() // if an error occurred during upload, return it (it could be even auth error, before upload starts) - if err := packageStream(ctx, appVersion.UploadUrl, finalReader); err != nil { + if err := packageStream(ctx, cmdData.RestApiClient, appVersion.Id, finalReader); err != nil { _ = reader.CloseWithError(err) uploadErr = err // in case the reader is already closed with EOF, sometimes happened with timeouts } diff --git a/src/cmd/servicePushDeployShared.go b/src/cmd/servicePushDeployShared.go index fc0caa3..86010d8 100644 --- a/src/cmd/servicePushDeployShared.go +++ b/src/cmd/servicePushDeployShared.go @@ -18,6 +18,7 @@ import ( "github.com/zeropsio/zerops-go/dto/output" "github.com/zeropsio/zerops-go/errorCode" "github.com/zeropsio/zerops-go/types" + "github.com/zeropsio/zerops-go/types/uuid" ) func createAppVersion( @@ -83,22 +84,18 @@ func openPackageFile(archiveFilePath string, workingDir string) (*os.File, error return file, nil } -func packageStream(ctx context.Context, tempUrl types.String, reader io.Reader) error { - req, err := http.NewRequestWithContext(ctx, http.MethodPut, tempUrl.Native(), reader) +func packageStream(ctx context.Context, restApiClient *zeropsRestApiClient.Handler, appVersionId uuid.AppVersionId, reader io.Reader) error { + // TODO(ms): content-type: application/octet-stream + upload, err := restApiClient.PutAppVersionUpload(ctx, path.AppVersionId{Id: appVersionId}, reader) if err != nil { - return errors.Errorf("failed to create upload HTTP request: PUT %s => %v", tempUrl, err) + return err } - - resp, err := http.DefaultClient.Do(req) - if err != nil { - return errors.Errorf("failed to upload HTTP request: %v", err) + if _, err := upload.Output(); err != nil { + return err } - defer resp.Body.Close() - - if resp.StatusCode >= http.StatusMultipleChoices { + if upload.StatusCode() != http.StatusOK { return errors.New(i18n.T(i18n.PushDeployUploadPackageFailed)) } - return nil }