Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[haskell-http-client] Add new haskell-http-client client generator #6429

Merged
merged 1 commit into from
Sep 5, 2017

Conversation

jonschoning
Copy link
Contributor

@jonschoning jonschoning commented Sep 3, 2017

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh and ./bin/security/{LANG}-petstore.sh if 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\.
  • Filed the PR against the correct branch: master for non-breaking changes and 3.0.0 branch for breaking (non-backward compatible) changes.

Description of the PR

Adds new generator template haskell-http-client (HaskellHttpClientCodegen.java) which generates a client library for Haskell.

The existing Haskell generator uses servant as the framework to generate bindings.

In contrast, this uses http-client which is a more low-level/fundamental http library.

Another unique thing about this generator is that it ensures at compile-time that the content-type & accept headers and associated encoders / decoders and are within the specified Produces and Consumes for a given Operation.

A sample is provided at samples/client/petstore/haskell-http-client along with

  • unit tests (serialization)
  • integration tests
  • example app

Currently Unsupported Swagger Features

  • Auth Methods
    • headers may be added manually by user
  • Default Parameter Values
  • Enum Parameters
  • ./bin/security/{LANG}-petstore.sh

All petstore operations are currently succeeding with http status 200 ok (integration tests).

Expecting a few WIP updates

@wing328
Copy link
Contributor

wing328 commented Sep 5, 2017

@jonschoning I couldn't get the CI (travis) working: https://travis-ci.org/swagger-api/swagger-codegen/builds/271606980

I'll try to fix it later as part of the future enhancement to this generator.

@wing328 wing328 merged commit c7d145a into swagger-api:master Sep 5, 2017
@wing328
Copy link
Contributor

wing328 commented Sep 5, 2017

Tweet to promote the new generator: https://twitter.com/wing328/status/905108552464793600

@jonschoning
Copy link
Contributor Author

jonschoning commented Sep 5, 2017

re: CI (travis):

the haskell bits of the build in fact succeeded without any errors.
the normal tests completed on line 6683

Finished in 0.2569 seconds
6 examples, 0 failures

the integration tests completed on line 6778

Finished in 0.6834 seconds
20 examples, 0 failures

what is happening, is that setting up the haskell compiler bits is adding some time, which is causing the whole job to exceed the max time allowed in conjunction with all the other samples/tests that being run.

What I've found with travis, is that

It would have to complete an entire travis build, to get the cache updated (it only uploads the cache at the very end). Since I don't think caches are shared between branches, that makes it kind of tricky to decide which sample targets to run.

For now, I suggest leaving the haskell tests commented out because of this time issue. if desired, testing haskell via travis CI would be possible by reducing which sample targets are run, so that the max time isn't exceeded (but I'm not sure that's a desirable option for the master swagger-codegen branch).

@jonschoning jonschoning deleted the haskell-http-client branch September 6, 2017 01:22
@jonschoning jonschoning restored the haskell-http-client branch September 6, 2017 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants