diff --git a/tools/ws/heroes.py b/tools/ws/heroes.py index cf099d7..4e8c5e7 100644 --- a/tools/ws/heroes.py +++ b/tools/ws/heroes.py @@ -12,12 +12,11 @@ HEROES = [ def get_hero(id=None): - if id: - try: - hero = next(x for x in HEROES if x["id"] == id) - return { "id": hero["id"], "name": hero["name"] } - except StopIteration: - return 'Hero not found', 404 + try: + hero = next(x for x in HEROES if x["id"] == id) + return { "id": hero["id"], "name": hero["name"] } + except StopIteration: + return 'Hero not found', 404 def get_heroes(): @@ -25,5 +24,19 @@ def get_heroes(): return HEROES else: return 'No heroes available', 404 - +def put_hero(id=None, hero=None): + if id: + # update + try: + heroToUpdate = next(x for x in HEROES if x["id"] == id) + heroToUpdate["name"] = hero["name"] + return 'Hero updated', 200 + except StopIteration: + return 'Hero not found', 404 + else: + # insert + newHeroId = len(HEROES) + hero["id"] = newHeroId + HEROES.append(hero) + return 'Hero inserted', 201 diff --git a/tools/ws/my_api.yaml b/tools/ws/my_api.yaml index 1a25620..213771d 100644 --- a/tools/ws/my_api.yaml +++ b/tools/ws/my_api.yaml @@ -37,6 +37,28 @@ paths: $ref: '#/definitions/Hero' 404: description: Hero not found + put: + operationId: heroes.put_hero + summary: Insert or update a hero + parameters: + - name: id + in: query + type: integer + required: false + - name: hero + in: body + required: true + schema: + $ref: '#/definitions/Hero' + responses: + 200: + description: Hero updated + 201: + description: New hero created + 403: + description: Some error + 404: + description: Hero not found /heroes: get: operationId: heroes.get_heroes