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

Local swagger API doc parse fails looking for nested swagger.{json.yml} files #155

Open
bedge opened this issue May 9, 2018 · 1 comment

Comments

@bedge
Copy link

bedge commented May 9, 2018

Pyswagger appears to be expecting nested swagger.{json.yml} docs at each 'path' in the API tree for an API specified as a local files, (file://):

I have a swagger 1.2 doc, applications.json, handed to me from another team from which to develop a client.

(output truncated for brevity)

----> 3 api_applications = App.create('./applications.json')

~/.pyenv/versions/3.6.5/envs/3.6/lib/python3.6/site-packages/pyswagger/core.py in create(kls, url, strict)
--> 364 app = kls.load(url)
365 app.prepare(strict=strict)
366

~/.pyenv/versions/3.6.5/envs/3.6/lib/python3.6/site-packages/pyswagger/core.py in load(kls, url, > --> 285 app.__raw, app.__version = app.load_obj(url, getter=getter, parser=parser)

~/.pyenv/versions/3.6.5/envs/3.6/lib/python3.6/site-packages/pyswagger/core.py in load_obj(self, jref, getter, parser)
--> 174 ctx.parse(obj, jref, self.__resolver, getter)

~/.pyenv/versions/3.6.5/envs/3.6/lib/python3.6/site-packages/pyswagger/spec/v1_2/parser.py in parse(self, obj, root_url, resolver, getter)
--> 186 res = resolver.resolve(url, getter)

~/.pyenv/versions/3.6.5/envs/3.6/lib/python3.6/site-packages/pyswagger/resolve.py in resolve(self, jref, getter)
---> 54 getter = LocalGetter(os.path.join(p.netloc, p.path))

~/.pyenv/versions/3.6.5/envs/3.6/lib/python3.6/site-packages/pyswagger/getter.py in init(self, path)
102 break
103 else:
--> 104 raise ValueError('Unable to locate resource file: [{0}]'.format(path))
105
106 def load(self, path):

ValueError: Unable to locate resource file: [/Users/bedge/git/test_apis/applications/{application}]

It's looking for additional swagger json/yml files for each path in the API doc.

I thought perhaps it was intended to work only for http:// API docs, but it does check for file:// as a valid URL type.

This is a swagger 1.2 doc.

I confirmed that this does not happen with a local copy of http://petstore.swagger.io/v2/swagger.json.

@mission-liao
Copy link
Member

@bedge Sorry for late reply.

A Swagger API spec in 1.2 would expect an API Declaration for each API you described in Resource Listing. For example, a valid Swagger 1.2 file structure can be something looks like:

resource_list.json  #  root document
pet.json             # pet api
store.json             # store api
user.json               # user api

An example can be found in tests under this project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants