Skip to content

Ruby: Add option for old path parameter behaviour #3130

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

Closed
wants to merge 1 commit into from
Closed

Ruby: Add option for old path parameter behaviour #3130

wants to merge 1 commit into from

Conversation

ccouzens
Copy link
Contributor

@ccouzens ccouzens commented Jun 9, 2019

The OpenAPI standard is to percent encode special characters such as
slashes, hashes and question marks when they appear in path parameters.

The Ruby client generator was buggy. It did not encode these characters.
So a few days ago I fixed it.
#3039

Unfortunately, some projects rely on the incorrect behaviour.
In particular, they need slashes not to be escaped.

For example:
#3119

I've added an additional property to the ruby generator to undo the
escaping of slashes in path parameters. This will enable those projects
to continue to make use of the Ruby client code generator.
--additional-properties compatibilitySlashesInPathParameters

I'd suggest the long term plan for projects that need this behaviour
should be to work with the OpenAPI Specification writers to support
marking certain path parameters as allowing slashes.

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, ./bin/openapi3/{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\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

@cliffano @zlx @autopp

Description of the PR

Fix #3119
See above

@dkliban
Copy link
Contributor

dkliban commented Jun 11, 2019

@ccouzens I test this PR and it does not solve the problem all the way. The URL that is generated by the api_client::build_request_url now contains and extra '/' on the front. The server always returns a 404. This behavior is very similar to #2702. I think changing the order of substitution should fix the problem.

The OpenAPI standard is to percent encode special characters such as
slashes, hashes and question marks when they appear in path parameters.

The Ruby client generator was buggy. It did not encode these characters.
So a few days ago I fixed it.
#3039

Unfortunately, some projects rely on the incorrect behaviour.
In particular, they need slashes not to be escaped.

For example:
#3119

I've added an additional property to the ruby generator to undo the
escaping of slashes in path parameters. This will enable those projects
to continue to make use of the Ruby client code generator.
`--additional-properties compatibilitySlashesInPathParameters`

I'd suggest the long term plan for projects that need this behaviour
should be to work with the OpenAPI Specification writers to support
marking certain path parameters as allowing slashes.
@ccouzens
Copy link
Contributor Author

@dkliban I've swapped the order like you suggested. That should fix the double slash problem

@ccouzens
Copy link
Contributor Author

I'm closing this because #3204 solved the issue instead.

@ccouzens ccouzens closed this Jun 24, 2019
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.

[BUG] [Ruby] client escapes all path parameters
3 participants