diff options
author | Jeffrey Armstrong <jeff@approximatrix.com> | 2021-05-04 16:44:20 -0400 |
---|---|---|
committer | Jeffrey Armstrong <jeff@approximatrix.com> | 2021-05-04 16:44:20 -0400 |
commit | 877b8876b078c8ab2632c17ab09e0ac0c2789c8a (patch) | |
tree | ba63e85cdaaef78aedc006854125312ff6607b21 /captain/http.f90 | |
parent | e789ce4a4bc1f0894a707d2a141bbf357e0ba2d5 (diff) | |
download | levitating-877b8876b078c8ab2632c17ab09e0ac0c2789c8a.tar.gz levitating-877b8876b078c8ab2632c17ab09e0ac0c2789c8a.zip |
Initial work on the CGI interface for web access.
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 |