package railo.runtime.type.scope.util;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import railo.commons.net.URLDecoder;
import railo.commons.net.URLItem;
import railo.runtime.net.http.ReqRspUtil;
public class ScopeUtil {
public static Map<String,String[]> getParameterMap(URLItem[][] itemsArr, String[] encodings) {
String n,v;
String[] arr;
Map<String,String[]> parameters=new HashMap<String, String[]>();
URLItem[] items;
String encoding;
for(int x=0;x<itemsArr.length;x++){
items=itemsArr[x];
encoding=encodings[x];
for(int i=0;i<items.length;i++){
n=items[i].getName();
v=items[i].getValue();
if(items[i].isUrlEncoded()) {
try{
n=URLDecoder.decode(n,encoding,true);
v=URLDecoder.decode(v,encoding,true);
}
catch(UnsupportedEncodingException e){}
}
arr=parameters.get(n);
if(arr==null)parameters.put(n, new String[]{v});
else {
String[] tmp = new String[arr.length+1];
System.arraycopy(arr, 0, tmp, 0, arr.length);
tmp[arr.length]=v;
parameters.put(n, tmp);
}
}
}
return parameters;
}
public static String[] getParameterValues(URLItem[][] itemsArr, String[] encodings,String name) {
String n,v;
String encName;
String[] arr=null;
URLItem[] items;
String encoding;
for(int x=0;x<itemsArr.length;x++){
items=itemsArr[x];
encoding=encodings[x];
if(ReqRspUtil.needEncoding(name, true)) encName=ReqRspUtil.encode(name, encoding);
else encName=null;
for(int i=0;i<items.length;i++){
n=items[i].getName();
if(!name.equals(n) && (encName==null || !encName.equals(n))) {
continue;
}
v=items[i].getValue();
if(items[i].isUrlEncoded()) {
try{
n=URLDecoder.decode(n,encoding,true);
v=URLDecoder.decode(v,encoding,true);
}
catch(UnsupportedEncodingException e){}
}
if(arr==null)arr=new String[]{v};
else {
String[] tmp = new String[arr.length+1];
System.arraycopy(arr, 0, tmp, 0, arr.length);
tmp[arr.length]=v;
arr=tmp;
}
}
}
return arr;
}
}