Set the User-Agent HTTP header so we can download XML files from www.w3.org
https://sourceforge.net/p/xml-copy-editor/discussion/475215/thread/223a81b85b/ Xerces-C has to be patched https://github.com/apache/xerces-c/pull/1
This commit is contained in:
parent
2968f331a0
commit
621be4257a
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include "wrapxerces.h"
|
#include "wrapxerces.h"
|
||||||
#include "pathresolver.h"
|
#include "pathresolver.h"
|
||||||
|
#include "xercesnetaccessor.h"
|
||||||
|
|
||||||
#include <xercesc/parsers/XercesDOMParser.hpp>
|
#include <xercesc/parsers/XercesDOMParser.hpp>
|
||||||
#include <xercesc/sax2/XMLReaderFactory.hpp>
|
#include <xercesc/sax2/XMLReaderFactory.hpp>
|
||||||
|
@ -46,10 +47,16 @@ void WrapXerces::Init ( bool enableNetAccess ) throw()
|
||||||
Initializer ()
|
Initializer ()
|
||||||
{
|
{
|
||||||
XMLPlatformUtils::Initialize();
|
XMLPlatformUtils::Initialize();
|
||||||
|
|
||||||
mOriginalNetAccessor = XMLPlatformUtils::fgNetAccessor;
|
mOriginalNetAccessor = XMLPlatformUtils::fgNetAccessor;
|
||||||
|
if ( mOriginalNetAccessor != NULL )
|
||||||
|
{
|
||||||
|
mOriginalNetAccessor = new XercesNetAccessor ( mOriginalNetAccessor );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
~Initializer()
|
~Initializer()
|
||||||
{
|
{
|
||||||
|
delete mOriginalNetAccessor;
|
||||||
XMLPlatformUtils::Terminate();
|
XMLPlatformUtils::Terminate();
|
||||||
}
|
}
|
||||||
} dummy;
|
} dummy;
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Zane U. Ji.
|
||||||
|
*
|
||||||
|
* This file is part of Xml Copy Editor.
|
||||||
|
*
|
||||||
|
* Xml Copy Editor is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Xml Copy Editor is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Xml Copy Editor; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "xercesnetaccessor.h"
|
||||||
|
#include "xmlcopyeditorcopy.h"
|
||||||
|
|
||||||
|
#include <wx/string.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
const static char USER_AGENT[] = "User-Agent:";
|
||||||
|
|
||||||
|
XercesNetAccessor::XercesNetAccessor ( XMLNetAccessor *netAccessor )
|
||||||
|
: mNetAccessor ( netAccessor )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const XMLCh *XercesNetAccessor::getId() const
|
||||||
|
{
|
||||||
|
return mNetAccessor->getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
BinInputStream *XercesNetAccessor::makeNew (
|
||||||
|
const XMLURL &urlSrc,
|
||||||
|
const XMLNetHTTPInfo *httpInfo /* = 0 */
|
||||||
|
) {
|
||||||
|
|
||||||
|
XMLNetHTTPInfo info;
|
||||||
|
if ( httpInfo != NULL )
|
||||||
|
{
|
||||||
|
info = *httpInfo;
|
||||||
|
}
|
||||||
|
std::string headers ( info.fHeaders, info.fHeadersLen );
|
||||||
|
if ( headers.find ( USER_AGENT ) == std::string::npos )
|
||||||
|
{
|
||||||
|
headers.append ( USER_AGENT );
|
||||||
|
headers.append ( " xmlcopyeditor/" );
|
||||||
|
headers.append ( wxString ( ABOUT_VERSION ).utf8_str() );
|
||||||
|
headers.append ( "\r\n" );
|
||||||
|
info.fHeaders = headers.c_str();
|
||||||
|
info.fHeadersLen = headers.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
return mNetAccessor->makeNew ( urlSrc, &info );
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Zane U. Ji.
|
||||||
|
*
|
||||||
|
* This file is part of Xml Copy Editor.
|
||||||
|
*
|
||||||
|
* Xml Copy Editor is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Xml Copy Editor is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Xml Copy Editor; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XERCESNETACCESSOR_H_
|
||||||
|
#define XERCESNETACCESSOR_H_
|
||||||
|
|
||||||
|
#include <xercesc/util/XMLNetAccessor.hpp>
|
||||||
|
|
||||||
|
using namespace xercesc;
|
||||||
|
|
||||||
|
class XercesNetAccessor : public XMLNetAccessor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
XercesNetAccessor ( XMLNetAccessor *netAccesor );
|
||||||
|
|
||||||
|
virtual const XMLCh *getId() const;
|
||||||
|
|
||||||
|
virtual BinInputStream *makeNew ( const XMLURL &urlSrc,
|
||||||
|
const XMLNetHTTPInfo *httpInfo = 0);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
XMLNetAccessor *mNetAccessor;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* XERCESNETACCESSOR_H_ */
|
Loading…
Reference in New Issue