thaisnishimoto / 42sp_Webserv

1 stars 0 forks source link

Parsing header from message to structure #4

Open iuryr opened 1 week ago

iuryr commented 1 week ago
class Request
{
private:
  std::string _requestLine;
  std::map<std::string, std::string> _headerFields;
  std::string _body; //optional

  std::string _method;
  std::string _requestTarget;

public:
}

From RFC 9112

field-line: field-name ":" OWS field-value OWS CRLF Request can have 0 or more field-lines. Then, a CRLF

General Dynamic

iuryr commented 1 week ago

Considerando a sintaxe field-name: field-value, sabemos que, ao parsearmos field-value, devemos ignorar tanto espaços antecedentes e posteriores.

Na situação field-name: field-value1 field-value2, devemos guardar um único elemento, INCLUINDO os espaçoes entre field-value1 e field-value2.

Tratamento especial:

iuryr commented 1 week ago

Fluxo geral: 1.Utilizar getNextLineRN para capturar o resto da linha depois do \:

  1. Procurar por vírgulas -> cada vírgula separa um elemento
  2. Para cada elemento, ignorar espaços (incluindo htab) iniciais e finais. Os intermediários são parte do elemento.
  3. Guardar o elemento no map.
  4. Se houver mais de um elemento por field-name, o segundo elemento é concatenado ao primeiro sendo separado por vírgula

Obs: pensar numa maneira de "ignorar" vírgulas que estão dentro de aspas. Por exemplo em Date

iuryr commented 5 days ago

TODO


NEXT