[FEATURE][Haskell] Add Middleware support for the haskell servant generator#4056
Conversation
|
reviewers/cc: @gibiansky @f-f @mandrean |
| :: (MonadIO m, MonadThrow m) | ||
| => Config -> {{title}}Backend (ExceptT ServerError IO) -> m () | ||
| run{{title}}Server Config{..} backend = do | ||
| => Config -> Middleware -> {{title}}Backend (ExceptT ServerError IO) -> m () |
There was a problem hiding this comment.
I'd say instead of changing the signature of this function we could add a run{{title}}ServerWithMiddleware function, and provide the default implementation of the middleware here
In this way we wouldn't have to document how to get a default middleware, since we'd have that already implemented
There was a problem hiding this comment.
That would be a good Idea to keep backwards-compability, though I would keep the documentation since I think that the call with middleware should be the preferred one since an ID-function does not add any runtime overhead.
There was a problem hiding this comment.
In this way we wouldn't have to document how to get a default middleware, since we'd have that already implemented
The 'default'-Middleware is literally just id and the example-server would have that as default.
I fear that if one adds wrappers for this it could start to set a precedence for every case where this could be extended.
Another "clean" solution could be to add a datatype:
data ServerConfig = ServerConfig { serverMiddleware :: Middleware }
deriving (....)
defaultServerConfig = ServerConfig id
-- or with data-default
instance Default ServerConfig where
def = ServerConfig idand people using defaultServerConfig would not be affected if we change things in any way in the future. Especially if the use the Default-Pattern: http://hackage.haskell.org/package/data-default
let myConfig = defaultServerConfig { serverMiddleware = myMiddleware }
-- or with data-default
let myConfig = def { serverMiddleware = myMiddleware }This way we would never have to update/break the type-signature of the implementation for all future versions.
…r and added a backwards compability version runOpenAPIPetstoreServer using requestMiddlewareId as middleware.
* 'master' of github.com:OpenAPITools/openapi-generator: (88 commits) smaller tests, better code format (#4355) csharp-netcore: Replace null literals with default (#4345) [core] consider polymorphism when computing unused schemas (#4335) Fix issue 4326 forward throws for delegate to main method (#4327) [kotlin][client] annotate api exceptions (#4339) refactor java-vertx-web parameters and bugfix on non primitive parameter (#4353) Remove deprecated API use of ObjectFactory.property() (#2613) (#4352) [python][metadata]: Adding license and author fields (#4318) [Python] Avoid pep8 violation (#4316) [JS] Update package.json (#4261) Add slash-arun to Python technical committee (#4354) [typescript-fetch] Fix discriminator mapping name (#4340) fix security alerts reported by github (#4344) fix cpp-restbed-server json field serialization #4320 (#4323) typescript-angular: fix oneOf and anyOf generates incorrect model for primitive types (#4341) fix(typescript-angular): do not call .toISOString() on a string (#4330) (#4337) update samples (#4334) Prepare 4.2.0 release (#4333) [FEATURE][Haskell] Haskell-Servant serves static files (#4058) [FEATURE][Haskell] Add Middleware support for the haskell servant generator (#4056) ...
* master: (142 commits) smaller tests, better code format (#4355) csharp-netcore: Replace null literals with default (#4345) [core] consider polymorphism when computing unused schemas (#4335) Fix issue 4326 forward throws for delegate to main method (#4327) [kotlin][client] annotate api exceptions (#4339) refactor java-vertx-web parameters and bugfix on non primitive parameter (#4353) Remove deprecated API use of ObjectFactory.property() (#2613) (#4352) [python][metadata]: Adding license and author fields (#4318) [Python] Avoid pep8 violation (#4316) [JS] Update package.json (#4261) Add slash-arun to Python technical committee (#4354) [typescript-fetch] Fix discriminator mapping name (#4340) fix security alerts reported by github (#4344) fix cpp-restbed-server json field serialization #4320 (#4323) typescript-angular: fix oneOf and anyOf generates incorrect model for primitive types (#4341) fix(typescript-angular): do not call .toISOString() on a string (#4330) (#4337) update samples (#4334) Prepare 4.2.0 release (#4333) [FEATURE][Haskell] Haskell-Servant serves static files (#4058) [FEATURE][Haskell] Add Middleware support for the haskell servant generator (#4056) ...
* master: (141 commits) smaller tests, better code format (OpenAPITools#4355) csharp-netcore: Replace null literals with default (OpenAPITools#4345) [core] consider polymorphism when computing unused schemas (OpenAPITools#4335) Fix issue 4326 forward throws for delegate to main method (OpenAPITools#4327) [kotlin][client] annotate api exceptions (OpenAPITools#4339) refactor java-vertx-web parameters and bugfix on non primitive parameter (OpenAPITools#4353) Remove deprecated API use of ObjectFactory.property() (OpenAPITools#2613) (OpenAPITools#4352) [python][metadata]: Adding license and author fields (OpenAPITools#4318) [Python] Avoid pep8 violation (OpenAPITools#4316) [JS] Update package.json (OpenAPITools#4261) Add slash-arun to Python technical committee (OpenAPITools#4354) [typescript-fetch] Fix discriminator mapping name (OpenAPITools#4340) fix security alerts reported by github (OpenAPITools#4344) fix cpp-restbed-server json field serialization OpenAPITools#4320 (OpenAPITools#4323) typescript-angular: fix oneOf and anyOf generates incorrect model for primitive types (OpenAPITools#4341) fix(typescript-angular): do not call .toISOString() on a string (OpenAPITools#4330) (OpenAPITools#4337) update samples (OpenAPITools#4334) Prepare 4.2.0 release (OpenAPITools#4333) [FEATURE][Haskell] Haskell-Servant serves static files (OpenAPITools#4058) [FEATURE][Haskell] Add Middleware support for the haskell servant generator (OpenAPITools#4056) ...
PR checklist
./bin/to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh,./bin/openapi3/{LANG}-petstore.shif updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.master,4.1.x,5.0.x. Default:master.Description of the PR
I added middleware support to the haskell servant generator and extended the example to handle the additional middleware parameter.