This function create a
request_typeobject and populates it. The function returns theresponse_typeobject containing the server's response.
Note :
If the
headerargument is not provided, defaultuser-agentheader is set tohttp-client/0.1.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | url | Specifies the  | ||
| integer, | intent(in), | optional | :: | method | Specifies the HTTP  | |
| type(pair_type), | intent(in), | optional | :: | header(:) | Specifies the request  | |
| character(len=*), | intent(in), | optional | :: | data | Specifies the  | |
| type(pair_type), | intent(in), | optional | :: | form(:) | Specifies the  | |
| type(pair_type), | intent(in), | optional | :: | file | Specifies the  | |
| integer, | intent(in), | optional | :: | timeout | 
 | |
| type(pair_type), | intent(in), | optional | :: | auth | stores the  | 
Stores the server's response.
    function new_request(url, method, header, data, form, file, timeout, auth) result(response)
    
        !!> This function create a `request_type` object and populates it.
        !!> The function returns the `response_type` object containing the
        !!> **server's response**.
        !!____
        !!> #### Note :
        !!> If the `header` argument is not provided, **default `user-agent`
        !!> header is set to `http-client/0.1`**.
    
        integer, intent(in), optional :: method
            !! Specifies the HTTP `method` to use for the request. 
            !! The **default value is 1**, which corresponds to the **`HTTP_GET`** method.
        character(len=*), intent(in) :: url
            !! Specifies the **`URL`** of the server.
        character(len=*), intent(in), optional :: data
            !! Specifies the **`data`** that needs to be sent to the server.
        type(pair_type), intent(in), optional :: header(:)
            !! Specifies the **request `headers`** that need to be sent to the server.
        type(pair_type), intent(in), optional :: form(:)
            !! Specifies the **`form data`** that needs to be sent to the server.
        type(pair_type), intent(in), optional :: file
            !! Specifies the **`file`** that needs to be sent to the server.
        integer, intent(in), optional :: timeout
            !! **`Timeout`** value for the request in **seconds**.
        type(pair_type), intent(in), optional :: auth
            !! stores the `username` and `password` for **`authentication`** purposes.
        type(response_type) :: response
            !! Stores the server's **`response`**.
        type(request_type) :: request
        type(client_type) :: client
        integer :: i
        ! setting request url
        request%url = url
        ! Set default HTTP method.
        request%method = optval(method, 1)
        
        ! Set request header
        if (present(header)) then
            request%header = header
            ! Set default request headers.
            if (.not. pair_has_name(header, 'user-agent')) then
              call append_pair(request%header, 'user-agent', 'http-client/'//VERSION_STRING)
            end if
        else
            ! Set default request headers.
            request%header = [pair_type('user-agent', 'http-client/'//VERSION_STRING)]
        end if
        ! setting the request data to be send
        if(present(data)) then
            request%data = data
        end if
        
        ! setting request form
        if(present(form)) then
            request%form = form
        end if
        ! setting request file
        if(present(file)) then
            request%file = file
        end if
        ! Set request timeout.
        request%timeout = optval(timeout, -1)
                
        ! setting username and password for Authentication
        if(present(auth)) then
            request%auth = auth
        end if
        ! Populates the response 
        client = client_type(request=request)
        response = client%client_get_response()
    end function new_request