module http implicit none integer, parameter::HTTP_CODE_SUCCESS = 200 integer, parameter::HTTP_CODE_NOTFOUND = 404 integer, parameter::HTTP_CODE_FAILURE = 500 integer, parameter::HTTP_CODE_REDIRECT = 302 contains subroutine write_status(outunit, code) use logging implicit none integer, intent(in)::outunit, code character(len=32)::confirm write(outunit,'(A7,1X,I3)') "Status:", code write(confirm,'(A7,1X,I3)') "Status:", code call write_log(trim(confirm), LOG_INFO) end subroutine write_status subroutine write_response_headers(outunit, code, filesize, mimetype) use logging implicit none integer, intent(in)::outunit, code, filesize character(*), intent(in)::mimetype character(16)::num_txt character(len=128)::confirm call write_status(outunit, code) write(num_txt, '(I16)') filesize write(outunit, '(A15,1X)', advance='no') "Content-Length:" write(outunit, *) trim(adjustl(num_txt)) write(outunit, '(A13,1X)', advance='no') "Content-Type:" write(outunit, *) trim(mimetype)//new_line(' ') end subroutine write_response_headers subroutine write_redirect(outunit, code, location) implicit none integer, intent(in)::outunit, code character(*), intent(in)::location call write_status(outunit, code) write(outunit, '(A9,1X)', advance='no') "Location:" write(outunit, *) trim(location)//new_line(' ') end subroutine write_redirect end module http