web api golang task
взагалі для справжнього додатку необхідно при регістрації на сервісі верифікувати користувача через лист на пошту, що є окремим завданням, з пунктом пошуку сервісу повідомлень. Також необхідно перевірити чи існує така адреса базі даних (вважаємо, що це поле є унікальним), напевно, не варто видавати користувачу, що користувач з даною адресою існує. Перед цим необхідно перевірити чи може така адреса існувати, за допомогою бібліотек чи регулярних виразів.
з існуючих даних (ім*я, адреса пошти, та пароль) хешуватимемо пароль для захисту облікового запису користувачів при вторгненні в базу. При цьому можливо також використовувати сіль і тд, але в реальних застосунках краще використати надійні бібліотеки.
прийматимемо лише пошту та пароль, перевіряючи чи існує користувач з такою поштою, і в нього той самий хеш паролю. Отримаємо відповідь токен автентифікації, що житиме певний час.
для цього звернемося до API https://api.blockchain.com та https://bank.gov.ua. Перший виклик для отримання курсу біткоїна у долари, api дає можливість отримати курс і для гривень, але має затримку у курсі, саме тому використаємо сервіс нацбанку для отримання курсу долару у гривні. Перемножимо кількість_доларів * гривень у доларі й маємо результат.
було вирішено взяти json формат, за критерієм зручності читання. Також файл config.go містить методи з читання конфігу та ініціалізації (для зручності використання та можливості відловлювати помилки було обрано цей формат)
також був написаний модуль для читання csv файлів. Цей формат використовується для табличних даних, є досить зручним.