Skip to content

Latest commit

 

History

History
41 lines (30 loc) · 2.85 KB

github_API.md

File metadata and controls

41 lines (30 loc) · 2.85 KB

Task #14 - Работа с API github gists

Расширьте функциональность приложения Заметки работой с API github gists. В gist будет храниться JSON, описывающий список созданных заметок.

Описание API для работы с gists есть по ссылке.

  1. Реализовать загрузку списка заметок из gist. Файл в gist для хранения массива заметок в виде JSON должен называться ios-course-notes-db. Если при загрузке файл с именем ios-course-notes-db не был найден, показывать пустой список заметок.
  2. Реализовать возможность создания новой заметки из приложения и сохранения ее в gist в виде JSON в файл ios-course-notes-db.
  3. Реализовать возможность редактирования заметки в приложении (после редактирования необходимо отправлять запрос для обновления файла ios-course-notes-db в gist).
  4. Реализовать возможность удаления заметки из приложения (после удаления заметки необходимо отправлять запрос для обновления файла ios-course-notes-db в gist).
  5. Код необходимо помещать в операции, созданные в предыдущем задании.
  6. Все используемые зависимости должны содержаться в архиве проекта. Проверяющий не будет вызывать pod install.

Подсказки

Редактирование и удаление заметки требуется реализовать как обновление уже существующего файла в gist.

Информация о файлах gist в Codable структуре может быть представлена так:

struct Gist: Codable {
    let files: [String: GistFile]
    ...
}

struct GistFile: Codable {
    let filename: String
    let rawUrl: String

    enum CodingKeys: String, CodingKey { // Позволяет использовать названия полей в структуре отличающиеся от названий ключей в JSON
        case filename
        case rawUrl = "raw_url"
    }    
}

Получить массив заметок, загруженных по rawUrl из gist (через URLSession dataTask), можно так:

try? JSONDecoder().decode(Notebook.self, from: data)