#define SKULLLABS_AUTH_IMPLEMENTATION
#include "skulllabs_auth.hpp"

#include <ctime>
#include <iomanip>
#include <iostream>
#include <string>

constexpr const char* PROJECT_KEY = "slk_REPLACE_WITH_YOUR_PROJECT_KEY";

int main() {
    skulllabs::AuthClient auth(PROJECT_KEY);

    std::cout << "=== Skull Labs Auth ===\n";
    std::string username, password;
    std::cout << "username: ";
    std::getline(std::cin, username);
    std::cout << "password: ";
    std::getline(std::cin, password);

    auto session = auth.login(username, password);
    if (!session.ok) {
        std::cerr << "login failed: " << session.error << "\n";
        return 1;
    }

    std::cout << "\n--- Welcome ---\n";
    std::cout << "username: " << session.user.username << "\n";
    if (session.user.expires_at.has_value()) {
        std::time_t t = session.user.expires_at.value() / 1000;
        std::cout << "valid until: " << std::put_time(std::localtime(&t), "%d %b %Y, %H:%M") << "\n";
    } else {
        std::cout << "valid until: lifetime\n";
    }
    std::cout << "session: " << session.session_id << "\n";
    return 0;
}
