Skip to content
Snippets Groups Projects
client_main.cpp 1.52 KiB
Newer Older
#include "client.hpp"
#include "definitions.hpp"
#include "wordle-de.pb.h"
#include <iostream>
#include <string>

using namespace wordle_de;
std::string getUsernameFromInput() {
  std::string username;
  std::getline(std::cin, username);
  if (username.empty()) {
    throw "empty username is not allowed";
  }
  if (username.length() > USERNAME_MAX_LENGTH) {
    throw "username is too long";
  }
  return username;
}

std::string getPasswordFromInput() {
  std::string password;
  std::getline(std::cin, password);
  if (password.empty()) {
    throw "empty password is not allowed";
  }
  if (password.length() < 8) {
    throw "password is too short";
  }
  return password;
}

int main() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;
  std::cout << "Willkommen zu Wordle auf Deutsch!" << std::endl;
  std::cout << "Bitte gib deinen Benutzernamen und Passwort ein:" << std::endl;
  std::string username, password;
  while (true) {
    try {
      std::cout << "Benutzername: ";
      username = getUsernameFromInput();
      std::cout << "Passwort: ";
      password = getPasswordFromInput();
      break;
    } catch (const char *error) {
      std::cout << "Error: " << error << std::endl;
    }
  }

  // try to connect to server
  auto cl = Client();
  std::cout << "Connected to server!" << std::endl;
  std::cout << "Logging in..." << std::endl;
  auto msg = Message();

  auto login = new Login();
  login->set_username(username);
  login->set_password(password);
  msg.set_allocated_login(login);
  cl.sendMessage(msg.SerializeAsString().c_str());
}