no commit message

This commit is contained in:
niandeng
2020-09-17 18:40:01 +08:00
parent 4382915d09
commit d957abceaa
283 changed files with 86935 additions and 63 deletions
+77
View File
@@ -0,0 +1,77 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mangui.hls.playlist {
CONFIG::LOGGING {
import org.mangui.hls.utils.Log;
}
/**
* Facilitates extracting information from a data URI.
*/
public class DataUri {
private static const DATA_PROTOCOL : String = "data:";
private static const BASE_64 : String = "base64";
private var _dataUri : String;
public function DataUri(dataUri : String) {
_dataUri = dataUri;
}
/**
* @return Returns the data portion of the data URI if it is able extract the information,
* null otherwise.
*/
public function extractData() : String {
if (_dataUri == null) {
return null;
}
var base64Index : int = _dataUri.indexOf(BASE_64 + ',');
var dataIndex : int = _dataUri.indexOf(',') + 1;
if (dataIndex > _dataUri.length) {
return null;
}
var data : String = _dataUri.substr(dataIndex);
return (base64Index === -1) ? _extractPlainData(data) : _extractBase64Data(data);
}
/**
* Data URIs support base 64 encoding the data section.
* This is not typically used for plain text files, which includes HLS manifests.
* As such, decoded base 64 data sections is not currently (6/18/14) supported.
* @param data
* @return
*/
private function _extractBase64Data(data : String) : String {
CONFIG::LOGGING {
Log.warn("Base 64 encoded Data URIs are not supported.");
}
return null;
}
/**
* @param data
* @return The URL decoded data section from the data URI.
*/
private function _extractPlainData(data : String) : String {
var decodedData : String = decodeURIComponent(data);
CONFIG::LOGGING {
Log.debug2("Decoded data from data URI into: " + decodedData);
}
return decodedData;
}
/**
* @param dataUri
* @return True if the provided string is a data URI, false otherwise.
*/
public static function isDataUri(dataUri : String) : Boolean {
return dataUri != null && dataUri.indexOf(DATA_PROTOCOL) === 0;
}
}
}