Skip to content

uzbekdev1/restbin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

restbin

Rest binary to exporting tool

Обратная связь В случае необходимости, обратная связь будет предоставляться в форме issue в репозитории.

Предусловия Имеется набор бинарных файлов. Каждый имеет следующую структуру:

... где описывается такой структурой: [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct Header { public int version; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string type; } а такой: [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct TradeRecord { public int id; public int account; public double volume; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public string comment; } Храниться такие файлы могут по любому пути файловой системы.

Задание Требуется написать консольное приложение, которое будет принимать команды по протоколу HTTP и выполнять определённые действия (т.е. выступать в роли REST API сервера). Адрес и порт, который будет слушать приложение передаётся в качестве единственного аргумента командной строки, либо http://*:8080 по-умолчанию.

Конвертация При получении команды по HTTP приложение конвертирует бинарный файл по заданному в запросе пути в один из двух поддерживаемых форматов:

  • База данных SQLite либо SQL Server Compact (на усмотрение разработчика)
  • CSV Локальный путь к исходному файлу и формат предоставляется вызывающей стороной. После окончания конвертации должна быть возможность скачать сконвертированный файл по постоянной ссылке.

Скачивание Как было сказано ранее, должна быть возможность скачать сконвертированный файл.

Получение одной записи по ID В случае, если сконвертированный файл имеет формат БД, вызывающая сторона может запросить одну запись по имени файла и ID записи.

Удаление При получении команды по HTTP приложение удаляет файл, указанный в запросе. Можно удалять исключительно файлы, сгенерированные самой программой.

Некоторые требования и нюансы

Unit-тесты Можно написать пару-тройку тестов.

Качество кода Код должен быть легко читаем, а проект поддерживаемым.

Логгирование Программа должна логгировать свои действия в файл – какие команды откуда пришли, имена файлов, и т.д.

Размер исходных бинарных файлов Нужно иметь в виду, что размер файлов ограничен только свободным местом на диске, т.о. количество записей в одном файле может быть достаточно большим, а конвертация может занимать ощутимое количество времени.

Детали реализации На усмотрение разработчика. Comment on gist Sign in to comment or sign up to join this conversation on GitHub

  • Desktop version