networkfs API

networkfs API доступно по адресу http://nerc.itmo.ru/teaching/os/networkfs/.

Оглавление

Запросы

Все запросы осуществляются по методу GET. Аргументы передаются в GET-параметрах.

Путь составляется следующим образом: API_URL / :version / :token / :method. Пример: http://nerc.itmo.ru/teaching/os/networkfs/v1/12345678/fs/read?inode=1234.

Токен пропускается в методе token.issue. В названии метода точки заменяются на слеши.

Ответы

Система поддерживает два типа ответов.

Чтобы получить JSON-объект, нужно передать параметр json (с любым значением или без него) или заголовок Accept: application/json. Пример: http://nerc.itmo.ru/teaching/os/networkfs/v1/12345678/fs/list?inode=12345.

В случае ненулевого кода ошибки (status) ответ не возвращается.

Коды ошибок:

Методы

token.issue

Выдаёт новый токен. В новой файловой системе есть несколько файлов для примера.

Авторизация не требуется.

Пример запроса: http://nerc.itmo.ru/teaching/os/networkfs/v1/token/issue?json

Возвращаемое значение:

char token[16];

Возможные коды ошибок: 0.

fs.list

Возвращает информацию о директории.

Аргументы:

Возвращаемое значение:

struct entries {
    size_t entries_count;
    struct entry {
        unsigned char entry_type; // DT_DIR (4) or DT_REG (8)
        ino_t ino;
        char name[256];
    } entries[16];
}

Возможные коды ошибок: 0, 1, 3.

fs.create

Создаёт новый объект.

Аргументы:

Возвращаемое значение:

ino_t ino;

Возможные коды ошибок: 0, 1, 3, 5, 7.

fs.read

Читает содержимое файла.

Аргументы:

Возвращаемое значение:

struct content {
    u64 content_length;
    char content[content_length];
};

Возможные коды ошибок: 0, 1, 2.

fs.write

Записывает данные в файл.

Аргументы:

Возвращается только код ошибки.

Возможные коды ошибок: 0, 1, 2, 6.

Создаёт жёсткую ссылку.

Аргументы:

Возвращается только код ошибки.

Возможные коды ошибок: 0, 1, 2, 3, 5, 7.

Примечания:

Удаляет файл. Если на данную inode больше никто не ссылается, она также удаляется.

Аргументы:

Возвращается только код ошибки.

Возможные коды ошибок: 0, 1, 2, 3, 4.

fs.rmdir

Удаляет пустую директорию.

Аргументы:

Возвращается только код ошибки.

Возможные коды ошибок: 0, 1, 3, 4, 8.

fs.lookup

Возвращает информацию об объекте.

Аргументы:

Возвращаемое значение:

struct entry_info {
    unsigned char entry_type; // DT_DIR (4) or DT_REG (8)
    ino_t ino;
};

Возможные коды ошибок: 0, 1, 3, 4.