module talking implicit none contains function request_to_file(url, filename) result(status_code) use utilities use gemini_protocol implicit none character(*), intent(in)::url character(*), intent(in)::filename character(64)::return_type integer::unit_number integer::status_code integer::istatus character(len=:), allocatable::mod_url allocate(character(len=len_trim(url)) :: mod_url) mod_url = url open(newunit=unit_number, file=filename, status='UNKNOWN', & access='STREAM', form='UNFORMATTED', iostat=istatus) if(istatus == 0) then status_code = request_url(mod_url, unit_number, return_type) else status_code = STATUS_LOCALFAIL end if close(unit_number) deallocate(mod_url) end function request_to_file function request_to_temporary_file(url, filename) result(status_code) use utilities, only: generate_temporary_filename use gemini_protocol, only: STATUS_LOCALFAIL implicit none character(*), intent(in)::url character(:), pointer::filename integer::status_code filename => generate_temporary_filename() if(.not. associated(filename)) then status_code = STATUS_LOCALFAIL else status_code = request_to_file(url, filename) end if end function request_to_temporary_file function request_to_ignored(url) result(status_code) use gemini_protocol implicit none character(*), intent(in)::url integer::status_code integer::io character(64)::return_type character(len=:), allocatable::mod_url allocate(character(len=len_trim(url)) :: mod_url) mod_url = url open(newunit=io, form="formatted", status="scratch", access='stream') status_code = request_url(mod_url, io, return_type) close(io) deallocate(mod_url) end function request_to_ignored function send_file(url, filename) result(status_code) use gemini_protocol use config, only: token implicit none character(*), intent(in)::url character(*), intent(in)::filename integer::status_code integer::io character(64)::return_type character(len=:), allocatable::mod_url integer(kind=8)::file_size integer::unit_number, istatus allocate(character(len=len_trim(url)) :: mod_url) mod_url = url inquire(file=filename, size=file_size) open(newunit=unit_number, file=trim(filename), status='UNKNOWN', & access='STREAM', form='UNFORMATTED', iostat=istatus) if(istatus == 0) then status_code = titan_post_url(mod_url, unit_number, file_size, token) close(unit_number) else status_code = STATUS_LOCALFAIL end if deallocate(mod_url) end function send_file end module talking