-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLibFastAPI.py
More file actions
64 lines (56 loc) · 6.29 KB
/
Copy pathLibFastAPI.py
File metadata and controls
64 lines (56 loc) · 6.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from fastapi import FastAPI, HTTPException
from typing import Union
import uvicorn
app = FastAPI()
works = dict(Ремарк = {'Ночь в Лиссабоне': "Я не сводил глаз с корабля.\
Ярко освещенный, он стоял поодаль от набережной, на Тежу.\
В Лиссабоне я находился уже неделю, но пока еще не привык к беспечному свету этого города.\
В тех краях, откуда я приехал, города по ночам тонули во мраке, черные, как угольные копи,\
а фонарь в темноте был опаснее чумы в Средние века.\
Я приехал из Европы двадцатого столетия.", 'Тени в раю': "В конце войны судьба забросила меня в Нью-Йорк.\
Пятьдесят седьмая улица и ее окрестности стали для меня, изгнанника,\
с трудом объяснявшегося на языке этой страны, почти что второй родиной.\
Позади расстилался долгий, полный опасностей путь", 'Три товарища': "Небо, еще не закопченное дымом печных труб,\
отливало латунной желтизной.\
Над крышами фабрики оно светилось сильнее. Солнце вот-вот должно было взойти.\
Я взглянул на часы. Восьми еще нет. Без четверти."}, Хемингуэй = {'Прощай, оружие': "Я помню все эти события и все места,\
где мы жили, и что у нас было в тот год хорошего и что было плохого. Но еще лучше я помню ту жизнь, которой я жил в книге\
и которую я сам сочинял изо дня в день.", 'Фиеста': "Роберт Кон когда-то был чемпионом Принстонского университета в среднем весе.\
Не могу сказать, что это звание сильно импонирует мне, но для Кона оно значило очень много. Он не имел склонности к боксу,\
напротив – бокс претил ему, но он усердно и не щадя себя учился боксировать, чтобы избавиться от робости и чувства собственной\
неполноценности,", 'По ком звонит колокол': "Упершись подбородком в сложенные руки,\
он лежал на устилавшем землю мягком лесном ковре из бурой хвои, а высоко над его головой ветер раскачивал верхушки сосен.\
Там, где он лежал, склон был пологим, но дальше круто срывался вниз, и было видно, как по ущелью вьется черная лента\
битумной дороги. Вдоль дороги бежала речушка"}, Достоевский = {'Преступление и наказание': "Он благополучно избегнул встречи с своею\
хозяйкой на лестнице. Каморка его приходилась под самою кровлей высокого пятиэтажного дома и походила более на шкаф, чем на\
квартиру. Квартирная же хозяйка его, у которой он нанимал эту каморку с обедом и прислугой, помещалась одною лестницей ниже,\
в отдельной квартире, и каждый раз, при выходе на улицу,", 'Идиот': "В конце ноября, в оттепель, часов в девять утра, поезд\
Петербургско-Варшавской железной дороги на всех парах подходил к Петербургу. Было так сыро и туманно, что насилу рассвело;\
в десяти шагах, вправо и влево от дороги, трудно было разглядеть хоть что-нибудь из окон вагона.", 'Белые ночи': "Была чудная ночь,\
такая ночь, которая разве только и может быть тогда, когда мы молоды, любезный читатель. Небо было такое звездное, такое светлое небо, что взглянув на него,"})
@app.get("/library", tags = ["Список авторов"])
def library():
return "Ремарк | Достоевский | Хемингуэй"
@app.get("/library/{author}", tags = ["Список работ автора"])
def author(author: str) -> str:
if author == "Ремарк":
return "Ночь в Лиссабоне | Тени в раю | Три товарища"
elif author == "Достоевский":
return "Преступление и наказание | Идиот | Белые ночи"
elif author == "Хемингуэй":
return "Прощай, оружие | Фиеста | По ком звонит колокол"
else:
raise HTTPException(status_code = 404, detail = "Author not found")
@app.get('/write/{author}/{work}', tags = ["Открыть конкретное произведение"])
def work(author: str, book: str, n: Union[int, None] = None, a: Union[int, None] = None):
if author in works: #проверка существования автора
aut = works[author]
if book in aut: #проверка существования произведения
text = (works[author][book])
return text[n:a] #срез текста от n по a
else:
raise HTTPException(status_code = 404, detail = "Book not found or bad interval")
else:
raise HTTPException(status_code = 404, detail = "Author not found")
if __name__ == '__main__':
uvicorn.run(app, host = "127.0.0.1", port = "8000")