+ println("340 send the article");
+ StringBuffer buf = new StringBuffer();
+ while(true) {
+ String s = conn.readln();
+ if (s == null) throw new RuntimeException("connection closed");
+ if (s.equals(".")) break;
+ if (s.startsWith(".")) s = s.substring(1);
+ buf.append(s + "\r\n");
+ }
+ String body = buf.toString();
+ try {
+ Message m = Message.newMessage(new Fountain.StringFountain(body));
+ if (m.headers.get("newsgroups")==null)
+ println("441 posted messages must have a Newsgroups header per RFC 977");
+ else if (m.headers.get("newsgroups").indexOf('*')!=-1)
+ println("441 Newsgroups header in posted messages may not contain wildcards (*) per RFC 977");
+ else if (m.headers.get("subject")==null)
+ println("441 posted messages must have a Subject header per RFC 977");
+ // else if (m.headers.get("path")==null)
+ //println("441 posted messages must have a Path header per RFC 977");
+ else if (m.headers.get("from")==null)
+ println("441 posted messages must have a From header per RFC 977");
+ else if (m.headers.get("date")==null)
+ println("441 posted messages must have a Date header per RFC 977");
+ else {
+ api.post(m);
+ println("240 article posted ok");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ println("441 posting failed: " + e);
+ }
+ }