Skip to content
This repository was archived by the owner on Sep 6, 2023. It is now read-only.

fmipython/assignment-3-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание 3 - APIs

Условие на задачата

В директорията src/ има 1 файла main.py в който има 1 функция create_app. Заданието е да имплементирате функционалностите специфицирани в doc comment-a.

За да стартирате тестовете локално ще ви е необходимо да имате Personal Access Token. Този токен трябва да се запише в ENV variable GITHUB_TOKEN. За улеснение на процеса ако използвате Gitpod може да използвате командата just set-gh-token. Вторият вариант за стартиране на тестовете е да подадете токена си директно на pytest python -m pytest --token ghp_...

За заданието ще ви е полезна документацията на Flask. Както и документацията на GitHub Api.

Hints:

  • Flask работи на няколко нишки. Това означава че ако имате глобални променливи те трябва да са защитени срещу конкурентен достъп.
  • Фактът че има един src файл, не означава че той трябва да съдържа целия код :)

Работа със заданието

Препоръчваме използвамето на Gitpod, за който има автоматична конфигурация на средата.

В противен случай препоръчваме работа UNIX машина (или linux subsystem for windows)

Тези 2 инструмента улесняват работата по задачата (ако не ги ползвате ще трябва да създадете ръчно virtualenv и да пускате тестовете с python -m pytest):

Използване на direnv:

В директорията на проекта трябва да включите direnv

$ direnv allow

Използване на just

В директорията на проекта може да използвате:

$ just test # run all tests
$ just coverage # generate coverage information for the code
$ just coverage-html # generate coverage information in a html page (highlighting (un)covered lines)
$ just lint # Run the linter

Предистория/Мотивация

Създаването на API е една от най-честите задачи. Python е доста удобен инструмент за целта заради широкия набор от библиотеки.

В задачата ще имплементираме Proxy API към GitHub. Целта е да не имплементираме твърде сложна логика, а да се фокусираме върху работата с API-и. GitHub API има добри практики за работа и много подробна документация, което трябва да улесни работата. Заданието покрива доста от основните проблеми при работа с API-и като аутентикация, работа с хедъри/параметри, обработка на данни, засичане на метрики, и тн.

За повечето API-и се използват библиотеки за мониторинг като Prometheus. Тези библиотеки(системи) са доста полезни за да знаем кога нашата система върви и кога не. Но, са доста сложни и обемни. Затова в заданието ще си имплементираме някои основни функционалности за мониторинг на ендпойнтите.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •