* Bump the minimum version of Elixir supported
The previous minimum version of Elixir is several years EOL.
The current minimum version of Elixir is also EOL, but is the minimum
version required to support some upcoming changes to the config
templates.
* Bump the minimum version fo Tesla
Keep the dependencies up to date
* Add a default .formatter.exs
* Add two Elixir-specific mustache lambdas
- The `atom` lambda results in the proper quoting of an atom depending
on the safe contents of the atom text, per the Elixir language
specification. That is, `{{#atom}}foo{{/atom}}` will be turned into
`:foo` and `{{#atom}foo.bar{{/atom}}` will be turned into
`:"foo.bar"`.
- The `env_var` lambda results in the treatment of the identifier
provided being capitalized as an environment variable would be.
`{{#env_var}}apiVersion{{/env_var}}` would become `ENV_VAR`.
* Use modern Elixir configuration
- This includes runtime configuration
- It depends on the `env_var` lambda.
* Fix a Language Server Warning
This change is *optional*, but removes a LS warning that was raised.
* Regenerated openapi_petstore for Elixir
* Add ex_doc as a default dependency
Fixes#12484
* Refine the regular expression for atoms
The original regex incorrectly matched `123Number` (unquoted atoms
cannot begin with numbers) and would incorrectly quote atoms ending in
`?` or `!`. Through testing with `iex`, it also turns out that the atom
`:-` is legal.
The following atoms will now not be quoted that would have been
incorrectly quoted:
- `:-`
- `:declawed?`
- `:neutered!`
The following atoms will be quoted that were incorrectly unquoted:
- `:"123Number"`
* Improve regex (again), remove files not generated
- The previous commit resulted in a number of warnings that were still
present and so I played with the regular expression. This did not
solve the problem, but the resulting regular expression is *much*
better than the previous one, so I'm keeping it.
- The problem was that the configuration (`bin/configs/elixir.yaml`) is
generated using a 3.0 input spec:
```yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
```
Which means that there were 16 files committed which were no longer
being generated. When I tested with the 2.0 input spec:
```yaml
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
```
The files were generated again. I *believe* that the correct change
here is to switch back to the 2.0 input spec, as it tests more code
generation, but I wanted to check in before I did this.
The following files are deleted:
- `elixir/lib/openapi_petstore/model/additional_properties_any_type.ex`
- `elixir/lib/openapi_petstore/model/additional_properties_array.ex`
- `elixir/lib/openapi_petstore/model/additional_properties_boolean.ex`
- `elixir/lib/openapi_petstore/model/additional_properties_integer.ex`
- `elixir/lib/openapi_petstore/model/additional_properties_number.ex`
- `elixir/lib/openapi_petstore/model/additional_properties_object.ex`
- `elixir/lib/openapi_petstore/model/additional_properties_string.ex`
- `elixir/lib/openapi_petstore/model/big_cat.ex`
- `elixir/lib/openapi_petstore/model/big_cat_all_of.ex`
- `elixir/lib/openapi_petstore/model/inline_response_default.ex`
- `elixir/lib/openapi_petstore/model/special_model_name.ex`
- `elixir/lib/openapi_petstore/model/type_holder_default.ex`
- `elixir/lib/openapi_petstore/model/type_holder_example.ex`
- `elixir/lib/openapi_petstore/model/xml_item.ex`
- `elixir/pom.xml`
- `elixir/test/pet_test.exs`
In the interim, I have removed those files from the commit.
* [Elixir] update version / add test
* update samples (add missing 200 responses in petstore-with-fake-endpoints-models-for-testing.yaml)
* [Elixir] update to 1.6 version
* [Elixir] fix test petapi
* Update Tesla dependency and replace Poison with Jason
* Use new Tesla method to set headers
* Fix jason dependency definition
* Use list for Headers instead of a map
* Rollback to Poison because Jason does not support 'as:' option to decode to arbitrary struct
* Use new return signature from Tesla 1.0 in decode function
* catch error when a struct is given as second parameter to RequestBuilder.decode
* Update modules/openapi-generator/src/main/resources/elixir/request_builder.ex.mustache
Co-Authored-By: yknx4 <yknx.4.b@gmail.com>
* Update modules/openapi-generator/src/main/resources/elixir/request_builder.ex.mustache
Co-Authored-By: yknx4 <yknx.4.b@gmail.com>
* Evaluate response based on status code
* Generate Petstore
* pin poison to ~> 3.0.0 since 4.0.0 does not work atm
* run ./bin/openapi3/elixir-petstore.sh
* Update Tesla dependency and replace Poison with Jason
* Use new Tesla method to set headers
* Fix jason dependency definition
* Use list for Headers instead of a map
* Rollback to Poison because Jason does not support 'as:' option to decode to arbitrary struct
* Use new return signature from Tesla 1.0 in decode function
* catch error when a struct is given as second parameter to RequestBuilder.decode
* Update modules/openapi-generator/src/main/resources/elixir/request_builder.ex.mustache
Co-Authored-By: yknx4 <yknx.4.b@gmail.com>
* Update modules/openapi-generator/src/main/resources/elixir/request_builder.ex.mustache
Co-Authored-By: yknx4 <yknx.4.b@gmail.com>
* Fix dependencies and generate model classes
* Better elixir client generation.
Responses are parsed and serialized by Poison into the model structs.
Use shared helper functions to generate the request.
Extract client connection configuration from api calls.
Elixir client can sanitize the operationId
Correctly output the model variables. Fix typos
Fix path replacement when there are multiple replacements
Cannot separate globally shared parameters from operations
Error handling for the tesla response
update templates
Can generate clients that compile
Can make requests - parse optional params, build query
Add oauth to connection. Fix connection directory
Add basic auth helper for creating a connection
Fix map types. Fix guard clauses for creaing connections
Add licenceInfo template. Parse config for moduleName via standard invokerPackage option
Can provide and inject a license header into all source files
fix location of connection.ex
Move shared code into reusable modules
Elixir filenames should be underscored
Fix visibility of helper functions
Parse the packageName from config options
Handle date and datetime fields with DateTime.from_iso8601
Fix indentation
Update documentation, add typespecs
Generate a standard elixir .gitignore
typespec is calculated recursively in java
Use the JSON middleware and using Poison.Decoder.decode on already parsed structs
move decoded struct into java
Fix handling of non-json responses
Switch basic auth to use the provided Tesla.Middleware.BasicAuth
Update README template to include the appDescription
Update sample elixir client
remove junk client models that don't belong with petstore
Only implement Poison.Decoder protocol if needed
Update samples with skipped Poison.Deocder impl
* Handle multipart file uploads
Handle building form params in the body
Files are handled as strings for input
* Requests with no defined return type will return the Tesla.Env response
* Run the bin/elixir-petstore.sh
* Add elixir client
* Add test for elixir client
* Add shell script for generating sample codes for elixir client
It just copied from bin/bash-petstore.sh
* Make elixir-petstore.sh to generate sample codes for elixir client
* Add sample codes for elixir client