[ http://issues.apache.org/jira/browse/NET-128?page=all ]

Rory Winston reopened NET-128:
------------------------------

             

> [PATCH] Add support for XHDR NNTP command
> -----------------------------------------
>
>                 Key: NET-128
>                 URL: http://issues.apache.org/jira/browse/NET-128
>             Project: Commons Net
>          Issue Type: Improvement
>    Affects Versions: 1.1.0
>         Environment: Operating System: other
> Platform: Other
>            Reporter: Ted Wise
>            Priority: Minor
>
> Index: net/src/java/org/apache/commons/net/nntp/NNTP.java
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-commons/net/src/java/org/apache/commons/net/nntp/NNTP.java,v
> retrieving revision 1.7
> diff -u -p -r1.7 NNTP.java
> --- net/src/java/org/apache/commons/net/nntp/NNTP.java        4 Sep 2003 
> 20:32:43 -0000       1.7
> +++ net/src/java/org/apache/commons/net/nntp/NNTP.java        23 Oct 2003 
> 19:37:57 -0000
> @@ -110,9 +110,11 @@ import org.apache.commons.net.SocketClie
>   * <p>
>   * <p>
>   * @author Daniel F. Savarese
> + * @author Ted Wise
>   * @see NNTPClient
>   * @see NNTPConnectionClosedException
>   * @see org.apache.commons.net.MalformedServerReplyException
> + * @version $Id$
>   ***/
>  
>  public class NNTP extends SocketClient
> @@ -998,6 +1000,35 @@ public class NNTP extends SocketClient
>       ***/
>      public int xover(String selectedArticles) throws IOException {
>          return sendCommand(NNTPCommand.XOVER, selectedArticles);
> +    }
> +             
> +    /***
> +     * A convenience method to send the NNTP XHDR command to the server,
> +     * receive the reply, and return the reply code.
> +     * <p>
> +     * @param header a String naming a header line (e.g., "subject").  See 
> +     * RFC-1036 for a list of valid header lines.
> +     * @param selectedArticles a String representation of the range of
> +     * article headers required. This may be an article number, or a
> +     * range of article numbers in the form "XXXX-YYYY", where XXXX
> +     * and YYYY are valid article numbers in the current group.  It
> +     * also may be of the form "XXX-", meaning "return XXX and all
> +     * following articles" In this revision, the last format is not
> +     * possible (yet).
> +     * @return The reply code received from the server.
> +     * @exception NNTPConnectionClosedException
> +     *      If the NNTP server prematurely closes the connection as a result
> +     *      of the client being idle or some other reason causing the server
> +     *      to send NNTP reply code 400.  This exception may be caught either
> +     *      as an IOException or independently as itself.
> +     * @exception IOException  If an I/O error occurs while either sending 
> the
> +     *      command or receiving the server reply.
> +     ***/
> +    public int xhdr(String header, String selectedArticles) throws 
> IOException {
> +        StringBuffer command = new StringBuffer(header);
> +     command.append(" ");
> +     command.append(selectedArticles);
> +        return sendCommand(NNTPCommand.XHDR, command.toString());
>      }
>               
>      /**
> Index: net/src/java/org/apache/commons/net/nntp/NNTPClient.java
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-commons/net/src/java/org/apache/commons/net/nntp/NNTPClient.java,v
> retrieving revision 1.5
> diff -u -p -r1.5 NNTPClient.java
> --- net/src/java/org/apache/commons/net/nntp/NNTPClient.java  4 Sep 2003
> 20:32:43 -0000        1.5
> +++ net/src/java/org/apache/commons/net/nntp/NNTPClient.java  23 Oct 2003
> 19:37:58 -0000
> @@ -116,9 +116,11 @@ import org.apache.commons.net.MalformedS
>   * <p>
>   * <p>
>   * @author Daniel F. Savarese
> + * @author Ted Wise
>   * @see NNTP
>   * @see NNTPConnectionClosedException
>   * @see org.apache.commons.net.MalformedServerReplyException
> + * @version $Id$
>   ***/
>  
>  public class NNTPClient extends NNTP
> @@ -1245,6 +1247,59 @@ public class NNTPClient extends NNTP
>      {
>          return
>              __retrieveArticleInfo(new String(lowArticleNumber + "-" + 
> +                                             highArticleNumber));
> +    }
> +
> +    /***
> +     * Private implementation of XHDR functionality.  
> +     * 
> +     * See <a href="org.apache.commons.nntp.NNTP.html#xhdr">
> +     * for legal agument formats. Alternatively, read RFC 1036. 
> +     * <p>
> +     * @param header
> +     * @param articleRange
> +     * @return Returns a DotTerminatedMessageReader if successful, null
> +     *         otherwise
> +     * @exception IOException
> +     */
> +    private Reader __retrieveHeader(String header, String articleRange)
> +        throws IOException 
> +    {
> +        if (!NNTPReply.isPositiveCompletion(xhdr(header, articleRange)))
> +            return null;
> +
> +        return new DotTerminatedMessageReader(_reader_);
> +    }
> +                     
> +    /**
> +     * Return an article header for a specified post.
> +     * <p>
> +     * @param header the header to retrieve
> +     * @param articleNumber the article to retrieve the header for
> +     * @return a DotTerminatedReader if successful, null otherwise
> +     * @throws IOException
> +     */
> +    public Reader retrieveHeader(String header, int articleNumber) throws
> IOException 
> +    {
> +        return __retrieveHeader(header, new 
> Integer(articleNumber).toString());
> +    }
> +                     
> +    /**
> +     * Return an article header for all articles between lowArticleNumber
> +     * and highArticleNumber, inclusively.
> +     * <p>
> +     * @param header
> +     * @param lowArticleNumber 
> +     * @param highArticleNumber 
> +     * @return a DotTerminatedReader if successful, null otherwise
> +     * @throws IOException
> +     */
> +    public Reader retrieveHeader(String header, int lowArticleNumber,
> +                                      int highArticleNumber)
> +        throws IOException 
> +    {
> +        return
> +            __retrieveHeader(header, new String(lowArticleNumber + "-" + 
>                                               highArticleNumber));
>      }
>  }
> Index: net/src/java/org/apache/commons/net/nntp/NNTPCommand.java
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-commons/net/src/java/org/apache/commons/net/nntp/NNTPCommand.java,v
> retrieving revision 1.4
> diff -u -p -r1.4 NNTPCommand.java
> --- net/src/java/org/apache/commons/net/nntp/NNTPCommand.java 4 Sep 2003
> 20:32:43 -0000        1.4
> +++ net/src/java/org/apache/commons/net/nntp/NNTPCommand.java 23 Oct 2003
> 19:37:58 -0000
> @@ -59,6 +59,8 @@ package org.apache.commons.net.nntp;
>   * the meaning of the codes, familiarity with RFC 977 is assumed.
>   * <p>
>   * @author Daniel F. Savarese
> + * @author Ted Wise
> + * @version $Id$
>   ***/
>  
>  public final class NNTPCommand
> @@ -81,6 +83,7 @@ public final class NNTPCommand
>      public static final int STAT      = 14;
>      public static final int AUTHINFO  = 15;
>      public static final int XOVER     = 16;
> +    public static final int XHDR      = 17;
>  
>      // Cannot be instantiated
>      private NNTPCommand()
> @@ -89,7 +92,7 @@ public final class NNTPCommand
>      static final String[] _commands = {
>          "ARTICLE", "BODY", "GROUP", "HEAD", "HELP", "IHAVE", "LAST", "LIST",
>          "NEWGROUPS", "NEWNEWS", "NEXT", "POST", "QUIT", "SLAVE", "STAT",
> -        "AUTHINFO", "XOVER"
> +        "AUTHINFO", "XOVER", "XHDR"
>      };

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to