package org.nutz.http;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import org.nutz.json.Json;
import org.nutz.json.JsonFormat;
public class Header {
private Header() {
items = new HashMap<String, String>();
}
private Map<String, String> items;
public Collection<String> keys() {
return items.keySet();
}
public String get(String key) {
return items.get(key);
}
public Header set(String key, String value) {
if (null != key)
items.put(key, value);
return this;
}
public Header remove(String key) {
items.remove(key);
return this;
}
public Header clear() {
items.clear();
return this;
}
public Set<Entry<String, String>> getAll(){
return items.entrySet();
}
public Header addAll(Map<String, String> map) {
if (null != map)
items.putAll(map);
return this;
}
@Override
public String toString() {
return Json.toJson(items, JsonFormat.nice().setIgnoreNull(false));
}
public static Header create(Map<String, String> properties) {
return new Header().addAll(properties);
}
@SuppressWarnings("unchecked")
public static Header create(String properties) {
return create((Map<String, String>) Json.fromJson(properties));
}
public static Header create() {
Header header = new Header();
header.set("User-Agent", "Nutz.Robot");
header.set("Accept-Encoding", "gzip,deflate");
header.set("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;"
+ "q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
header.set("Accept-Language", "en-US,en,zh,zh-CN");
header.set("Accept-Charset", "ISO-8859-1,*,utf-8");
header.set("Connection", "keep-alive");
header.set("Cache-Control", "max-age=0");
return header;
}
public String get(String key, String defaultValue) {
String value = get(key);
if (value == null)
return defaultValue;
return value;
}
public int getInt(String key, int defaultValue) {
String value = get(key);
if (value == null)
return defaultValue;
return Integer.parseInt(value);
}
}