Something went wrong. Try again.
An HTTP server written in C++98 projects.intra.42.fr/projects/webserv
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950/* ************************************************************************** *//* *//* ::: :::::::: *//* get.cpp :+: :+: :+: *//* +:+ +:+ +:+ *//* By: bcausseq <bcausseq@42angouleme.fr> +#+ +:+ +#+ *//* +#+#+#+#+#+ +#+ *//* Created: 2026/09/27 22:50:05 by bcausseq #+# #+# *//* Updated: 2026/09/27 23:00:27 by bcausseq ### ########.fr *//* *//* ************************************************************************** */
#include "Header.hpp"#include "server/Client.hpp"#include "utils.hpp"
#include <cerrno>#include <fstream>
voidmethod_get(Header& h, Client& c){ std::string to_open = get_abs_path(c, h.get_path(), h.get_method());
if (to_open.empty()) { send_error_status(h, c, 405); return ; }
errno = 0; std::string line; std::ifstream ifs;
ifs.open(to_open.c_str());
if (!ifs.is_open()) { if (errno == ENOENT) send_error_status(h, c, 404); else if (errno == EACCES) send_error_status(h, c, 403); return ; }
c.set_append_out_buffer(h.get_version() + " 200 OK\r\n\r\n"); while (std::getline(ifs, line)) c.set_append_out_buffer(line);}