An open API service indexing awesome lists of open source software.

https://github.com/romanpecheritsa/headhunterapi

This project is a tool for working with vacancies on the platform hh.ru .
https://github.com/romanpecheritsa/headhunterapi

dataclasses json pytest requests

Last synced: 2 months ago
JSON representation

This project is a tool for working with vacancies on the platform hh.ru .

Awesome Lists containing this project

README

          

# Проект по работе с API hh.ru
## Описание проекта

Этот проект представляет собой инструмент для работы с вакансиями на платформе hh.ru. Он позволяет получать информацию о вакансиях, сохранять её в файл, а также предоставляет возможность добавления, фильтрации и удаления записей.

## Требования к реализации

- **API для работы с hh.ru**: Реализован абстрактный класс `API` и конкретный класс `HhAPI`, который подключается к API hh.ru и получает вакансии согласно заданным параметрам.
- **Класс Vacancy**: Определяет атрибуты вакансии, включая название, ссылку, зарплату, описание и требования. Поддерживает методы сравнения вакансий по зарплате и валидацию данных.
- **JSON хранилище вакансий**: Абстрактный класс `VacancyStorage` определяет интерфейс для работы с вакансиями, а класс `JSONVacancyStorage` реализует этот интерфейс для работы с JSON файлом, обеспечивая сохранение, чтение и удаление вакансий.

## Интерфейс пользователя

Программа предоставляет функционал для взаимодействия с пользователем через консоль:

- Ввод поискового запроса для получения вакансий из hh.ru.
- Получение топ N вакансий по зарплате.
- Поучение вакансий по введенной зарплате.
- Поиск вакансий с ключевым словом в описании.
- Удаление по id вакансии
- Сохранение оторбранных вакансий в файл

## Принципы проектирования

- **Наследование**: Абстрактный класс и классы для работы с API платформ с вакансиями реализованы в соответствии с принципом наследования.
- **Инкапсуляция**: Класс для работы с вакансиями реализован с учетом принципа инкапсуляции и поддерживает методы сравнения вакансий.
- **SOLID**: Классы и сущности в проекте удовлетворяют первым двум принципам SOLID.

## Используемые библиотеки
* json
* os.path
* dataclasses
* abc
* requests
* pytest, pytest-cov
* typing

## Использование

Для использования программы необходимо установить `poetry` и выполнить следующие шаги:

1. Клонирование репозитория
```bash
git clone git@github.com:RomanPecheritsa/HeadHunterAPI.git
```
2. Установление зависимостей
```bash
poetry install
```
3. Запуск проекта
```text
python main.py
```

## Тестирование
Проект покрыт тестами (опционально, кроме user_interaction.py) для проверки корректности работы всех компонентов.
1. Запуск тестирования и показ процента покрытия
```bash
pytest --cov=api --cov=models --cov=storage --cov=utils/user_funcs.py --cov-report=term-missing
```