From e72d763b8eacc109ae7f285e0f7081880e3c2ddd Mon Sep 17 00:00:00 2001 From: Aliaksei Burau Date: Tue, 6 Nov 2018 13:35:50 +0300 Subject: [PATCH] refactor Delete response according to specification (#11) --- Dockerfile | 0 protoc-gen-swagger/genswagger/atlas_patch.go | 39 +++++++++++++++----- 2 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000000..e69de29bb2d diff --git a/protoc-gen-swagger/genswagger/atlas_patch.go b/protoc-gen-swagger/genswagger/atlas_patch.go index 7fea1a90ae0..3bc8024deb4 100644 --- a/protoc-gen-swagger/genswagger/atlas_patch.go +++ b/protoc-gen-swagger/genswagger/atlas_patch.go @@ -157,13 +157,13 @@ The service-defined string used to identify a page of resources. A null value in schema.Properties = map[string]spec.Schema{} } + def := sw.Definitions[trim(rsp.Schema.Ref)] successSchema := map[string]spec.Schema{ "status": *spec.StringProperty().WithExample(opToStatus(on)), "code": *spec.Int32Property().WithExample(opToCode(on)), "message": *spec.StringProperty().WithExample(""), } - def := sw.Definitions[trim(rsp.Schema.Ref)] for fn, v := range def.Properties { if v.Ref.String() == "#/definitions/apiPageInfo" { successSchema["_offset"] = *spec.Int32Property().WithExample(5). @@ -178,22 +178,41 @@ The service-defined string used to identify a page of resources. A null value in break } } - + delete(sw.Definitions, "apiPageInfo") + if rsp.Description == "" { + rsp.Description = on + " operation response" + } + + switch on { + case "DELETE": + if len(def.Properties) == 0 { + rsp.Description = "No Content" + rsp.Schema = nil + op.Responses.StatusCodeResponses[opToCode(on)] = rsp + delete(sw.Definitions, trim(rsp.Ref)) + delete(op.Responses.StatusCodeResponses, 200) + break + } - schema.Properties["success"] = *(&spec.Schema{}).WithProperties(successSchema) + schema.Properties["success"] = *(&spec.Schema{}).WithProperties(successSchema) - sw.Definitions[trim(rsp.Schema.Ref)] = schema + sw.Definitions[trim(rsp.Schema.Ref)] = schema - refs = append(refs, rsp.Schema.Ref) + refs = append(refs, rsp.Schema.Ref) - delete(op.Responses.StatusCodeResponses, 200) + op.Responses.StatusCodeResponses[200] = rsp + default: + schema.Properties["success"] = *(&spec.Schema{}).WithProperties(successSchema) - if rsp.Description == "" { - rsp.Description = on + " operation response" - } + sw.Definitions[trim(rsp.Schema.Ref)] = schema + + refs = append(refs, rsp.Schema.Ref) - op.Responses.StatusCodeResponses[opToCode(on)] = rsp + delete(op.Responses.StatusCodeResponses, 200) + + op.Responses.StatusCodeResponses[opToCode(on)] = rsp + } } }