mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-28 03:20:11 +01:00
Merge branch 'poco-1.10.0' into devel
This commit is contained in:
78
Foundation/include/Poco/DataURIStream.h
Normal file
78
Foundation/include/Poco/DataURIStream.h
Normal file
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// DataURIStream.h
|
||||
//
|
||||
// Library: Foundation
|
||||
// Package: Streams
|
||||
// Module: DataURIStreamFactory
|
||||
//
|
||||
// Definition of the DataURIStream class.
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef Foundation_DataURIStream_INCLUDED
|
||||
#define Foundation_DataURIStream_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Foundation.h"
|
||||
#include <istream>
|
||||
#include <memory>
|
||||
|
||||
|
||||
namespace Poco {
|
||||
|
||||
|
||||
class Base64Decoder;
|
||||
class MemoryInputStream;
|
||||
class URI;
|
||||
|
||||
|
||||
class Foundation_API DataURIStreamIOS: public virtual std::ios
|
||||
/// The base class for DataURIStream.
|
||||
///
|
||||
/// This class is needed to ensure the correct initialization
|
||||
/// order of the stream buffer and base classes.
|
||||
{
|
||||
public:
|
||||
DataURIStreamIOS(const URI& uri);
|
||||
~DataURIStreamIOS();
|
||||
std::streambuf* rdbuf();
|
||||
|
||||
protected:
|
||||
std::streambuf* _buf;
|
||||
|
||||
private:
|
||||
DataURIStreamIOS(const DataURIStreamIOS&);
|
||||
DataURIStreamIOS& operator = (const DataURIStreamIOS&);
|
||||
std::string _data;
|
||||
std::unique_ptr<MemoryInputStream> _memoryStream;
|
||||
std::unique_ptr<Base64Decoder> _base64Decoder;
|
||||
};
|
||||
|
||||
|
||||
class Foundation_API DataURIStream: public DataURIStreamIOS, public std::istream
|
||||
/// An input stream for reading data from a data URI.
|
||||
/// For example, when constructed from "data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D" it reads "Hello, World!".
|
||||
{
|
||||
public:
|
||||
DataURIStream(const URI& uri);
|
||||
/// Creates a DataURIStream for the given data URI,
|
||||
/// ready for reading data.
|
||||
/// Throws a DataFormatException exception if the data is incorrect format.
|
||||
~DataURIStream();
|
||||
/// Destroys the DataURIStream.
|
||||
|
||||
private:
|
||||
DataURIStream(const DataURIStream&);
|
||||
DataURIStream& operator = (const DataURIStream&);
|
||||
};
|
||||
|
||||
|
||||
} // namespace Poco
|
||||
|
||||
|
||||
#endif // Foundation_DataURIStream_INCLUDED
|
||||
58
Foundation/include/Poco/DataURIStreamFactory.h
Normal file
58
Foundation/include/Poco/DataURIStreamFactory.h
Normal file
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// DataURIStreamFactory.h
|
||||
//
|
||||
// Library: Foundation
|
||||
// Package: URI
|
||||
// Module: DataURIStreamFactory
|
||||
//
|
||||
// Definition of the DataURIStreamFactory class.
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef Foundation_DataURIStreamFactory_INCLUDED
|
||||
#define Foundation_DataURIStreamFactory_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Foundation.h"
|
||||
#include "Poco/URIStreamFactory.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
|
||||
|
||||
class Foundation_API DataURIStreamFactory: public URIStreamFactory
|
||||
/// An implementation of the URIStreamFactory interface
|
||||
/// that read data from data URIs.
|
||||
/// For example, for URI "data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D" it read "Hello, World!".
|
||||
{
|
||||
public:
|
||||
DataURIStreamFactory();
|
||||
/// Creates the DataURIStreamFactory.
|
||||
|
||||
~DataURIStreamFactory();
|
||||
/// Destroys the DataURIStreamFactory.
|
||||
|
||||
std::istream* open(const URI& uri);
|
||||
/// Creates an input stream returning decoded data from the given data URI.
|
||||
///
|
||||
/// Throws a DataFormatException exception if the data is incorrect format.
|
||||
|
||||
static void registerFactory();
|
||||
/// Registers the DataURIStreamFactory with the
|
||||
/// default URIStreamOpener instance.
|
||||
|
||||
static void unregisterFactory();
|
||||
/// Unregisters the DataURIStreamFactory with the
|
||||
/// default URIStreamOpener instance.
|
||||
};
|
||||
|
||||
|
||||
} // namespace Poco
|
||||
|
||||
|
||||
#endif // Foundation_DataURIStreamFactory_INCLUDED
|
||||
Reference in New Issue
Block a user