diff options
Diffstat (limited to 'captain/http.f90')
-rw-r--r-- | captain/http.f90 | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/captain/http.f90 b/captain/http.f90 new file mode 100644 index 0000000..08f0fbd --- /dev/null +++ b/captain/http.f90 @@ -0,0 +1,52 @@ +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) + implicit none + + integer, intent(in)::outunit, code + write(outunit,'(A7,1X,I3)') "Status:", code + + end subroutine write_status + + subroutine write_response_headers(outunit, code, filesize, mimetype) + implicit none + + integer, intent(in)::outunit, code, filesize + character(*), intent(in)::mimetype + + character(16)::num_txt + + 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 + +
\ No newline at end of file |