improve openapi support
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
								
							| @@ -8,6 +8,3 @@ require ( | |||||||
| 	golang.org/x/tools v0.1.8 | 	golang.org/x/tools v0.1.8 | ||||||
| 	google.golang.org/protobuf v1.27.1 | 	google.golang.org/protobuf v1.27.1 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| //replace go.unistack.org/micro/v3 => ../micro |  | ||||||
| //replace go.unistack.org/micro-proto => ../micro-proto |  | ||||||
|   | |||||||
							
								
								
									
										889
									
								
								openapiv3.go
									
									
									
									
									
								
							
							
						
						
									
										889
									
								
								openapiv3.go
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										20
									
								
								util.go
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								util.go
									
									
									
									
									
								
							| @@ -62,9 +62,15 @@ func generateServiceClientMethods(gfile *protogen.GeneratedFile, service *protog | |||||||
| 							if strings.HasPrefix(ref, "."+string(service.Desc.ParentFile().Package())+".") { | 							if strings.HasPrefix(ref, "."+string(service.Desc.ParentFile().Package())+".") { | ||||||
| 								ref = strings.TrimPrefix(ref, "."+string(service.Desc.ParentFile().Package())+".") | 								ref = strings.TrimPrefix(ref, "."+string(service.Desc.ParentFile().Package())+".") | ||||||
| 							} | 							} | ||||||
| 							if ref == "micro.codec.Frame" || ref == ".micro.codec.Frame" { | 							if ref[0] == '.' { | ||||||
|  | 								ref = ref[1:] | ||||||
|  | 							} | ||||||
|  | 							switch ref { | ||||||
|  | 							case "micro.codec.Frame": | ||||||
| 								gfile.P(`errmap["`, rsp.Name, `"] = &`, microCodecPackage.Ident("Frame"), "{}") | 								gfile.P(`errmap["`, rsp.Name, `"] = &`, microCodecPackage.Ident("Frame"), "{}") | ||||||
| 							} else { | 							case "micro.errors.Error": | ||||||
|  | 								gfile.P(`errmap["`, rsp.Name, `"] = &`, microErrorsPackage.Ident("Error"), "{}") | ||||||
|  | 							default: | ||||||
| 								gfile.P(`errmap["`, rsp.Name, `"] = &`, ref, "{}") | 								gfile.P(`errmap["`, rsp.Name, `"] = &`, ref, "{}") | ||||||
| 							} | 							} | ||||||
| 						} | 						} | ||||||
| @@ -165,7 +171,7 @@ func generateServiceClientMethods(gfile *protogen.GeneratedFile, service *protog | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() { | 		if method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() { | ||||||
| 			gfile.P("func (s *", unexport(serviceName), "Client", method.GoName, ") RecvAndClose() (*", gfile.QualifiedGoIdent(method.Output.GoIdent), ", error) {") | 			gfile.P("func (s *", unexport(serviceName), "Client", method.GoName, ") CloseAndRecv() (*", gfile.QualifiedGoIdent(method.Output.GoIdent), ", error) {") | ||||||
| 			gfile.P("msg := &", gfile.QualifiedGoIdent(method.Output.GoIdent), "{}") | 			gfile.P("msg := &", gfile.QualifiedGoIdent(method.Output.GoIdent), "{}") | ||||||
| 			gfile.P("err := s.RecvMsg(msg)") | 			gfile.P("err := s.RecvMsg(msg)") | ||||||
| 			gfile.P("if err == nil {") | 			gfile.P("if err == nil {") | ||||||
| @@ -183,6 +189,10 @@ func generateServiceClientMethods(gfile *protogen.GeneratedFile, service *protog | |||||||
| 		gfile.P("return s.stream.Close()") | 		gfile.P("return s.stream.Close()") | ||||||
| 		gfile.P("}") | 		gfile.P("}") | ||||||
| 		gfile.P() | 		gfile.P() | ||||||
|  | 		gfile.P("func (s *", unexport(serviceName), "Client", method.GoName, ") CloseSend() error {") | ||||||
|  | 		gfile.P("return s.stream.CloseSend()") | ||||||
|  | 		gfile.P("}") | ||||||
|  | 		gfile.P() | ||||||
| 		gfile.P("func (s *", unexport(serviceName), "Client", method.GoName, ") Context() ", contextPackage.Ident("Context"), " {") | 		gfile.P("func (s *", unexport(serviceName), "Client", method.GoName, ") Context() ", contextPackage.Ident("Context"), " {") | ||||||
| 		gfile.P("return s.stream.Context()") | 		gfile.P("return s.stream.Context()") | ||||||
| 		gfile.P("}") | 		gfile.P("}") | ||||||
| @@ -478,7 +488,8 @@ func generateServiceClientStreamInterface(gfile *protogen.GeneratedFile, service | |||||||
| 		gfile.P("SendMsg(msg interface{}) error") | 		gfile.P("SendMsg(msg interface{}) error") | ||||||
| 		gfile.P("RecvMsg(msg interface{}) error") | 		gfile.P("RecvMsg(msg interface{}) error") | ||||||
| 		if method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() { | 		if method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() { | ||||||
| 			gfile.P("RecvAndClose() (*", gfile.QualifiedGoIdent(method.Output.GoIdent), ", error)") | 			gfile.P("CloseAndRecv() (*", gfile.QualifiedGoIdent(method.Output.GoIdent), ", error)") | ||||||
|  | 			gfile.P("CloseSend() () error") | ||||||
| 		} | 		} | ||||||
| 		gfile.P("Close() error") | 		gfile.P("Close() error") | ||||||
| 		if method.Desc.IsStreamingClient() { | 		if method.Desc.IsStreamingClient() { | ||||||
| @@ -505,6 +516,7 @@ func generateServiceServerStreamInterface(gfile *protogen.GeneratedFile, service | |||||||
| 		gfile.P("RecvMsg(msg interface{}) error") | 		gfile.P("RecvMsg(msg interface{}) error") | ||||||
| 		if method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() { | 		if method.Desc.IsStreamingClient() && !method.Desc.IsStreamingServer() { | ||||||
| 			gfile.P("SendAndClose(msg *", gfile.QualifiedGoIdent(method.Output.GoIdent), ") error") | 			gfile.P("SendAndClose(msg *", gfile.QualifiedGoIdent(method.Output.GoIdent), ") error") | ||||||
|  | 			gfile.P("CloseSend() error") | ||||||
| 		} | 		} | ||||||
| 		gfile.P("Close() error") | 		gfile.P("Close() error") | ||||||
| 		if method.Desc.IsStreamingClient() { | 		if method.Desc.IsStreamingClient() { | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ var ( | |||||||
| 	microClientHttpPackage = protogen.GoImportPath("go.unistack.org/micro-client-http/v3") | 	microClientHttpPackage = protogen.GoImportPath("go.unistack.org/micro-client-http/v3") | ||||||
| 	microServerHttpPackage = protogen.GoImportPath("go.unistack.org/micro-server-http/v3") | 	microServerHttpPackage = protogen.GoImportPath("go.unistack.org/micro-server-http/v3") | ||||||
| 	microCodecPackage      = protogen.GoImportPath("go.unistack.org/micro/v3/codec") | 	microCodecPackage      = protogen.GoImportPath("go.unistack.org/micro/v3/codec") | ||||||
|  | 	microErrorsPackage     = protogen.GoImportPath("go.unistack.org/micro/v3/errors") | ||||||
| 	timePackage            = protogen.GoImportPath("time") | 	timePackage            = protogen.GoImportPath("time") | ||||||
| 	deprecationComment     = "// Deprecated: Do not use." | 	deprecationComment     = "// Deprecated: Do not use." | ||||||
| 	versionComment         = "v3.5.3" | 	versionComment         = "v3.5.3" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user