Don't make wxWebRequest::SplitParameters() public
They're not necessary to use this class and we may consider exporting them later, possibly with a better API and more tests, if really needed. Also do change their API slightly by leaving only a single function and returning the value instead of using an out parameter for it to make it simpler to use.
This commit is contained in:
@@ -93,12 +93,6 @@ public:
|
|||||||
|
|
||||||
void ReportDataReceived(size_t sizeReceived);
|
void ReportDataReceived(size_t sizeReceived);
|
||||||
|
|
||||||
static void SplitParameters(const wxString& s, wxString& value,
|
|
||||||
wxWebRequestHeaderMap& parameters);
|
|
||||||
|
|
||||||
static void SplitParameters(const wxString::const_iterator& begin,
|
|
||||||
const wxString::const_iterator& end, wxWebRequestHeaderMap& parameters);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxString m_method;
|
wxString m_method;
|
||||||
Storage m_storage;
|
Storage m_storage;
|
||||||
|
@@ -328,36 +328,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
wxFileOffset GetBytesExpectedToReceive() const;
|
wxFileOffset GetBytesExpectedToReceive() const;
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
/**
|
|
||||||
Splits the given string into a value and a collection of parameters.
|
|
||||||
Parameters are expected to be separated by semicolons.
|
|
||||||
Enclosing quotes of parameter values are removed.
|
|
||||||
|
|
||||||
For example, the string
|
|
||||||
@code
|
|
||||||
multipart/mixed; boundary="MIME_boundary_01234567"
|
|
||||||
@endcode
|
|
||||||
is split into the value
|
|
||||||
@code
|
|
||||||
multipart/mixed
|
|
||||||
@endcode
|
|
||||||
and the parameter
|
|
||||||
@code
|
|
||||||
boundary -> MIME_boundary_01234567
|
|
||||||
@endcode
|
|
||||||
*/
|
|
||||||
static void SplitParameters(const wxString& s, wxString& value,
|
|
||||||
wxWebRequestHeaderMap& parameters);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Splits the given string into a collection of parameters.
|
|
||||||
Parameters are expected to be separated by semicolons.
|
|
||||||
|
|
||||||
Enclosing quotes of parameter values are removed.
|
|
||||||
*/
|
|
||||||
static void SplitParameters(const wxString::const_iterator& begin,
|
|
||||||
const wxString::const_iterator& end, wxWebRequestHeaderMap& parameters);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -144,11 +144,15 @@ void wxWebRequest::ReportDataReceived(size_t sizeReceived)
|
|||||||
// The SplitParamaters implementation is adapted to wxWidgets
|
// The SplitParamaters implementation is adapted to wxWidgets
|
||||||
// from Poco::Net::MessageHeader::splitParameters
|
// from Poco::Net::MessageHeader::splitParameters
|
||||||
|
|
||||||
void wxWebRequest::SplitParameters(const wxString& s, wxString& value,
|
// This function is used in a unit test, so define it inside wxPrivate
|
||||||
wxWebRequestHeaderMap& parameters)
|
// namespace and an anonymous one.
|
||||||
|
namespace wxPrivate
|
||||||
{
|
{
|
||||||
value.clear();
|
|
||||||
parameters.clear();
|
WXDLLIMPEXP_NET wxString
|
||||||
|
SplitParameters(const wxString& s, wxWebRequestHeaderMap& parameters)
|
||||||
|
{
|
||||||
|
wxString value;
|
||||||
wxString::const_iterator it = s.begin();
|
wxString::const_iterator it = s.begin();
|
||||||
wxString::const_iterator end = s.end();
|
wxString::const_iterator end = s.end();
|
||||||
while ( it != end && wxIsspace(*it) )
|
while ( it != end && wxIsspace(*it) )
|
||||||
@@ -158,17 +162,12 @@ void wxWebRequest::SplitParameters(const wxString& s, wxString& value,
|
|||||||
value.Trim();
|
value.Trim();
|
||||||
if ( it != end )
|
if ( it != end )
|
||||||
++it;
|
++it;
|
||||||
SplitParameters(it, end, parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxWebRequest::SplitParameters(const wxString::const_iterator& begin,
|
parameters.clear();
|
||||||
const wxString::const_iterator& end, wxWebRequestHeaderMap& parameters)
|
|
||||||
{
|
|
||||||
wxString pname;
|
wxString pname;
|
||||||
wxString pvalue;
|
wxString pvalue;
|
||||||
pname.reserve(32);
|
pname.reserve(32);
|
||||||
pvalue.reserve(64);
|
pvalue.reserve(64);
|
||||||
wxString::const_iterator it = begin;
|
|
||||||
while ( it != end )
|
while ( it != end )
|
||||||
{
|
{
|
||||||
pname.clear();
|
pname.clear();
|
||||||
@@ -216,8 +215,12 @@ void wxWebRequest::SplitParameters(const wxString::const_iterator& begin,
|
|||||||
if ( it != end )
|
if ( it != end )
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace wxPrivate
|
||||||
|
|
||||||
void wxWebRequest::ProcessStateEvent(State state, const wxString& failMsg)
|
void wxWebRequest::ProcessStateEvent(State state, const wxString& failMsg)
|
||||||
{
|
{
|
||||||
if ( !IsActiveState(state) && GetResponse() )
|
if ( !IsActiveState(state) && GetResponse() )
|
||||||
@@ -318,9 +321,8 @@ wxString wxWebResponse::GetSuggestedFileName() const
|
|||||||
|
|
||||||
// Try to determine from Content-Disposition header
|
// Try to determine from Content-Disposition header
|
||||||
wxString contentDisp = GetHeader("Content-Disposition");
|
wxString contentDisp = GetHeader("Content-Disposition");
|
||||||
wxString disp;
|
|
||||||
wxWebRequestHeaderMap params;
|
wxWebRequestHeaderMap params;
|
||||||
wxWebRequest::SplitParameters(contentDisp, disp, params);
|
const wxString disp = wxPrivate::SplitParameters(contentDisp, params);
|
||||||
if ( disp == "attachment" )
|
if ( disp == "attachment" )
|
||||||
{
|
{
|
||||||
// Parse as filename to filter potential path names
|
// Parse as filename to filter potential path names
|
||||||
|
@@ -203,6 +203,12 @@ TEST_CASE_METHOD(RequestFixture, "WebRequest", "[net][.]")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace wxPrivate
|
||||||
|
{
|
||||||
|
WXDLLIMPEXP_NET wxString
|
||||||
|
SplitParameters(const wxString& s, wxWebRequestHeaderMap& parameters);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("WebRequestUtils", "[net]")
|
TEST_CASE("WebRequestUtils", "[net]")
|
||||||
{
|
{
|
||||||
wxString value;
|
wxString value;
|
||||||
@@ -210,7 +216,7 @@ TEST_CASE("WebRequestUtils", "[net]")
|
|||||||
|
|
||||||
wxString header = "multipart/mixed; boundary=\"MIME_boundary_01234567\"";
|
wxString header = "multipart/mixed; boundary=\"MIME_boundary_01234567\"";
|
||||||
|
|
||||||
wxWebRequest::SplitParameters(header, value, params);
|
value = wxPrivate::SplitParameters(header, params);
|
||||||
REQUIRE( value == "multipart/mixed" );
|
REQUIRE( value == "multipart/mixed" );
|
||||||
REQUIRE( params.size() == 1 );
|
REQUIRE( params.size() == 1 );
|
||||||
REQUIRE( params["boundary"] == "MIME_boundary_01234567" );
|
REQUIRE( params["boundary"] == "MIME_boundary_01234567" );
|
||||||
|
Reference in New Issue
Block a user