Update apache/thrift to 0.11.0 and remove pinning (#1317)

The `apache/thrift` recently released a new version of `0.11.0`
several days ago. This release is compatible with other packages
and as such, there is no need to pinning the `apache/thrift`
to `master` anymore in Gopkg.toml.

This fix removes the pinning of `apache/thrift` in Gopkg.toml,
and updates all dependencies of coredns.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
Yong Tang 2017-12-18 11:50:56 -06:00 committed by GitHub
parent ba4e77672c
commit 4dd40a292c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6992 changed files with 30842 additions and 1995023 deletions

View file

@ -1,117 +0,0 @@
## Contribution Guidelines
### Pull requests are always welcome
We are always thrilled to receive pull requests, and do our best to
process them as fast as possible. Not sure if that typo is worth a pull
request? Do it! We will appreciate it.
If your pull request is not accepted on the first try, don't be
discouraged! If there's a problem with the implementation, hopefully you
received feedback on what to improve.
We're trying very hard to keep go-swagger lean and focused. We don't want it
to do everything for everybody. This means that we might decide against
incorporating a new feature. However, there might be a way to implement
that feature *on top of* go-swagger.
### Conventions
Fork the repo and make changes on your fork in a feature branch:
- If it's a bugfix branch, name it XXX-something where XXX is the number of the
issue
- If it's a feature branch, create an enhancement issue to announce your
intentions, and name it XXX-something where XXX is the number of the issue.
Submit unit tests for your changes. Go has a great test framework built in; use
it! Take a look at existing tests for inspiration. Run the full test suite on
your branch before submitting a pull request.
Update the documentation when creating or modifying features. Test
your documentation changes for clarity, concision, and correctness, as
well as a clean documentation build. See ``docs/README.md`` for more
information on building the docs and how docs get released.
Write clean code. Universally formatted code promotes ease of writing, reading,
and maintenance. Always run `gofmt -s -w file.go` on each changed file before
committing your changes. Most editors have plugins that do this automatically.
Pull requests descriptions should be as clear as possible and include a
reference to all the issues that they address.
Pull requests must not contain commits from other users or branches.
Commit messages must start with a capitalized and short summary (max. 50
chars) written in the imperative, followed by an optional, more detailed
explanatory text which is separated from the summary by an empty line.
Code review comments may be added to your pull request. Discuss, then make the
suggested modifications and push additional commits to your feature branch. Be
sure to post a comment after pushing. The new commits will show up in the pull
request automatically, but the reviewers will not be notified unless you
comment.
Before the pull request is merged, make sure that you squash your commits into
logical units of work using `git rebase -i` and `git push -f`. After every
commit the test suite should be passing. Include documentation changes in the
same commit so that a revert would remove all traces of the feature or fix.
Commits that fix or close an issue should include a reference like `Closes #XXX`
or `Fixes #XXX`, which will automatically close the issue when merged.
### Sign your work
The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right to
pass it on as an open-source patch. The rules are pretty simple: if you
can certify the below (from
[developercertificate.org](http://developercertificate.org/)):
```
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```
then you just add a line to every git commit message:
Signed-off-by: Joe Smith <joe@gmail.com>
using your real name (sorry, no pseudonyms or anonymous contributions.)
You can add the sign off when creating the git commit via `git commit -s`.

View file

@ -1,43 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: allOf analysis
paths:
"/some/where/{id}":
parameters:
- name: id
in: path
type: integer
format: int32
- name: bodyId
in: body
schema:
type: object
get:
parameters:
- name: limit
in: query
type: integer
format: int32
required: false
- name: body
in: body
schema:
type: object
responses:
default:
schema:
type: object
200:
schema:
type: object
definitions:
tag:
type: object
properties:
id:
type: integer
format: int64
value:
type: string

View file

@ -1,180 +0,0 @@
---
swagger: '2.0'
info:
title: bar CRUD API
version: 4.2.0
schemes:
- http
basePath: /api
consumes:
- application/json
produces:
- application/json
paths:
/common:
get:
operationId: commonGet
summary: here to test path collisons
responses:
'200':
description: OK
schema:
$ref: "#/definitions/bar"
/bars:
post:
operationId: create
summary: Create a new bar
parameters:
- name: info
in: body
schema:
$ref: "#/definitions/bar"
responses:
'201':
description: created
schema:
$ref: "#/definitions/barId"
default:
description: error
schema:
$ref: "#/definitions/error"
/bars/{barid}:
get:
operationId: get
summary: Get a bar by id
parameters:
- $ref: "#/parameters/barid"
responses:
'200':
description: OK
schema:
$ref: "#/definitions/bar"
'401':
$ref: "#/responses/401"
'404':
$ref: "#/responses/404"
default:
description: error
schema:
$ref: "#/definitions/error"
delete:
operationId: delete
summary: delete a bar by id
parameters:
- name: barid
in: path
required: true
type: string
responses:
'200':
description: OK
'401':
description: unauthorized
schema:
$ref: "#/definitions/error"
'404':
description: resource not found
schema:
$ref: "#/definitions/error"
default:
description: error
schema:
$ref: "#/definitions/error"
post:
operationId: update
summary: update a bar by id
parameters:
- name: barid
in: path
required: true
type: string
- name: info
in: body
schema:
$ref: "#/definitions/bar"
responses:
'200':
description: OK
'401':
description: unauthorized
schema:
$ref: "#/definitions/error"
'404':
description: resource not found
schema:
$ref: "#/definitions/error"
default:
description: error
schema:
$ref: "#/definitions/error"
definitions:
common:
type: object
required:
- id
properties:
id:
type: string
format: string
minLength: 1
bar:
type: object
required:
- name
- description
properties:
id:
type: string
format: string
readOnly: true
name:
type: string
format: string
minLength: 1
description:
type: string
format: string
minLength: 1
barId:
type: object
required:
- id
properties:
id:
type: string
format: string
minLength: 1
error:
type: object
required:
- message
properties:
code:
type: string
format: string
message:
type: string
fields:
type: string
parameters:
common:
name: common
in: query
type: string
barid:
name: barid
in: path
required: true
type: string
responses:
401:
description: bar unauthorized
schema:
$ref: "#/definitions/error"
404:
description: bar resource not found
schema:
$ref: "#/definitions/error"

View file

@ -1,86 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: Definition analysis
parameters:
someParam:
name: someParam
in: body
schema:
type: object
responses:
someResponse:
schema:
type: object
paths:
"/some/where/{id}":
parameters:
- name: id
in: path
type: integer
format: int32
- name: bodyId
in: body
schema:
type: object
get:
parameters:
- name: limit
in: query
type: integer
format: int32
required: false
- name: body
in: body
schema:
type: object
responses:
default:
schema:
type: object
200:
schema:
type: object
definitions:
tag:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
definitions:
category:
type: object
properties:
id:
type: integer
format: int32
value:
type: string
withAdditionalProps:
type: object
additionalProperties:
type: boolean
withAdditionalItems:
type: array
items:
- type: string
- type: bool
additionalItems:
type: integer
format: int32
withNot:
type: object
not:
$ref: "#/definitions/tag"
withAnyOf:
anyOf:
- type: object
- type: string
withAllOf:
allOf:
- type: object
- type: string

View file

@ -1,8 +0,0 @@
{
"swagger": "2.0",
"info": {
"title": "empty-paths",
"version": "79.2.1"
},
"paths": {}
}

View file

@ -1,50 +0,0 @@
definitions:
named:
type: string
tag:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
audit:
$ref: "#/definitions/record"
record:
type: object
properties:
createdAt:
type: string
format: date-time
nestedThing:
type: object
properties:
record:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
- allOf:
- type: string
format: date
- type: object
additionalProperties:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
properties:
value:
type: string
name:
$ref: "definitions2.yml#/coordinate"

View file

@ -1,9 +0,0 @@
coordinate:
type: object
properties:
id:
type: integer
format: int64
createdAt:
type: string
format: date-time

View file

@ -1,13 +0,0 @@
error:
type: object
required:
- id
- message
properties:
id:
type: integer
format: int64
readOnly: true
message:
type: string
readOnly: true

View file

@ -1,35 +0,0 @@
bodyParam:
name: body
in: body
schema:
type: object
properties:
record:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
- allOf:
- type: string
format: date
- type: object
properties:
id:
type: integer
format: int64
value:
type: string
name:
type: object
properties:
id:
type: integer
format: int64
createdAt:
type: string
format: date-time

View file

@ -1,32 +0,0 @@
genericResponse:
type: object
properties:
record:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
- allOf:
- type: string
format: date
- type: object
properties:
id:
type: integer
format: int64
value:
type: string
name:
type: object
properties:
id:
type: integer
format: int64
createdAt:
type: string
format: date-time

View file

@ -1,12 +0,0 @@
parameters:
idParam:
name: id
in: path
type: integer
format: int32
limitParam:
name: limit
in: query
type: integer
format: int32
required: false

View file

@ -1,9 +0,0 @@
get:
operationId: modelOp
summary: many model variations
description: Used to see if a codegen can render all the possible parameter variations for a header param
tags:
- testcgen
responses:
default:
description: Generic Out

View file

@ -1,4 +0,0 @@
responses:
notFound:
schema:
$ref: "errors.yml#/error"

View file

@ -1,95 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: reference analysis
parameters:
someParam:
name: someParam
in: body
schema:
$ref: "external/definitions.yml#/definitions/record"
responses:
someResponse:
schema:
$ref: "external/definitions.yml#/definitions/record"
paths:
"/some/where/{id}":
parameters:
- $ref: "external/parameters.yml#/parameters/idParam"
- name: bodyId
in: body
schema:
$ref: "external/definitions.yml#/definitions/record"
get:
parameters:
- $ref: "external/parameters.yml#/parameters/limitParam"
- name: other
in: query
type: array
items:
$ref: "external/definitions.yml#/definitions/named"
- name: body
in: body
schema:
$ref: "external/definitions.yml#/definitions/record"
responses:
default:
schema:
$ref: "external/definitions.yml#/definitions/record"
404:
$ref: "external/responses.yml#/responses/notFound"
200:
schema:
$ref: "external/definitions.yml#/definitions/tag"
"/other/place":
$ref: "external/pathItem.yml"
definitions:
namedAgain:
$ref: "external/definitions.yml#/definitions/named"
datedTag:
allOf:
- type: string
format: date
- $ref: "external/definitions.yml#/definitions/tag"
records:
type: array
items:
- $ref: "external/definitions.yml#/definitions/record"
datedRecords:
type: array
items:
- type: string
format: date-time
- $ref: "external/definitions.yml#/definitions/record"
datedTaggedRecords:
type: array
items:
- type: string
format: date-time
- $ref: "external/definitions.yml#/definitions/record"
additionalItems:
$ref: "external/definitions.yml#/definitions/tag"
otherRecords:
type: array
items:
$ref: "external/definitions.yml#/definitions/record"
tags:
type: object
additionalProperties:
$ref: "external/definitions.yml#/definitions/tag"
namedThing:
type: object
properties:
name:
$ref: "external/definitions.yml#/definitions/named"

View file

@ -1,85 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: reference analysis
parameters:
someParam:
name: some
in: query
type: string
responses:
notFound:
description: "Not Found"
schema:
$ref: "external/errors.yml#/error"
paths:
"/some/where/{id}":
parameters:
- $ref: "external/parameters.yml#/parameters/idParam"
get:
parameters:
- $ref: "external/parameters.yml#/parameters/limitParam"
- $ref: "#/parameters/someParam"
- name: other
in: query
type: string
- $ref: "external/nestedParams.yml#/bodyParam"
responses:
default:
$ref: "external/nestedResponses.yml#/genericResponse"
404:
$ref: "#/responses/notFound"
200:
description: "RecordHolder"
schema:
type: object
properties:
record:
$ref: "external/definitions.yml#/definitions/nestedThing"
"/other/place":
$ref: "external/pathItem.yml"
definitions:
namedAgain:
$ref: "external/definitions.yml#/definitions/named"
datedTag:
allOf:
- type: string
format: date
- $ref: "external/definitions.yml#/definitions/tag"
records:
type: array
items:
- $ref: "external/definitions.yml#/definitions/record"
datedRecords:
type: array
items:
- type: string
format: date-time
- $ref: "external/definitions.yml#/definitions/record"
otherRecords:
type: array
items:
$ref: "external/definitions.yml#/definitions/record"
tags:
type: object
additionalProperties:
$ref: "external/definitions.yml#/definitions/tag"
namedThing:
type: object
properties:
name:
$ref: "external/definitions.yml#/definitions/named"
namedAgain:
$ref: "#/definitions/namedAgain"

View file

@ -1,180 +0,0 @@
---
swagger: '2.0'
info:
title: foo CRUD API
version: 4.2.0
schemes:
- http
basePath: /api
consumes:
- application/json
produces:
- application/json
paths:
/common:
get:
operationId: commonGet
summary: here to test path collisons
responses:
'200':
description: OK
schema:
$ref: "#/definitions/foo"
/foos:
post:
operationId: create
summary: Create a new foo
parameters:
- name: info
in: body
schema:
$ref: "#/definitions/foo"
responses:
'201':
description: created
schema:
$ref: "#/definitions/fooId"
default:
description: error
schema:
$ref: "#/definitions/error"
/foos/{fooid}:
get:
operationId: get
summary: Get a foo by id
parameters:
- $ref: "#/parameters/fooid"
responses:
'200':
description: OK
schema:
$ref: "#/definitions/foo"
'401':
$ref: "#/responses/401"
'404':
$ref: "#/responses/404"
default:
description: error
schema:
$ref: "#/definitions/error"
delete:
operationId: delete
summary: delete a foo by id
parameters:
- name: fooid
in: path
required: true
type: string
responses:
'200':
description: OK
'401':
description: unauthorized
schema:
$ref: "#/definitions/error"
'404':
description: resource not found
schema:
$ref: "#/definitions/error"
default:
description: error
schema:
$ref: "#/definitions/error"
post:
operationId: update
summary: update a foo by id
parameters:
- name: fooid
in: path
required: true
type: string
- name: info
in: body
schema:
$ref: "#/definitions/foo"
responses:
'200':
description: OK
'401':
description: unauthorized
schema:
$ref: "#/definitions/error"
'404':
description: resource not found
schema:
$ref: "#/definitions/error"
default:
description: error
schema:
$ref: "#/definitions/error"
definitions:
common:
type: object
required:
- id
properties:
id:
type: string
format: string
minLength: 1
foo:
type: object
required:
- name
- description
properties:
id:
type: string
format: string
readOnly: true
name:
type: string
format: string
minLength: 1
description:
type: string
format: string
minLength: 1
fooId:
type: object
required:
- id
properties:
id:
type: string
format: string
minLength: 1
error:
type: object
required:
- message
properties:
code:
type: string
format: string
message:
type: string
fields:
type: string
parameters:
common:
name: common
in: query
type: string
fooid:
name: fooid
in: path
required: true
type: string
responses:
401:
description: foo unauthorized
schema:
$ref: "#/definitions/error"
404:
description: foo resource not found
schema:
$ref: "#/definitions/error"

View file

@ -1,187 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: reference analysis
parameters:
someParam:
name: someParam
in: body
schema:
type: object
properties:
createdAt:
type: string
format: date-time
responses:
someResponse:
schema:
type: object
properties:
createdAt:
type: string
format: date-time
paths:
"/some/where/{id}":
parameters:
- name: id
in: path
type: integer
format: int32
- name: bodyId
in: body
schema:
type: object
properties:
createdAt:
type: string
format: date-time
post:
responses:
default:
description: all good
get:
parameters:
- name: limit
in: query
type: integer
format: int32
required: false
- name: other
in: query
type: array
items:
type: object
properties:
id:
type: integer
format: int64
- name: body
in: body
schema:
type: object
properties:
createdAt:
type: string
format: date-time
responses:
default:
schema:
type: object
properties:
createdAt:
type: string
format: date-time
404:
schema:
$ref: "errors.yml#/error"
200:
schema:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
"/other/place":
$ref: "external/pathItem.yml"
definitions:
namedAgain:
type: object
properties:
id:
type: integer
format: int64
datedTag:
allOf:
- type: string
format: date
- type: object
properties:
id:
type: integer
format: int64
value:
type: string
records:
type: array
items:
- type: object
properties:
createdAt:
type: string
format: date-time
datedRecords:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
datedTaggedRecords:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
additionalItems:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
otherRecords:
type: array
items:
type: object
properties:
createdAt:
type: string
format: date-time
tags:
type: object
additionalProperties:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
namedThing:
type: object
properties:
name:
type: object
properties:
id:
type: integer
format: int64
# depth first should have this at the bottom, it's just a very long name
pneumonoultramicroscopicsilicovolcanoconiosisAntidisestablishmentarianism:
type: object
properties:
floccinaucinihilipilificationCreatedAt:
type: integer
format: int64

View file

@ -1,298 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: reference analysis
parameters:
someParam:
name: someParam
in: body
schema:
type: object
properties:
createdAt:
type: string
format: date-time
responses:
someResponse:
schema:
type: object
properties:
createdAt:
type: string
format: date-time
paths:
"/some/where/{id}":
parameters:
- name: id
in: path
type: integer
format: int32
- name: bodyId
in: body
schema:
type: array
items:
type: object
properties:
createdAt:
type: string
format: date-time
post:
responses:
default:
description: all good
get:
parameters:
- name: limit
in: query
type: integer
format: int32
required: false
- name: other
in: query
type: array
items:
type: object
properties:
id:
type: integer
format: int64
- name: body
in: body
schema:
type: object
properties:
record:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
- allOf:
- type: string
format: date
- type: object
properties:
id:
type: integer
format: int64
value:
type: string
name:
type: object
properties:
id:
type: integer
format: int64
createdAt:
type: string
format: date-time
responses:
default:
schema:
type: object
properties:
record:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
- allOf:
- type: string
format: date
- type: object
properties:
id:
type: integer
format: int64
value:
type: string
name:
type: object
properties:
id:
type: integer
format: int64
createdAt:
type: string
format: date-time
404:
schema:
$ref: "errors.yml#/error"
200:
schema:
type: object
properties:
record:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
- allOf:
- type: string
format: date
- type: object
properties:
id:
type: integer
format: int64
value:
type: string
name:
type: object
properties:
id:
type: integer
format: int64
createdAt:
type: string
format: date-time
"/other/place":
$ref: "external/pathItem.yml"
definitions:
namedAgain:
type: object
properties:
id:
type: integer
format: int64
datedTag:
allOf:
- type: string
format: date
- type: object
properties:
id:
type: integer
format: int64
value:
type: string
records:
type: array
items:
- type: object
properties:
createdAt:
type: string
format: date-time
datedRecords:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
datedTaggedRecords:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
additionalItems:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
otherRecords:
type: array
items:
type: object
properties:
createdAt:
type: string
format: date-time
tags:
type: object
additionalProperties:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
namedThing:
type: object
properties:
name:
type: object
properties:
id:
type: integer
format: int64
nestedThing:
type: object
properties:
record:
type: array
items:
- type: string
format: date-time
- type: object
properties:
createdAt:
type: string
format: date-time
- allOf:
- type: string
format: date
- type: object
additionalProperties:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
properties:
id:
type: integer
format: int64
value:
type: string
name:
type: object
properties:
id:
type: integer
format: int64
createdAt:
type: string
format: date-time

View file

@ -1,38 +0,0 @@
---
swagger: '2.0'
info:
title: no paths API
version: 4.1.7
schemes:
- http
basePath: /wooble
consumes:
- application/json
produces:
- application/json
paths:
definitions:
common:
type: object
required:
- id
properties:
id:
type: string
format: string
minLength: 1
parameters:
common:
name: common
in: query
type: string
responses:
401:
description: bar unauthorized
schema:
$ref: "#/definitions/error"
404:
description: bar resource not found
schema:
$ref: "#/definitions/error"

View file

@ -1,124 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: reference analysis
parameters:
idParam:
name: id
in: path
type: string
pattern: 'a[A-Za-Z0-9]+'
responses:
notFound:
headers:
ContentLength:
type: string
pattern: '[0-9]+'
schema:
$ref: "#/definitions/error"
paths:
"/some/where/{id}":
parameters:
- $ref: "#/parameters/idParam"
- name: name
in: query
pattern: 'b[A-Za-z0-9]+'
- name: bodyId
in: body
schema:
type: object
get:
parameters:
- name: filter
in: query
type: string
pattern: "[abc][0-9]+"
- name: other
in: query
type: array
items:
type: string
pattern: 'c[A-Za-z0-9]+'
- name: body
in: body
schema:
type: object
responses:
default:
schema:
type: object
404:
$ref: "#/responses/notFound"
200:
headers:
X-Request-Id:
type: string
pattern: 'd[A-Za-z0-9]+'
schema:
$ref: "#/definitions/tag"
"/other/place":
post:
parameters:
- name: body
in: body
schema:
type: object
properties:
value:
type: string
pattern: 'e[A-Za-z0-9]+'
responses:
default:
headers:
Via:
type: array
items:
type: string
pattern: '[A-Za-z]+'
200:
schema:
type: object
properties:
data:
type: string
pattern: "[0-9]+[abd]"
definitions:
named:
type: string
pattern: 'f[A-Za-z0-9]+'
tag:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
pattern: 'g[A-Za-z0-9]+'
audit:
$ref: "#/definitions/record"
record:
type: object
properties:
createdAt:
type: string
format: date-time
error:
type: object
required:
- id
- message
properties:
id:
type: integer
format: int64
readOnly: true
message:
type: string
readOnly: true

View file

@ -1,89 +0,0 @@
---
swagger: "2.0"
info:
version: "0.1.0"
title: reference analysis
parameters:
idParam:
name: id
in: path
type: integer
format: int32
limitParam:
name: limit
in: query
type: integer
format: int32
required: false
responses:
notFound:
schema:
$ref: "#/definitions/error"
paths:
"/some/where/{id}":
parameters:
- $ref: "#/parameters/idParam"
- name: bodyId
in: body
schema:
type: object
get:
parameters:
- $ref: "#/parameters/limitParam"
- name: other
in: query
type: array
items:
$ref: "#/definitions/named"
- name: body
in: body
schema:
type: object
responses:
default:
schema:
type: object
404:
$ref: "#/responses/notFound"
200:
schema:
$ref: "#/definitions/tag"
"/other/place":
$ref: "#/x-shared-path/getItems"
definitions:
named:
type: string
tag:
type: object
properties:
id:
type: integer
format: int64
value:
type: string
audit:
$ref: "#/definitions/record"
record:
type: object
properties:
createdAt:
type: string
format: date-time
error:
type: object
required:
- id
- message
properties:
id:
type: integer
format: int64
readOnly: true
message:
type: string
readOnly: true

View file

@ -1,181 +0,0 @@
---
swagger: '2.0'
info:
title: widget CRUD API
version: 4.2.0
schemes:
- http
basePath: /api
consumes:
- application/json
produces:
- application/json
paths:
/common:
get:
operationId: commonGet
summary: here to test path collisons
responses:
'200':
description: OK
schema:
$ref: "#/definitions/widget"
/widgets:
post:
operationId: create
summary: Create a new widget
parameters:
- name: info
in: body
schema:
$ref: "#/definitions/widget"
responses:
'201':
description: created
schema:
$ref: "#/definitions/widgetId"
default:
description: error
schema:
$ref: "#/definitions/error"
/widgets/{widgetid}:
get:
operationId: get
summary: Get a widget by id
parameters:
- $ref: "#/parameters/widgetid"
responses:
'200':
description: OK
schema:
$ref: "#/definitions/widget"
'401':
$ref: "#/responses/401"
'404':
$ref: "#/responses/404"
default:
description: error
schema:
$ref: "#/definitions/error"
delete:
operationId: delete
summary: delete a widget by id
parameters:
- name: widgetid
in: path
required: true
type: string
responses:
'200':
description: OK
'401':
description: unauthorized
schema:
$ref: "#/definitions/error"
'404':
description: resource not found
schema:
$ref: "#/definitions/error"
default:
description: error
schema:
$ref: "#/definitions/error"
post:
operationId: update
summary: update a widget by id
parameters:
- name: widgetid
in: path
required: true
type: string
- name: info
in: body
schema:
$ref: "#/definitions/widget"
responses:
'200':
description: OK
'401':
description: unauthorized
schema:
$ref: "#/definitions/error"
'404':
description: resource not found
schema:
$ref: "#/definitions/error"
default:
description: error
schema:
$ref: "#/definitions/error"
definitions:
common:
type: object
required:
- id
properties:
id:
type: string
format: string
minLength: 1
widget:
type: object
required:
- name
- description
properties:
id:
type: string
format: string
readOnly: true
name:
type: string
format: string
minLength: 1
description:
type: string
format: string
minLength: 1
widgetId:
type: object
required:
- id
properties:
id:
type: string
format: string
minLength: 1
error:
type: object
required:
- message
properties:
code:
type: string
format: string
message:
type: string
fields:
type: string
parameters:
common:
name: common
in: query
type: string
widgetid:
name: widgetid
in: path
required: true
type: string
responses:
401:
description: widget unauthorized
schema:
$ref: "#/definitions/error"
404:
description: widget resource not found
schema:
$ref: "#/definitions/error"

View file

@ -4,7 +4,9 @@ import (
"fmt"
"log"
"net/http"
"os"
"path"
"path/filepath"
"sort"
"strings"
@ -17,6 +19,8 @@ import (
// FlattenOpts configuration for flattening a swagger specification.
type FlattenOpts struct {
// If Expand is true, we skip flattening the spec and expand it instead
Expand bool
Spec *Spec
BasePath string
@ -42,8 +46,16 @@ func (f *FlattenOpts) Swagger() *swspec.Swagger {
// Move every inline schema to be a definition with an auto-generated name in a depth-first fashion.
// Rewritten schemas get a vendor extension x-go-gen-location so we know in which package they need to be rendered.
func Flatten(opts FlattenOpts) error {
// Make sure opts.BasePath is an absolute path
if !filepath.IsAbs(opts.BasePath) {
cwd, _ := os.Getwd()
opts.BasePath = filepath.Join(cwd, opts.BasePath)
}
// recursively expand responses, parameters, path items and items
err := swspec.ExpandSpec(opts.Swagger(), opts.ExpandOpts(true))
err := swspec.ExpandSpec(opts.Swagger(), &swspec.ExpandOptions{
RelativeBase: opts.BasePath,
SkipSchemas: !opts.Expand,
})
if err != nil {
return err
}
@ -68,7 +80,6 @@ func Flatten(opts FlattenOpts) error {
func nameInlinedSchemas(opts *FlattenOpts) error {
namer := &inlineSchemaNamer{Spec: opts.Swagger(), Operations: opRefsByRef(gatherOperations(opts.Spec, nil))}
depthFirst := sortDepthFirst(opts.Spec.allSchemas)
for _, key := range depthFirst {
sch := opts.Spec.allSchemas[key]
if sch.Schema != nil && sch.Schema.Ref.String() == "" && !sch.TopLevel { // inline schema
@ -200,9 +211,18 @@ func uniqifyName(definitions swspec.Definitions, name string) string {
return name
}
if _, ok := definitions[name]; !ok {
unq := true
for k := range definitions {
if strings.ToLower(k) == strings.ToLower(name) {
unq = false
break
}
}
if unq {
return name
}
name += "OAIGen"
var idx int
unique := name
@ -301,9 +321,27 @@ func (s splitKey) DefinitionName() string {
return s[1]
}
func (s splitKey) isKeyName(i int) bool {
if i <= 0 {
return false
}
count := 0
for idx := i - 1; idx > 0; idx-- {
if s[idx] != "properties" {
break
}
count++
}
if count%2 != 0 {
return true
}
return false
}
func (s splitKey) BuildName(segments []string, startIndex int, aschema *AnalyzedSchema) string {
for _, part := range s[startIndex:] {
if _, ignored := ignoredKeys[part]; !ignored {
for i, part := range s[startIndex:] {
if _, ignored := ignoredKeys[part]; !ignored || s.isKeyName(startIndex+i) {
if part == "items" || part == "additionalItems" {
if aschema.IsTuple || aschema.IsTupleWithExtra {
segments = append(segments, "tuple")
@ -540,7 +578,13 @@ func importExternalReferences(opts *FlattenOpts) error {
log.Printf("importing external schema for [%s] from %s", strings.Join(entry.Keys, ", "), refStr)
}
// resolve to actual schema
sch, err := swspec.ResolveRefWithBase(opts.Swagger(), &entry.Ref, opts.ExpandOpts(false))
sch := new(swspec.Schema)
sch.Ref = entry.Ref
expandOpts := swspec.ExpandOptions{
RelativeBase: opts.BasePath,
SkipSchemas: false,
}
err := swspec.ExpandSchemaWithBasePath(sch, nil, &expandOpts)
if err != nil {
return err
}

View file

@ -1,6 +1,7 @@
package analysis
import (
"os"
"path/filepath"
"strings"
"testing"
@ -485,9 +486,26 @@ func TestDepthFirstSort(t *testing.T) {
}
}
func TestBuildNameWithReservedKeyWord(t *testing.T) {
s := splitKey([]string{"definitions", "fullview", "properties", "properties"})
startIdx := 2
segments := []string{"fullview"}
newName := s.BuildName(segments, startIdx, nil)
assert.Equal(t, "fullview properties", newName)
s = splitKey([]string{"definitions", "fullview", "properties", "properties", "properties", "properties", "properties", "properties"})
newName = s.BuildName(segments, startIdx, nil)
assert.Equal(t, "fullview properties properties properties", newName)
}
func TestNameInlinedSchemas(t *testing.T) {
bp := filepath.Join(".", "fixtures", "nested_inline_schemas.yml")
cwd, _ := os.Getwd()
bp := filepath.Join(cwd, "fixtures", "nested_inline_schemas.yml")
sp, err := loadSpec(bp)
err = spec.ExpandSpec(sp, &spec.ExpandOptions{
RelativeBase: bp,
SkipSchemas: true,
})
assert.NoError(t, err)
values := []struct {
Key string
Location string
@ -578,7 +596,8 @@ func TestNameInlinedSchemas(t *testing.T) {
}
func TestFlatten(t *testing.T) {
bp := filepath.Join(".", "fixtures", "flatten.yml")
cwd, _ := os.Getwd()
bp := filepath.Join(cwd, "fixtures", "flatten.yml")
sp, err := loadSpec(bp)
values := []struct {
Key string
@ -763,6 +782,8 @@ func TestFlatten(t *testing.T) {
}
if assert.NoError(t, err) {
err := Flatten(FlattenOpts{Spec: New(sp), BasePath: bp})
//b, _ := sp.MarshalJSON()
//panic(string(b))
if assert.NoError(t, err) {
for i, v := range values {
pk := v.Key[1:]

View file

@ -99,8 +99,9 @@ func (a *AnalyzedSchema) inherits(other *AnalyzedSchema) {
func (a *AnalyzedSchema) inferFromRef() error {
if a.hasRef {
opts := &spec.ExpandOptions{RelativeBase: a.basePath}
sch, err := spec.ResolveRefWithBase(a.root, &a.schema.Ref, opts)
sch := new(spec.Schema)
sch.Ref = a.schema.Ref
err := spec.ExpandSchema(sch, a.root, nil)
if err != nil {
return err
}