mgrshn / polis812

Test task

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Задача:

Написать класс для работы с API https://jsonplaceholder.typicode.com

Сделать методы для получения пользователей, их постов и заданий

Добавить метод работы с конкретным постом (добавление / редактирование / удаление)

--

Для работы с апи используется клиент JsonPlaceholderApi, реализующий методы для создания, чтения, обновления и удаления ресурсов.

Чтобы начать работу, создайте экземпляр класса:

$apiClient = new JsonPlaceholderApi();

Для получения всех пользователей/постов/задач реализованы методы:

$apiClient->getAllUsers();//вернет массив всех пользователей
$apiClient->getAllPosts();//вернет массив всех постов
$apiClient->getAllTasks();//вернет массив всех задач

Для получения одного или нескольких пользователей реализованы методы:

$apiClient->getUserById(int $id);//вернет конректного пользователя
$apiClient->getUsersByIds(array $ids);//вернет массив пользователей c id, перечисленными в массиве $ids

Пример использования:

$user = $apiClient->getUserById(3);
print_r($user);
Array
(
    [id] => 3
    [name] => Clementine Bauch
    [username] => Samantha
    [email] => Nathan@yesenia.net
    [address] => Array
        (
            [street] => Douglas Extension
            [suite] => Suite 847
            [city] => McKenziehaven
            [zipcode] => 59590-4157
            [geo] => Array
                (
                    [lat] => -68.6102
                    [lng] => -47.0653
                )

        )

    [phone] => 1-463-123-4447
    [website] => ramiro.info
    [company] => Array
        (
            [name] => Romaguera-Jacobson
            [catchPhrase] => Face to face bifurcated interface
            [bs] => e-enable strategic applications
        )

)
$users = $apiClient->getUsersByIds([200, 2, 423, 1, 23332]);
print_r($users);
Array
(
    [0] => Array
        (
            [id] => 2
            [name] => Ervin Howell
            [username] => Antonette
            [email] => Shanna@melissa.tv
            [address] => Array
                (
                    [street] => Victor Plains
                    [suite] => Suite 879
                    [city] => Wisokyburgh
                    [zipcode] => 90566-7771
                    [geo] => Array
                        (
                            [lat] => -43.9509
                            [lng] => -34.4618
                        )

                )

            [phone] => 010-692-6593 x09125
            [website] => anastasia.net
            [company] => Array
                (
                    [name] => Deckow-Crist
                    [catchPhrase] => Proactive didactic contingency
                    [bs] => synergize scalable supply-chains
                )

        )

    [1] => Array
        (
            [id] => 1
            [name] => Leanne Graham
            [username] => Bret
            [email] => Sincere@april.biz
            [address] => Array
                (
                    [street] => Kulas Light
                    [suite] => Apt. 556
                    [city] => Gwenborough
                    [zipcode] => 92998-3874
                    [geo] => Array
                        (
                            [lat] => -37.3159
                            [lng] => 81.1496
                        )

                )

            [phone] => 1-770-736-8031 x56442
            [website] => hildegard.org
            [company] => Array
                (
                    [name] => Romaguera-Crona
                    [catchPhrase] => Multi-layered client-server neural-net
                    [bs] => harness real-time e-markets
                )

        )

)

Для получения всех постов конкретного пользователя реализован метод:

$apiClient->getUserPosts(int $id);//вернет массив всех постов пользователя с указанным $id

Для получения всех задач конкретного пользователя реализован метод:

$apiClient->getUserTasks(int $id);//вернет массив всех задач пользователя с указанным $id

Пример использования:

$tasks = $apiClient->getUserTasks(1);
print_r($tasks);
Array
(
    [0] => Array
        (
            [userId] => 1
            [id] => 1
            [title] => delectus aut autem
            [completed] => 
        )

    [1] => Array
        (
            [userId] => 1
            [id] => 2
            [title] => quis ut nam facilis et officia qui
            [completed] => 
        )

    [2] => Array
        (
            [userId] => 1
            [id] => 3
            [title] => fugiat veniam minus
            [completed] => 
        )

    [3] => Array
        (
            [userId] => 1
            [id] => 4
            [title] => et porro tempora
            [completed] => 1
        )

    [4] => Array
        (
            [userId] => 1
            [id] => 5
            [title] => laboriosam mollitia et enim quasi adipisci quia provident illum
            [completed] => 
        )

    [5] => Array
        (
            [userId] => 1
            [id] => 6
            [title] => qui ullam ratione quibusdam voluptatem quia omnis
            [completed] => 
        )

    [6] => Array
        (
            [userId] => 1
            [id] => 7
            [title] => illo expedita consequatur quia in
            [completed] => 
        )

    [7] => Array
        (
            [userId] => 1
            [id] => 8
            [title] => quo adipisci enim quam ut ab
            [completed] => 1
        )

    [8] => Array
        (
            [userId] => 1
            [id] => 9
            [title] => molestiae perspiciatis ipsa
            [completed] => 
        )

    [9] => Array
        (
            [userId] => 1
            [id] => 10
            [title] => illo est ratione doloremque quia maiores aut
            [completed] => 1
        )

    [10] => Array
        (
            [userId] => 1
            [id] => 11
            [title] => vero rerum temporibus dolor
            [completed] => 1
        )

    [11] => Array
        (
            [userId] => 1
            [id] => 12
            [title] => ipsa repellendus fugit nisi
            [completed] => 1
        )

    [12] => Array
        (
            [userId] => 1
            [id] => 13
            [title] => et doloremque nulla
            [completed] => 
        )

    [13] => Array
        (
            [userId] => 1
            [id] => 14
            [title] => repellendus sunt dolores architecto voluptatum
            [completed] => 1
        )

    [14] => Array
        (
            [userId] => 1
            [id] => 15
            [title] => ab voluptatum amet voluptas
            [completed] => 1
        )

    [15] => Array
        (
            [userId] => 1
            [id] => 16
            [title] => accusamus eos facilis sint et aut voluptatem
            [completed] => 1
        )

    [16] => Array
        (
            [userId] => 1
            [id] => 17
            [title] => quo laboriosam deleniti aut qui
            [completed] => 1
        )

    [17] => Array
        (
            [userId] => 1
            [id] => 18
            [title] => dolorum est consequatur ea mollitia in culpa
            [completed] => 
        )

    [18] => Array
        (
            [userId] => 1
            [id] => 19
            [title] => molestiae ipsa aut voluptatibus pariatur dolor nihil
            [completed] => 1
        )

    [19] => Array
        (
            [userId] => 1
            [id] => 20
            [title] => ullam nobis libero sapiente ad optio sint
            [completed] => 1
        )

)

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

  1. Добавление нового поста
$apiClient->createPost(string $title, string $body, int $userId);//создаст новый пост, в качестве ответа вернется массив с созданным постом

Пример использования:

$newPost = $apiClient->createPost('new title', 'new body', 1001);
print_r($newPost);
Array
(
    [title] => new title
    [body] => new body
    [userId] => 1001
    [id] => 101
)
  1. Обновление существующего поста
$apiClient->updatePost(int $postId, string $title, string $body, string|int $userId);//полностью обновит пост, в качеств еответа вернется массив с измененным постом

Пример использования:

$updatedPost = $apiClient->updatePost('1', 'my new title', 'my new body', 1001);
print_r($updatedPost);
Array
(
    [title] => my new title
    [body] => my new body
    [userId] => 1001
    [id] => 1
)
  1. Изменение одного поля в существующем посте
$apiClient->patchPost(int $postId, string $fieldName, string $newValue);//изменит указанное в $fieldName поле значением $newValue и вернет массив с измененным постом. Если поля для изменения не существует - вернет пустой массив

Пример использования:

$patchedPost = $apiClient->patchPost('10', 'body', 'my new body');
print_r($patchedPost);
Array
(
    [userId] => 1
    [id] => 10
    [title] => optio molestias id quia eum
    [body] => my new body
)
  1. Удаление поста
$apiClient->deletePost(int $postId);//удалит пост с переданным $postId и вернет пустой массив. Вернет пустой массив, даже если поста не существовало

Пример использования:

$deletedPost= $apiClient->deletePost(1);
print_r($deteletPost);
Array
(
)

About

Test task


Languages

Language:PHP 100.0%