60 bool operator== (
const URL&)
const;
61 bool operator!= (
const URL&)
const;
195 const String& parameterValue)
const;
221 const File& fileToUpload,
222 const String& mimeType)
const;
237 const String& mimeType)
const;
273 [[nodiscard]]
URL withPOSTData (
const String& postData)
const;
283 [[nodiscard]]
URL withPOSTData (
const MemoryBlock& postData)
const;
296 bool launchInDefaultBrowser()
const;
302 static bool isProbablyAWebsiteURL (
const String& possibleURL);
307 static bool isProbablyAnEmailAddress (
const String& possibleEmailAddress);
310 enum class ParameterHandling
387 ParameterHandling getParameterHandling()
const noexcept {
return parameterHandling; }
388 std::function<bool (
int,
int)> getProgressCallback()
const noexcept {
return progressCallback; }
389 String getExtraHeaders()
const noexcept {
return extraHeaders; }
390 int getConnectionTimeoutMs()
const noexcept {
return connectionTimeOutMs; }
391 StringPairArray* getResponseHeaders()
const noexcept {
return responseHeaders; }
392 int* getStatusCode()
const noexcept {
return statusCode; }
393 int getNumRedirectsToFollow()
const noexcept {
return numRedirectsToFollow; }
394 String getHttpRequestCmd()
const noexcept {
return httpRequestCmd; }
398 const ParameterHandling parameterHandling;
400 std::function<bool (
int,
int)> progressCallback =
nullptr;
402 int connectionTimeOutMs = 0;
404 int* statusCode =
nullptr;
405 int numRedirectsToFollow = 5;
465 bool usePost =
false;
468 [[nodiscard]]
auto withExtraHeaders (
String value)
const {
return with (&DownloadTaskOptions::extraHeaders, std::move (value)); }
483 [[nodiscard]]
auto withUsePost (
bool value)
const {
return with (&DownloadTaskOptions::usePost, value); }
486 template <
typename Member,
typename Value>
490 copy.*member = std::forward<Value> (value);
499 class JUCE_API DownloadTask
507 virtual ~DownloadTask();
536 int64 contentLength = -1, downloaded = 0;
537 bool finished =
false, error =
false;
550 static void juce_iosURLSessionNotify (
const String&);
554 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (
DownloadTask)
558 [[deprecated (
"Use the overload with a DownloadTaskOptions argument instead")]]
559 std::unique_ptr<DownloadTask> downloadToFile (
const File& targetLocation,
561 DownloadTaskListener* listener =
nullptr,
562 bool usePostCommand =
false);
592 bool usePostCommand =
false)
const;
647 bool roundBracketsAreLegal =
true);
669 using OpenStreamProgressCallback = bool (
void* context,
int bytesSent,
int totalBytes);
675 [[deprecated (
"New code should use the method which takes an InputStreamOptions argument instead.")]]
677 OpenStreamProgressCallback* progressCallback =
nullptr,
678 void* progressCallbackContext =
nullptr,
680 int connectionTimeOutMs = 0,
682 int* statusCode =
nullptr,
683 int numRedirectsToFollow = 5,
684 String httpRequestCmd = {})
const;
690 struct Bookmark :
public ReferenceCountedObject
692 using Ptr = ReferenceCountedObjectPtr<Bookmark>;
700 Bookmark::Ptr bookmark;
702 friend void setURLBookmark (URL&,
void*);
703 friend void* getURLBookmark (URL&);
707 struct Upload :
public ReferenceCountedObject
709 Upload (
const String&,
const String&,
const String&,
const File&, MemoryBlock*);
710 String parameterName, filename, mimeType;
712 std::unique_ptr<MemoryBlock> data;
714 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Upload)
718 friend class WebInputStream;
720 URL (
const String&,
int);
722 void addParameter (
const String&,
const String&);
723 bool hasBodyDataToSend()
const;
724 void createHeadersAndPostData (String&, MemoryBlock&,
bool)
const;
725 URL withUpload (Upload*)
const;
727 static ParameterHandling toHandling (
bool);
728 static File fileFromFileSchemeURL (
const URL&);
729 String getDomainInternal (
bool)
const;
733 MemoryBlock postData;
734 StringArray parameterNames, parameterValues;
737 ReferenceCountedArray<Upload> filesToUpload;
740 JUCE_LEAK_DETECTOR (URL)
auto withSharedContainer(String value) const
auto withExtraHeaders(String value) const
auto withListener(DownloadTaskListener *value) const
auto withUsePost(bool value) const
int64 getLengthDownloaded() const
File getTargetLocation() const
int64 getTotalLength() const
URL withParameter(const String ¶meterName, const String ¶meterValue) const
static URL createWithoutParsing(const String &url)
File getLocalFile() const
bool isWellFormed() const
bool readEntireBinaryStream(MemoryBlock &destData, bool usePostCommand=false) const
URL withDataToUpload(const String ¶meterName, const String &filename, const MemoryBlock &fileContentToUpload, const String &mimeType) const
String getFileName() const
URL getChildURL(const String &subPath) const
static String removeEscapeChars(const String &stringToRemoveEscapeCharsFrom)
String getAnchorString() const
static String addEscapeChars(const String &stringToAddEscapeCharsTo, bool isParameter, bool roundBracketsAreLegal=true)
URL withAnchor(const String &anchor) const
String toString(bool includeGetParameters) const
std::unique_ptr< OutputStream > createOutputStream() const
String getSubPath(bool includeGetParameters=false) const
String getQueryString() const
URL withNewSubPath(const String &newPath) const
const MemoryBlock & getPostDataAsMemoryBlock() const noexcept
URL withNewDomainAndPath(const String &newFullPath) const
String getPostData() const
String readEntireTextStream(bool usePostCommand=false) const
bool isEmpty() const noexcept
std::unique_ptr< InputStream > createInputStream(const InputStreamOptions &options) const
const StringArray & getParameterValues() const noexcept
URL withFileToUpload(const String ¶meterName, const File &fileToUpload, const String &mimeType) const
URL withParameters(const StringPairArray ¶metersToAdd) const
const StringArray & getParameterNames() const noexcept
std::unique_ptr< XmlElement > readEntireXmlStream(bool usePostCommand=false) const
std::unique_ptr< DownloadTask > downloadToFile(const File &targetLocation, const DownloadTaskOptions &options)
virtual void finished(DownloadTask *task, bool success)=0
virtual void progress(DownloadTask *task, int64 bytesDownloaded, int64 totalLength)