Esempio n. 1
0
bool Image::loadFromFile(String fileName)
{
	complete = false;
	std::vector<uint8_t>* bytes;

	static String b64("data:image/png;base64,");
	if (fileName.size() > b64.size() && String(fileName.begin(), fileName.begin() + b64.size()) == b64)
	{
		// Read image from Base64 encoded URL
		bytes = fromBase64(fileName.c_str() + b64.size());
		complete = loadFromBuffer(bytes->data(), bytes->size());
		delete bytes;
		__BGRA = false;
	}
	else
	{
		CocoAssetFile* file = CocoAssetFile::open(fileName);
		if (file)
		{
			complete = loadFromBuffer(file->getData(), file->bytesLength());
			delete file;
		}
	}

	if (complete)
		src = fileName;

	return complete;
}
Esempio n. 2
0
void XMLHttpRequest::open(String method, String url, bool async)
{
	status = UNSENT;
	statusText = "";
	responseType = "";
	responseText = "";
	response = nullptr;
	dataAvailable = false;
	this->async = async;

	if(url.at(0)=='.')
	{
		// Hack for reading local files
		CocoAssetFile* file = CocoAssetFile::open(url.c_str());
		if(file)
		{
			response = new ArrayBuffer(file->getData(), file->bytesLength());

			// Set response flags
			status = 200;
			statusText = "OK";
			dataAvailable = true;
			responseType = "arraybuffer";
			responseURL = String("file:///") + file->fileName;
			responseText = String( (const char*) file->getData());
			readyState=DONE;

			delete file;
		}
	}
	else
	{
		// Start a libcurl easy session
		curl = curl_easy_init();

		// Store "this" as a private pointer to curl
		curl_easy_setopt(curl, CURLOPT_PRIVATE, static_cast<void*>(this));

		// Set http method
		std::transform(method.begin(), method.end(), method.begin(), ::toupper);
		if(method=="GET") curl_easy_setopt(curl, CURLOPT_HTTPGET, 1);
		else if(method=="POST") curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1);

		// Set url
		curl_easy_setopt(curl, CURLOPT_URL, url.c_str());

		// skip all signal handling
		curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);

		// follow HTTP 3xx redirects
		curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);

		// set user agent
		curl_easy_setopt(curl, CURLOPT_USERAGENT, APPNAME);

		// set callback for writing received data
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
		curl_easy_setopt(curl, CURLOPT_WRITEDATA, static_cast<void*>(&responseDataBuffer));

		//  set callback for writing received header data
		curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, curl_callback);
		curl_easy_setopt(curl, CURLOPT_WRITEHEADER, static_cast<void*>(&responseHeadersBuffer));

		responseURL = url;
		readyState = OPENED;
	}
}