1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
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
|