Skip to content

Commit e185485

Browse files
committed
Fixing output not being json compliant
1 parent 8c7725d commit e185485

2 files changed

Lines changed: 36 additions & 14 deletions

File tree

README.md

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ First, you have to generate a Python client, from [Swagger Editor](https://edito
2020
For example:
2121

2222
```sh
23-
sudo docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli:2.4.7 generate \
24-
-i http://petstore.swagger.io/v2/swagger.json \
23+
sudo docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli:latest generate \
24+
-i https://petstore.swagger.io/v2/swagger.json \
2525
-l python \
2626
-o /local/out/python
2727
```
@@ -198,17 +198,36 @@ Example of usages, and return values:
198198

199199
```sh
200200
$ ./open-api-cli.py api PetApi get_pet_by_id --pet_id 1
201-
{'category': {'id': 1, 'name': 'string'},
202-
'id': 1,
203-
'name': 'cat',
204-
'photo_urls': ['string'],
205-
'status': 'available',
206-
'tags': [{'id': 1, 'name': 'string'}]}
201+
{"id":1,"category":{"id":1,"name":"String"},"name":"String","photoUrls":["string"],"tags":[{"id":10,"name":"String"}],"status":"available"}
207202
```
208203

209204
```sh
210205
$ ./open-api-cli.py api StoreApi get_inventory
211-
{'sold': 193, 'ksks': 1, 'c': 1, 'string': 1, 'Operated': 4, 'unavailable': 2, 'velit ': 1, 'Nonavailable': 1, 'pending': 175, 'Not-Operated': 10, 'available': 345, 'PENDING': 1, 'Not Found': 1, '767778': 1, 'tempor labore n': 1, 'AVAILABLE': 1, 'swimming': 1, 'SOLD': 2, 'amet': 1, '{{petStatus}}': 1, 'Pending': 2, 'qwe': 1, 'Reserved': 1}
206+
{"sold":5,"string":289,"alive":1,"Nonavailable":1,"pending":14,"available":657,"hehe":1,"adopted":1}
207+
```
208+
209+
You can pipe the result to `jq`:
210+
211+
```shell
212+
$ ./open-api-cli.py api PetApi find_pets_by_status --status '["available"]' | jq ".[0]"
213+
{
214+
"id": 9222968140498485000,
215+
"category": {
216+
"id": 0,
217+
"name": "string"
218+
},
219+
"name": "fish",
220+
"photoUrls": [
221+
"string"
222+
],
223+
"tags": [
224+
{
225+
"id": 0,
226+
"name": "string"
227+
}
228+
],
229+
"status": "available"
230+
}
212231
```
213232

214233
## TODO
@@ -222,7 +241,7 @@ $ ./open-api-cli.py api StoreApi get_inventory
222241
- ~~add help for argument format (API Models). Add 'type' subparser?~~
223242
- ~~add the possibility to change the host url~~
224243
- add unit tests
225-
- ~~Make `--host` mandatory, if not server url not set in swagger,~~
244+
- ~~Make `--host` mandatory, if default server url is not set in swagger,~~
226245
- ~~add debug mode~~
227246
- ~~add proxy support~~
228247
- ~~add the possibility to disable SSL verification~~

open-api-cli.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,13 @@ def __execute_api_method(self, api_name, method_name, param_list, args):
186186
params = (*params, json.loads(value))
187187

188188
try:
189-
result = self.api_manager.get_api_method(api_name, method_name)(*params, **dict())
189+
kwargs = dict()
190+
kwargs['_preload_content'] = False
191+
result = self.api_manager.get_api_method(api_name, method_name)(*params, **kwargs)
190192
if debug:
191193
print('body:')
192-
print(result)
194+
print(result.data.decode('utf-8'))
195+
result.release_conn()
193196
except swagger_client.rest.ApiException as ex:
194197
errprint('Exception: ' + str(ex))
195198

@@ -250,7 +253,7 @@ def __build_model_command_parser(self, parser):
250253

251254
return model_parsers
252255

253-
def run(self, argv=sys.argv[1:]):
256+
def run(self, argv):
254257
self.api_manager = ApiManager(swagger_client.Configuration())
255258
api_choice_list = self.api_manager.get_api_list()
256259

@@ -289,4 +292,4 @@ def run(self, argv=sys.argv[1:]):
289292

290293
if __name__ == "__main__":
291294
open_api_cli = OpenApiCli()
292-
open_api_cli.run()
295+
open_api_cli.run(sys.argv[1:])

0 commit comments

Comments
 (0)