Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix register msg #135

Merged
merged 3 commits into from
Apr 27, 2024
Merged

fix register msg #135

merged 3 commits into from
Apr 27, 2024

Conversation

Atrujillo02
Copy link
Collaborator

@Atrujillo02 Atrujillo02 commented Apr 25, 2024

2024-04-25_16-32
Este es un ejemplo para que veáis como ha quedado, he seguido los pasos de las rpl y de la issue.

He tenido que añadir dos librerias ctime para el tema del tiempo y iomanip para setfill(añade 0 para terminar de llenar el numero y quede bien ej: "07") y setw(determina el año del numero).

@Atrujillo02 Atrujillo02 linked an issue Apr 25, 2024 that may be closed by this pull request
@Atrujillo02 Atrujillo02 self-assigned this Apr 25, 2024
@Atrujillo02 Atrujillo02 added the bug Something isn't working label Apr 25, 2024
Copy link
Collaborator

@ruzafa8 ruzafa8 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Muy buen trabajo!! Ole ese formateo de fechas. Revisate el par de comentarios de formato de código y vemos lo de mandarlo en varios mensajes, vaya a ser que lo considere solo 1 el cliente y no funcione bien...

includes/libsUtils.hpp Outdated Show resolved Hide resolved
includes/libsUtils.hpp Outdated Show resolved Hide resolved
@@ -62,6 +64,10 @@
// # define RPL_AWAY(nickname, username, hostname, awayMessage) USER_ID(nickname, username, hostname) + " " + (nickname) + " :" + (awayMessage)
// # define RPL_CHANNEL_MODE_IS(nickname, username, hostname, channel, mode, modeParams) USER_ID(nickname, username, hostname) + " " + (channel) + " " + (mode) + " " + (modeParams)
# define RPL_END_OF_NAMES(nickname, usermane, hostname, channel) USER_ID(nickname, username, hostname) + " " + (channel) + " :End of NAMES list."
# define RPL_WELCOME(nickname, username, hostname) std::string("Welcome to the Internet Relay Network ") + USER_ID(nickname, username, hostname)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hace falta el std::string??

Suggested change
# define RPL_WELCOME(nickname, username, hostname) std::string("Welcome to the Internet Relay Network ") + USER_ID(nickname, username, hostname)
# define RPL_WELCOME(nickname, username, hostname) "Welcome to the Internet Relay Network " + USER_ID(nickname, username, hostname)

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A mi eso me pesaba con la de los rpl que tengo que hacer. Es necesario porque coge el USER_ID como un string y el mensaje del principio como un const char * o algo así. En mi tarea lo arreglaré

Damos por bueno esto, me traigo los cambios y lo arreglo con el resto

src/User.cpp Outdated
std::string created = RPL_CREATED(date);
std::string myInfo = RPL_MYINFO(_serverName, userModes, channelModes);

std::string response = welcome + "\n" + yourHost + "\n" + created + "\n" + myInfo;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

creo que en vez de enviar 1 mensaje deberíamos de mandar 4, porque cada uno debe de estar terminado por \r\n ... creo

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

si, lo que dice @ruzafa8

includes/libsUtils.hpp Outdated Show resolved Hide resolved
includes/libsUtils.hpp Outdated Show resolved Hide resolved
includes/libsUtils.hpp Outdated Show resolved Hide resolved
@@ -75,5 +81,6 @@

std::vector<std::string> split(const std::string &s, char delim);
bool isNumber(const std::string& s);
std::string getCurrentDate();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

std::string getCurrentDate() const;

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si lo pongo da error, según copilot dice que no tiene sentido poner const en una función no miembro, porque no hay objeto para modificar. Este es el error"a type qualifier is not allowed on a nonmember function"

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah claro, que es el libUtils. Cuando hagas el singleton añadelo a todas las funciones

<< std::setfill('0') << std::setw(2) << now->tm_hour << ':'
<< std::setfill('0') << std::setw(2) << now->tm_min << ':'
<< std::setfill('0') << std::setw(2) << now->tm_sec << " UTC";
return oss.str();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se puede hacer mucho más sencillo con la función de ctime strftime, que literalmente da formato a la fecha.
En palabras de copilot:

En C++98, puedes usar la biblioteca para trabajar con fechas y horas. Sin embargo, para formatear la fecha y hora en el formato específico que mencionaste (Sun, 14 Jan 2024 22:56:48 UTC), necesitarás usar la función strftime, que permite especificar un formato de fecha y hora personalizado.
Aquí te muestro cómo puedes hacerlo:

`
// Obtener la hora actual

std::time_t t = std::time(0);
std::tm* now = std::localtime(&t);

// Buffer para almacenar la fecha y hora formateada
char buffer[100];

// Formato de fecha y hora: Sun, 14 Jan 2024 22:56:48 UTC
strftime(buffer, sizeof(buffer), "%a, %d %b %Y %H:%M:%S UTC", now);`

En este código, %a se reemplaza por el nombre abreviado del día de la semana, %d por el día del mes, %b por el nombre abreviado del mes, %Y por el año, %H por la hora, %M por el minuto y %S por el segundo.

Tendrías que hacer una conversión del buffer a string y ya

@Atrujillo02
Copy link
Collaborator Author

Ya he añadido todos los cambios que me habeis dicho menos el del const en el getCurrentDate.
2024-04-25_20-04

@@ -75,5 +81,6 @@

std::vector<std::string> split(const std::string &s, char delim);
bool isNumber(const std::string& s);
std::string getCurrentDate();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah claro, que es el libUtils. Cuando hagas el singleton añadelo a todas las funciones

src/User.cpp Outdated
std::string channelModes = "iklot";

std::string welcome = RPL_WELCOME(_nickname, _username, _hostname) + "\r\n";
std::string yourHost = RPL_YOURHOST(_serverName) + "\r\n";
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tu no tienes que poner el \r\n, eso ya se está gestionando por otro lado

src/User.cpp Outdated
std::string myInfo = RPL_MYINFO(_serverName, channelModes) + "\r\n";

Server& server = Server::getInstance();
server.sendMessage(this->getFd(), welcome);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

elimina la variable welcome y ponlo aqui el rpl como parametro (igual en el resto)

Copy link
Owner

@jdomingu98 jdomingu98 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Te lo doy por ok. Lo que falta (unos detalles de clean code sin importancia) ya lo arreglo yo en mi rama, que me hace falta los rpl nuevos

Copy link
Collaborator

@ruzafa8 ruzafa8 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfecto 🗡️

@Atrujillo02 Atrujillo02 merged commit 0bd920f into master Apr 27, 2024
1 check passed
@Atrujillo02 Atrujillo02 deleted the 127-bug-rpl_welcome branch April 27, 2024 11:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] RPL_WELCOME
3 participants