package org.qrone.r7.script.window;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.net.URLCodec;
import org.mozilla.javascript.Scriptable;
import org.qrone.r7.script.Scriptables;
import org.qrone.r7.script.browser.Window;
import org.qrone.r7.script.ext.ScriptableMap;
import org.qrone.util.Digest;
import org.qrone.util.QueryString;
public class WindowEncodes implements WindowPrototype {
public WindowEncodes( Window win ){
}
@Override
public void init(Scriptable scr) {
}
public byte[] base64_decode(String base64String){
return Base64.decodeBase64(base64String);
}
public String base64_encode(byte[] binaryData){
return Base64.encodeBase64String(binaryData);
}
public byte[] base64_urlsafe_decode(String base64String){
return Base64.decodeBase64(base64String);
}
public String base64_urlsafe_encode(byte[] binaryData){
return Base64.encodeBase64URLSafeString(binaryData);
}
public String unescape(String str) throws DecoderException{
URLCodec c = new URLCodec();
return c.decode(str);
}
public String escape(String str) throws EncoderException{
URLCodec c = new URLCodec();
return c.encode(str);
}
public String escape(Map obj) throws EncoderException{
QueryString qs = new QueryString(obj);
return qs.toString();
}
public String escape(Object obj) throws EncoderException{
return escape(Scriptables.asMap(obj));
}
public String md2(String data){
return digest_safe("MD2", data);
}
public String md5(String data){
return digest_safe("MD5", data);
}
public String sha1(String data){
return digest_safe("SHA-1", data);
}
public String sha256(String data){
return digest_safe("SHA-256", data);
}
public String sha384(String data){
return digest_safe("SHA-384", data);
}
public String sha512(String data){
return digest_safe("SHA-512", data);
}
private String digest_safe(String type, String data){
try {
return digest(type, data);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public String digest(String type, String data) throws NoSuchAlgorithmException{
return Digest.digest_hex(type, data);
}
}