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 "pathresolver.h"
|
||||
#include "xercesnetaccessor.h"
|
||||
|
||||
#include <xercesc/parsers/XercesDOMParser.hpp>
|
||||
#include <xercesc/sax2/XMLReaderFactory.hpp>
|
||||
|
@ -46,10 +47,16 @@ void WrapXerces::Init ( bool enableNetAccess ) throw()
|
|||
Initializer ()
|
||||
{
|
||||
XMLPlatformUtils::Initialize();
|
||||
|
||||
mOriginalNetAccessor = XMLPlatformUtils::fgNetAccessor;
|
||||
if ( mOriginalNetAccessor != NULL )
|
||||
{
|
||||
mOriginalNetAccessor = new XercesNetAccessor ( mOriginalNetAccessor );
|
||||
}
|
||||
}
|
||||
~Initializer()
|
||||
{
|
||||
delete mOriginalNetAccessor;
|
||||
XMLPlatformUtils::Terminate();
|
||||
}
|
||||
} 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