Пример #1
0
 Request::Request( const Uri& value ) : m_pimpl( new detail::RequestImpl )
 {
     m_pimpl->m_uri = make_shared< Uri >( value );
     m_pimpl->m_path = value.get_path( );
     m_pimpl->m_port = value.get_port( );
     m_pimpl->m_host = value.get_authority( );
     m_pimpl->m_query_parameters = value.get_query_parameters( );
     m_pimpl->m_protocol = String::uppercase( value.get_scheme( ) );
     
     if ( m_pimpl->m_path.empty( ) )
     {
         m_pimpl->m_path = "/";
     }
     
     if ( m_pimpl->m_port == 0 )
     {
         m_pimpl->m_port = ( m_pimpl->m_protocol == "HTTPS" ) ? 443 : 80;
     }
 }
{
    multimap< string, string > expectation;
    
    Uri relative( "file://certs/server.key", true );
    REQUIRE( relative.get_port( ) == 0 );
    REQUIRE( relative.get_path( ) == "certs/server.key" );
    REQUIRE( relative.get_query( ) == "" );
    REQUIRE( relative.get_scheme( ) == "file" );
    REQUIRE( relative.get_fragment( ) == "" );
    REQUIRE( relative.get_username( ) == "" );
    REQUIRE( relative.get_password( ) == "" );
    REQUIRE( relative.get_authority( ) == "" );
    REQUIRE( relative.is_relative( ) == true );
    REQUIRE( relative.is_absolute( ) == false );
    REQUIRE( relative.to_string( ) == "file://certs/server.key" );
    REQUIRE( relative.get_query_parameters( ) == expectation );
    
    Uri absolute( "file:///certs/server.key" );
    REQUIRE( absolute.get_port( ) == 0 );
    REQUIRE( absolute.get_path( ) == "/certs/server.key" );
    REQUIRE( absolute.get_query( ) == "" );
    REQUIRE( absolute.get_scheme( ) == "file" );
    REQUIRE( absolute.get_fragment( ) == "" );
    REQUIRE( absolute.get_username( ) == "" );
    REQUIRE( absolute.get_password( ) == "" );
    REQUIRE( absolute.get_authority( ) == "" );
    REQUIRE( absolute.is_relative( ) == false );
    REQUIRE( absolute.is_absolute( ) == true );
    REQUIRE( absolute.to_string( ) == "file:///certs/server.key" );
    REQUIRE( absolute.get_query_parameters( ) == expectation );
}