mirror of
https://github.com/pds-nest/nest.git
synced 2024-11-29 07:54:19 +00:00
Docs completed, JWT auth working on swagger.
This commit is contained in:
parent
7fd0441df4
commit
a7d0c3488f
9 changed files with 139 additions and 22 deletions
|
@ -33,7 +33,7 @@ class EmailParameterSchema(Schema):
|
||||||
|
|
||||||
|
|
||||||
class IntegerParameterSchema(Schema):
|
class IntegerParameterSchema(Schema):
|
||||||
id = fields.Integer(description="The target numeric id.")
|
rid = fields.Integer(description="The target numeric id.")
|
||||||
|
|
||||||
|
|
||||||
class CreateUser(Schema):
|
class CreateUser(Schema):
|
||||||
|
@ -51,7 +51,22 @@ class RepositorySchema(Schema):
|
||||||
owner = fields.Nested(UserSchema)
|
owner = fields.Nested(UserSchema)
|
||||||
|
|
||||||
|
|
||||||
|
class CreateRepository(Schema):
|
||||||
|
name = fields.String(description="The repository name.")
|
||||||
|
|
||||||
|
|
||||||
class RepositoryUpdate(Schema):
|
class RepositoryUpdate(Schema):
|
||||||
name = fields.String(description="If present, it changes the name of the repository.")
|
name = fields.String(description="If present, it changes the name of the repository.")
|
||||||
close = fields.String(description="If present, it closes the repository.")
|
close = fields.String(description="If present, it closes the repository.")
|
||||||
open = fields.String(description="If present, it opens the repository.")
|
open = fields.String(description="If present, it opens the repository.")
|
||||||
|
|
||||||
|
|
||||||
|
class ConditionSchema(Schema):
|
||||||
|
id = fields.Integer(description="The condition id.")
|
||||||
|
type = fields.Integer(description="The condition type.")
|
||||||
|
content = fields.String(description="The condition content. Meaning may change according to type.")
|
||||||
|
|
||||||
|
|
||||||
|
class CreateCondition(Schema):
|
||||||
|
type = fields.Integer(description="The condition type.")
|
||||||
|
content = fields.String(description="The condition content. Meaning may change according to type.")
|
|
@ -26,6 +26,9 @@ spec.components.schema("CreateUser", schema=CreateUser)
|
||||||
spec.components.schema("Repository", schema=RepositorySchema)
|
spec.components.schema("Repository", schema=RepositorySchema)
|
||||||
spec.components.schema("IntegerParameter", schema=IntegerParameterSchema)
|
spec.components.schema("IntegerParameter", schema=IntegerParameterSchema)
|
||||||
spec.components.schema("RepositoryUpdate", schema=RepositoryUpdate)
|
spec.components.schema("RepositoryUpdate", schema=RepositoryUpdate)
|
||||||
|
spec.components.schema("CreateRepository", schema=CreateRepository)
|
||||||
|
spec.components.schema("CreateCondition", schema=CreateCondition)
|
||||||
|
spec.components.schema("Condition", schema=ConditionSchema)
|
||||||
spec.components.security_scheme("jwt", {"type": "http", "scheme": "bearer", "bearerFormat": "JWT"})
|
spec.components.security_scheme("jwt", {"type": "http", "scheme": "bearer", "bearerFormat": "JWT"})
|
||||||
|
|
||||||
# add swagger tags that are used for endpoint annotation
|
# add swagger tags that are used for endpoint annotation
|
||||||
|
|
|
@ -7,13 +7,6 @@ from nest_backend.database import *
|
||||||
|
|
||||||
|
|
||||||
def page_doa():
|
def page_doa():
|
||||||
"""
|
|
||||||
---
|
|
||||||
get:
|
|
||||||
description: Test endpoint. If this page works, the server is fine.
|
|
||||||
tags:
|
|
||||||
- debug
|
|
||||||
"""
|
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
return "If you see this, the server is fine."
|
return "If you see this, the server is fine."
|
||||||
return "Hello there."
|
return "Hello there."
|
||||||
|
|
|
@ -10,9 +10,53 @@ from flask_cors import cross_origin
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
def page_repositories():
|
def page_repositories():
|
||||||
"""
|
"""
|
||||||
Repositories:
|
---
|
||||||
+ GET: [onlyActive], [onlyDead] -> Gets the list of all the user-related repos.
|
get:
|
||||||
+ POST: name -> Creates a new repository and returns it
|
summary: Get a list of repositories.
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: The list of the repositories related to the user (divided in "owner" and "spectator" dict keys), incapsulated in Success.
|
||||||
|
'403':
|
||||||
|
description: The user is not authorized.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
'401':
|
||||||
|
description: The user is not logged in.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
tags:
|
||||||
|
- repository-related
|
||||||
|
post:
|
||||||
|
summary: Creates a repository.
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: CreateRepository
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: The user has been created successfully.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Repository
|
||||||
|
'403':
|
||||||
|
description: The user is not authorized.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
'401':
|
||||||
|
description: The user is not logged in.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
tags:
|
||||||
|
- repository-related
|
||||||
"""
|
"""
|
||||||
user = find_user(get_jwt_identity())
|
user = find_user(get_jwt_identity())
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
|
@ -27,7 +71,7 @@ def page_repositories():
|
||||||
owner = owner.all()
|
owner = owner.all()
|
||||||
spectator = spectator.all()
|
spectator = spectator.all()
|
||||||
return json_success({"owner": [r.to_json() for r in owner],
|
return json_success({"owner": [r.to_json() for r in owner],
|
||||||
"spectator": [r.repository.to_json() for r in spectator]})
|
"spectator": [r.repository.to_json() for r in spectator]})
|
||||||
elif request.method == "POST":
|
elif request.method == "POST":
|
||||||
name = request.json.get("name")
|
name = request.json.get("name")
|
||||||
if not name:
|
if not name:
|
||||||
|
|
|
@ -17,7 +17,8 @@ def page_repository(rid):
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
schema: IntegerParameterSchema
|
schema: IntegerParameterSchema
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: The details about the requested schema. The schema is incapsulated in Success.
|
description: The details about the requested schema. The schema is incapsulated in Success.
|
||||||
|
@ -46,6 +47,8 @@ def page_repository(rid):
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
schema: IntegerParameterSchema
|
schema: IntegerParameterSchema
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: The repository has been deleted successfully.
|
description: The repository has been deleted successfully.
|
||||||
|
@ -73,6 +76,8 @@ def page_repository(rid):
|
||||||
- repository-related
|
- repository-related
|
||||||
patch:
|
patch:
|
||||||
summary: Updates a repository.
|
summary: Updates a repository.
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
content:
|
content:
|
||||||
|
|
|
@ -10,9 +10,61 @@ from flask_cors import cross_origin
|
||||||
@repository_auth
|
@repository_auth
|
||||||
def page_repository_conditions(rid):
|
def page_repository_conditions(rid):
|
||||||
"""
|
"""
|
||||||
Repository/Condition:
|
---
|
||||||
+ GET: Returns the conditions of the specified repo.
|
get:
|
||||||
+ POST: type, content -> Adds a condition and returns it.
|
summary: Get a list of a repository conditions.
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
schema: IntegerParameterSchema
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: List of Condition schemas, incapsulated in Success.
|
||||||
|
'401':
|
||||||
|
description: The user is not logged in.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
'403':
|
||||||
|
description: The user is not authorized.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
'404':
|
||||||
|
description: The repository could not be found.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
tags:
|
||||||
|
- repository-related
|
||||||
|
post:
|
||||||
|
summary: Creates a condition and attaches it to the repository.
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: CreateCondition
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: The user has been created successfully.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Condition
|
||||||
|
'403':
|
||||||
|
description: The user is not authorized.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
'401':
|
||||||
|
description: The user is not logged in.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema: Error
|
||||||
|
tags:
|
||||||
|
- repository-related
|
||||||
"""
|
"""
|
||||||
|
|
||||||
repository = Repository.query.filter_by(id=rid).first()
|
repository = Repository.query.filter_by(id=rid).first()
|
||||||
|
|
|
@ -15,7 +15,8 @@ def page_user(email):
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
schema: EmailParameterSchema
|
schema: EmailParameterSchema
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: The details about the requested user. The schema is incapsulated in Success.
|
description: The details about the requested user. The schema is incapsulated in Success.
|
||||||
|
@ -44,7 +45,8 @@ def page_user(email):
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
schema: EmailParameterSchema
|
schema: EmailParameterSchema
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: The user has been deleted successfully.
|
description: The user has been deleted successfully.
|
||||||
|
@ -81,7 +83,8 @@ def page_user(email):
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
schema: EmailParameterSchema
|
schema: EmailParameterSchema
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: The user has been updated successfully.
|
description: The user has been updated successfully.
|
||||||
|
|
|
@ -12,6 +12,8 @@ def page_users():
|
||||||
---
|
---
|
||||||
get:
|
get:
|
||||||
summary: Get a list of users.
|
summary: Get a list of users.
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: A list of User schemas, incapsulated in Success.
|
description: A list of User schemas, incapsulated in Success.
|
||||||
|
@ -26,10 +28,11 @@ def page_users():
|
||||||
application/json:
|
application/json:
|
||||||
schema: Error
|
schema: Error
|
||||||
tags:
|
tags:
|
||||||
- user-related
|
|
||||||
- admin-only
|
- admin-only
|
||||||
post:
|
post:
|
||||||
summary: Creates a user.
|
summary: Creates a user.
|
||||||
|
security:
|
||||||
|
- jwt: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
content:
|
content:
|
||||||
|
@ -53,7 +56,6 @@ def page_users():
|
||||||
schema: Error
|
schema: Error
|
||||||
tags:
|
tags:
|
||||||
- user-related
|
- user-related
|
||||||
- admin-only
|
|
||||||
"""
|
"""
|
||||||
user = find_user(get_jwt_identity())
|
user = find_user(get_jwt_identity())
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from openapi_spec_validator import validate_spec_url
|
from openapi_spec_validator import validate_spec_url
|
||||||
import os
|
import os
|
||||||
|
|
||||||
validate_spec_url("http://localhost:5000/api/v1/swagger.json")
|
validate_spec_url("http://localhost:5000/docs/swagger.json")
|
Loading…
Reference in a new issue