forked from loafle/openapi-generator-original
Add Go Server featureCORS option (#4400)
Add a Go server configuration option of "featureCORS" that defaults to false. When set to true the Go server routers will be generated with Cross-Origin Resource Sharing middleware through gorrilla mux. https://www.gorillatoolkit.org/pkg/handlers#CORS
This commit is contained in:
parent
79d7e61b87
commit
5b4441892f
@ -10,3 +10,4 @@ sidebar_label: go-server
|
|||||||
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|
||||||
|sourceFolder|source folder for generated code| |go|
|
|sourceFolder|source folder for generated code| |go|
|
||||||
|serverPort|The network port the generated server binds to| |8080|
|
|serverPort|The network port the generated server binds to| |8080|
|
||||||
|
|featureCORS|Enable Cross-Origin Resource Sharing middleware| |false|
|
||||||
|
@ -39,6 +39,7 @@ public class GoServerCodegen extends AbstractGoCodegen {
|
|||||||
protected int serverPort = 8080;
|
protected int serverPort = 8080;
|
||||||
protected String projectName = "openapi-server";
|
protected String projectName = "openapi-server";
|
||||||
protected String sourceFolder = "go";
|
protected String sourceFolder = "go";
|
||||||
|
protected Boolean corsFeatureEnabled = false;
|
||||||
|
|
||||||
|
|
||||||
public GoServerCodegen() {
|
public GoServerCodegen() {
|
||||||
@ -55,6 +56,11 @@ public class GoServerCodegen extends AbstractGoCodegen {
|
|||||||
optServerPort.defaultValue(Integer.toString(serverPort));
|
optServerPort.defaultValue(Integer.toString(serverPort));
|
||||||
cliOptions.add(optServerPort);
|
cliOptions.add(optServerPort);
|
||||||
|
|
||||||
|
CliOption optFeatureCORS = new CliOption("featureCORS", "Enable Cross-Origin Resource Sharing middleware");
|
||||||
|
optFeatureCORS.setType("bool");
|
||||||
|
optFeatureCORS.defaultValue(corsFeatureEnabled.toString());
|
||||||
|
cliOptions.add(optFeatureCORS);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Models. You can write model files using the modelTemplateFiles map.
|
* Models. You can write model files using the modelTemplateFiles map.
|
||||||
* if you want to create one template for file, you can do so here.
|
* if you want to create one template for file, you can do so here.
|
||||||
@ -142,6 +148,12 @@ public class GoServerCodegen extends AbstractGoCodegen {
|
|||||||
additionalProperties.put("serverPort", serverPort);
|
additionalProperties.put("serverPort", serverPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey("featureCORS")) {
|
||||||
|
this.setFeatureCORS(convertPropertyToBooleanAndWriteBack("featureCORS"));
|
||||||
|
} else {
|
||||||
|
additionalProperties.put("featureCORS", corsFeatureEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
modelPackage = packageName;
|
modelPackage = packageName;
|
||||||
apiPackage = packageName;
|
apiPackage = packageName;
|
||||||
|
|
||||||
@ -263,4 +275,8 @@ public class GoServerCodegen extends AbstractGoCodegen {
|
|||||||
public void setServerPort(int serverPort) {
|
public void setServerPort(int serverPort) {
|
||||||
this.serverPort = serverPort;
|
this.serverPort = serverPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFeatureCORS(Boolean featureCORS) {
|
||||||
|
this.corsFeatureEnabled = featureCORS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,9 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
{{#featureCORS}}
|
||||||
|
|
||||||
|
"github.com/gorilla/handlers"{{/featureCORS}}
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,7 +36,8 @@ func NewRouter(routers ...Router) *mux.Router {
|
|||||||
for _, route := range api.Routes() {
|
for _, route := range api.Routes() {
|
||||||
var handler http.Handler
|
var handler http.Handler
|
||||||
handler = route.HandlerFunc
|
handler = route.HandlerFunc
|
||||||
handler = Logger(handler, route.Name)
|
handler = Logger(handler, route.Name){{#featureCORS}}
|
||||||
|
handler = handlers.CORS()(handler){{/featureCORS}}
|
||||||
|
|
||||||
router.
|
router.
|
||||||
Methods(route.Method).
|
Methods(route.Method).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user