From: adam Date: Tue, 11 Jan 2005 08:10:54 +0000 (+0000) Subject: update Mail for new JS API X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=79d757b55fd4507718b35f584a02b449bea76603;p=org.ibex.mail.git update Mail for new JS API darcs-hash:20050111081054-5007d-8fa89f816d2ff8a12945ccf0b29c12c604b5ddb4.gz --- diff --git a/src/org/ibex/mail/MIME.java b/src/org/ibex/mail/MIME.java index 67ee72d..d5018e0 100644 --- a/src/org/ibex/mail/MIME.java +++ b/src/org/ibex/mail/MIME.java @@ -179,8 +179,8 @@ public class MIME { public final int lines; public final String raw; public String toString() { return raw; } - public Object get(Object s) { return head.get(((String)s).toLowerCase()); } - public String gets(String s) { return (String)get(s); } + public JS get(JS s) throws JSExn { return JSU.S((String)head.get(JSU.toString(s).toLowerCase())); } + public String gets(String s) { return (String)head.get(s.toLowerCase()); } public static String uncomment(String val) { boolean inquotes = false; for(int i=0; i 126) throw new MailException.Malformed("Header key \""+key+"\" contains invalid character \"" + key.charAt(i) + "\""); String val = s.substring(s.indexOf(':') + 1).trim(); - if (get(key) != null) val = get(key) + " " + val; // just append it to the previous one; + if (gets(key) != null) val = gets(key) + " " + val; // just append it to the previous one; head.put(key, val); } this.raw = all.toString(); diff --git a/src/org/ibex/mail/Query.java b/src/org/ibex/mail/Query.java index 26bdd7c..8143bbe 100644 --- a/src/org/ibex/mail/Query.java +++ b/src/org/ibex/mail/Query.java @@ -98,8 +98,8 @@ public class Query { case ARRIVAL: return (latest == null || it.cur().arrival.before(latest)) && (earliest == null || it.cur().arrival.after(earliest)); case SIZE: return it.cur().size() >= min && it.cur().size() <= max; - case HEADER: return it.cur().headers.get(key) != null && - ((String)it.cur().headers.get(key)).toLowerCase().indexOf(text.toLowerCase()) != -1; + case HEADER: return it.cur().headers.gets(key) != null && + ((String)it.cur().headers.gets(key)).toLowerCase().indexOf(text.toLowerCase()) != -1; case BODY: return it.cur().body.toLowerCase().indexOf(text.toLowerCase()) != -1; case FULL: return it.cur().body.toLowerCase().indexOf(text.toLowerCase()) != -1 || it.cur().headers.raw.indexOf(text) != -1; diff --git a/src/org/ibex/mail/protocol/NNTP.java b/src/org/ibex/mail/protocol/NNTP.java index 7fa9409..f822ef5 100644 --- a/src/org/ibex/mail/protocol/NNTP.java +++ b/src/org/ibex/mail/protocol/NNTP.java @@ -22,7 +22,7 @@ import java.text.*; /** NNTP send/recieve */ public class NNTP { - public static final DateFormat dateFormat = new SimpleDateFormat("YYYYMMDDhhmmss"); + public static final DateFormat dateFormat = new SimpleDateFormat("yyyyMMDDhhmmss"); public static class No extends RuntimeException { int code = 400; } // 4xx response codes public static class Bad extends RuntimeException { int code = 500; public Bad(String s) { super(s); } } // 5xx response codes @@ -75,7 +75,7 @@ public class NNTP { try { Message m = body ? it.cur() : Message.newMessage(new Stream(it.head() + "\r\n")); //Message m = it.cur(); // FIXME - return new Article(m.messageid, it.num(), m); + return new Article(it.num(), m); } catch (Exception e) { return null; } } public Group[] list() { return list(root, ""); } @@ -181,7 +181,7 @@ public class NNTP { if (st.hasMoreTokens()) { String arg = st.nextToken(); if (arg.equalsIgnoreCase("STREAM")); - streaming = true; + //streaming = true; println("203 Streaming permitted"); } else { println("201 Hello, you can post."); @@ -222,7 +222,7 @@ public class NNTP { // FIXME deal with GMT Date d = new Date(); try { - d = new SimpleDateFormat("YYMMDD HHMMSS").parse(gmt); + d = new SimpleDateFormat("yyMMDD HHMMSS").parse(gmt); } catch (ParseException pe) { Log.warn(this, pe); } @@ -294,7 +294,7 @@ public class NNTP { println("."); } else if (command.equals("LIST")) { if (st.hasMoreTokens()) { - String argument = st.nextToken().toUppercase(); + String argument = st.nextToken().toUpperCase(); if (argument.equalsIgnoreCase("EXTENSIONS")) { println("202 Extensions supported:"); println("STREAMING"); @@ -304,6 +304,7 @@ public class NNTP { String wildmat = st.hasMoreTokens() ? st.nextToken() : null; // FIXME: deal with wildmat // just like list, but only show active groups + throw new Bad("not implemented yet"); } else if (argument.equals("SUBSCRIPTIONS")) { // FIXME: show 215, default subscription list for new users, period } else if (argument.equals("OVERVIEW.FMT")) { @@ -353,11 +354,13 @@ public class NNTP { // FIXME: may be pipelined String mid = st.nextToken(); // MUST read message here + /* if (!want) { println("439 "+ mid+" Transfer failed"); } else { println("239 "+mid+" Rock on."); } + */ } else if (command.equals("IHAVE")) { boolean want = api.ihave(st.nextToken()); diff --git a/src/org/ibex/mail/target/Mailbox.java b/src/org/ibex/mail/target/Mailbox.java index 5c10af8..b0ea405 100644 --- a/src/org/ibex/mail/target/Mailbox.java +++ b/src/org/ibex/mail/target/Mailbox.java @@ -6,6 +6,7 @@ package org.ibex.mail.target; import org.ibex.mail.*; import org.ibex.util.*; import org.ibex.mail.*; +import org.ibex.js.*; import java.io.*; import java.net.*; import java.util.*; @@ -14,9 +15,8 @@ import java.text.*; /** abstract superclass for mailboxes, which store messages along with their flags */ public abstract class Mailbox extends Target { - public Object get(Object key) { - if (key instanceof String) return slash((String)key, true); - return null; + public JS get(JS key) throws JSExn { + return slash(JSU.toString(key), true); } public static final String STORAGE_ROOT = diff --git a/src/org/ibex/mail/target/Script.java b/src/org/ibex/mail/target/Script.java index f183aa1..ac94ca9 100644 --- a/src/org/ibex/mail/target/Script.java +++ b/src/org/ibex/mail/target/Script.java @@ -37,9 +37,12 @@ public class Script extends Target { private class ScriptScope extends JS.Immutable { ScriptEnv env = new ScriptEnv(); - public Object get(Object o) { - if (o.equals("m")) return m; - if (o.equals("ibex")) return env; + public JS get(JS name) throws JSExn { + //#jsswitch(name) + case "m": return m; + case "ibex": return env; + default: return null; + //#end return null; } } @@ -89,8 +92,7 @@ public class Script extends Target { Sub(String key) { this.key = key; } public void put(JS key, JS val) throws JSExn { ScriptEnv.this.put(JSU.S(this.key + "." + JSU.toString(key)), val); } - public JS get(JS key) throws JSExn { - return ScriptEnv.this.get(JSU.S(this.key + "." + JSU.toString(key))); } + public JS get(JS key) throws JSExn { return ScriptEnv.this.get(JSU.S(this.key + "." + JSU.toString(key))); } public JS call(JS method, JS[] args) throws JSExn { return ScriptEnv.this.call(JSU.S(this.key + "." + JSU.toString(method)), args); } @@ -125,14 +127,15 @@ public class Script extends Target { return super.get(name); } - public JS call(JS name, JS[] args) throws JSExn { + public JS call(JS name0, JS[] args) throws JSExn { final JS a = args.length >= 1 ? args[0] : null; final JS b = args.length >= 2 ? args[1] : null; final JS c = args.length >= 3 ? args[2] : null; final int nargs = args.length; + String name = JSU.toString(name0); try { if (name.equals("date")) { return new JSDate(args); } - if (name.equals("mail.send")) { + if (name.equals("mail.send") || name.equals("send")) { JS m = (JS)a; StringBuffer headers = new StringBuffer(); String body = ""; @@ -151,11 +154,11 @@ public class Script extends Target { if (!ok) throw new JSExn("SMTP server rejected message"); return JSU.T; } - if (name.equals("mail.forward2")) { + if (name.equals("mail.forward2") || name.equals("forward2")) { try { Message m2 = Message.newMessage(new org.ibex.io.Stream(m.toString()), m.envelopeFrom, - new Address(a.toString())); + new Address(JSU.toString(a))); org.ibex.mail.protocol.SMTP.Outgoing.accept(m2); } catch (Exception e) { Log.warn(this, e); @@ -163,7 +166,7 @@ public class Script extends Target { } return null; } - if (name.equals("mail.forward")) { return new Target() { + if (name.equals("mail.forward") || name.equals("forward")) { return new Target() { public void accept(Message m) throws MailException { try { Message m2 = Message.newMessage(new org.ibex.io.Stream(m.toString()), @@ -175,10 +178,10 @@ public class Script extends Target { } } }; } - if (name.equals("log.debug")) { JSU.debug(a== null ? "**null**" : a.toString()); return null; } - if (name.equals("log.info")) { JSU.info(a== null ? "**null**" : a.toString()); return null; } - if (name.equals("log.warn")) { JSU.warn(a== null ? "**null**" : a.toString()); return null; } - if (name.equals("log.error")) { JSU.error(a== null ? "**null**" : a.toString()); return null; } + if (name.equals("log.debug") || name.equals("debug")) { JSU.debug(a== null ? "**null**" : JSU.toString(a)); return null; } + if (name.equals("log.info") || name.equals("info")) { JSU.info(a== null ? "**null**" : JSU.toString(a)); return null; } + if (name.equals("log.warn") || name.equals("warn")) { JSU.warn(a== null ? "**null**" : JSU.toString(a)); return null; } + if (name.equals("log.error") || name.equals("error")) { JSU.error(a== null ? "**null**" : JSU.toString(a)); return null; } switch (nargs) { case 1: if (name.equals("regexp")) {return new JSRegexp(a, null); } @@ -190,9 +193,9 @@ public class Script extends Target { Log.warn(this, "ibex."+name+"() threw: " + e); Log.warn(this, e); if (e instanceof JSExn) throw ((JSExn)e); - throw new JSExn("invalid argument for ibex object method "+name+"()"); + throw new JSExn("invalid argument for ibex object method "+JSU.toString(name0)+"()"); } - throw new JSExn("invalid number of arguments ("+nargs+") for ibex object method "+name+"()"); + throw new JSExn("invalid number of arguments ("+nargs+") for ibex object method "+JSU.toString(name0)+"()"); } public final JSMath ibexMath = new JSMath() {