[Yanel-commits] rev 21637 -
public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources
michi at wyona.com
michi at wyona.com
Thu Jan 11 12:04:04 CET 2007
Author: michi
Date: 2007-01-11 12:04:02 +0100 (Thu, 11 Jan 2007)
New Revision: 21637
Modified:
public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
Log:
get client, os and language implemented
Modified: public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
===================================================================
--- public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-01-11 11:03:18 UTC (rev 21636)
+++ public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-01-11 11:04:02 UTC (rev 21637)
@@ -102,6 +102,11 @@
//TODO: There seems to be a bug re back2context ...
transformer.setParameter("yanel.back2context", backToRoot(getPath(), ""));
transformer.setParameter("yarep.back2realm", backToRoot(getPath(), ""));
+ String userAgent = getRequest().getHeader("User-Agent");
+ transformer.setParameter("os", getOS(userAgent));
+ transformer.setParameter("client", getClient(userAgent));
+ transformer.setParameter("language", getLanguage());
+
// TODO: Is this the best way to generate an InputStream from an OutputStream?
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
@@ -134,17 +139,17 @@
}
/**
- *
+ * Get language with the following priorization: 1) yanel.meta.language query string parameter, 2) Accept-Language header, 3) Default en
*/
private String getLanguage() {
- String language = "en";
- try {
- language = getRequest().getParameter("yanel.meta.language");
- } catch(Exception e) {
- //use fallback language
- language = "en";
+ String language = getRequest().getParameter("yanel.meta.language");
+ log.warn("DEBUG: Parameter: " + language);
+ if (language == null) {
+ language = getRequest().getParameter("Accept-Language");
+ log.warn("DEBUG: Accept-Language: " + language);
}
if(language != null && language.length() > 0) return language;
+ log.warn("DEBUG: Default: en");
return "en";
}
@@ -296,4 +301,32 @@
public long getSize() throws Exception {
return getRealm().getRepository().getSize(getPath());
}
+
+ /**
+ * Get operating system
+ */
+ public String getOS(String userAgent) {
+ if (userAgent.indexOf("Linux") > 0) {
+ return "unix";
+ } else if (userAgent.indexOf("Windows") > 0) {
+ return "windows";
+ } else {
+ log.warn("Operating System could not be recognized: " + userAgent);
+ return null;
+ }
+ }
+
+ /**
+ * Get client
+ */
+ public String getClient(String userAgent) {
+ if (userAgent.indexOf("Firefox") > 0) {
+ return "firefox";
+ } else if (userAgent.indexOf("MSIE") > 0) {
+ return "msie";
+ } else {
+ log.warn("Client could not be recognized: " + userAgent);
+ return null;
+ }
+ }
}
More information about the Yanel-commits
mailing list