Source for gnu.inet.http.Response

   1: /*
   2:  * Response.java
   3:  * Copyright (C) 2004 The Free Software Foundation
   4:  * 
   5:  * This file is part of GNU inetlib, a library.
   6:  * 
   7:  * GNU inetlib is free software; you can redistribute it and/or modify
   8:  * it under the terms of the GNU General Public License as published by
   9:  * the Free Software Foundation; either version 2 of the License, or
  10:  * (at your option) any later version.
  11:  * 
  12:  * GNU inetlib is distributed in the hope that it will be useful,
  13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15:  * GNU General Public License for more details.
  16:  * 
  17:  * You should have received a copy of the GNU General Public License
  18:  * along with this library; if not, write to the Free Software
  19:  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20:  * 
  21:  * Linking this library statically or dynamically with other modules is
  22:  * making a combined work based on this library.  Thus, the terms and
  23:  * conditions of the GNU General Public License cover the whole
  24:  * combination.
  25:  *
  26:  * As a special exception, the copyright holders of this library give you
  27:  * permission to link this library with independent modules to produce an
  28:  * executable, regardless of the license terms of these independent
  29:  * modules, and to copy and distribute the resulting executable under
  30:  * terms of your choice, provided that you also meet, for each linked
  31:  * independent module, the terms and conditions of the license of that
  32:  * module.  An independent module is a module which is not derived from
  33:  * or based on this library.  If you modify this library, you may extend
  34:  * this exception to your version of the library, but you are not
  35:  * obliged to do so.  If you do not wish to do so, delete this
  36:  * exception statement from your version.
  37:  */
  38: 
  39: package gnu.inet.http;
  40: 
  41: import java.util.Date;
  42: 
  43: /**
  44:  * An HTTP response.
  45:  *
  46:  * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
  47:  */
  48: public class Response
  49: {
  50: 
  51:   /**
  52:    * The HTTP major version of the server issuing the response.
  53:    */
  54:   protected final int majorVersion;
  55: 
  56:   /**
  57:    * The HTTP minor version of the server issuing the response.
  58:    */
  59:   protected final int minorVersion;
  60: 
  61:   /**
  62:    * The HTTP status code of the response.
  63:    */ 
  64:   protected final int code;
  65: 
  66:   /**
  67:    * The class of the response. This is the most significant digit of the
  68:    * status code.
  69:    * <dl>
  70:    * <dt><code>1xx</code></dt> <dd>Informational response</dd>
  71:    * <dt><code>2xx</code></dt> <dd>Success</dd>
  72:    * <dt><code>3xx</code></dt> <dd>Redirection</dd>
  73:    * <dt><code>4xx</code></dt> <dd>Client error</dd>
  74:    * <dt><code>5xx</code></dt> <dd>Server error</dd>
  75:    * </dl>
  76:    */
  77:   protected final int codeClass;
  78: 
  79:   /**
  80:    * Human-readable text of the response.
  81:    */
  82:   protected final String message;
  83: 
  84:   /**
  85:    * The response headers.
  86:    */
  87:   protected final Headers headers;
  88: 
  89:   /**
  90:    * Constructs a new response with the specified parameters.
  91:    */
  92:   protected Response(int majorVersion, int minorVersion, int code,
  93:                      int codeClass, String message,
  94:                      Headers headers)
  95:   {
  96:     this.majorVersion = majorVersion;
  97:     this.minorVersion = minorVersion;
  98:     this.code = code;
  99:     this.codeClass = codeClass;
 100:     this.message = message;
 101:     this.headers = headers;
 102:   }
 103: 
 104:   /**
 105:    * Returns the HTTP major version of the server issuing the response.
 106:    * @see #majorVersion
 107:    */
 108:   public int getMajorVersion()
 109:   {
 110:     return majorVersion;
 111:   }
 112: 
 113:   /**
 114:    * Returns the HTTP minor version of the server issuing the response.
 115:    * @see #minorVersion
 116:    */
 117:   public int getMinorVersion()
 118:   {
 119:     return minorVersion;
 120:   }
 121: 
 122:   /**
 123:    * Returns the HTTP status code of the response.
 124:    * @see #code
 125:    */ 
 126:   public int getCode()
 127:   {
 128:     return code;
 129:   }
 130: 
 131:   /**
 132:    * Returns the class of the response.
 133:    * @see #codeClass
 134:    */
 135:   public int getCodeClass()
 136:   {
 137:     return codeClass;
 138:   }
 139: 
 140:   /**
 141:    * Returns the human-readable text of the response.
 142:    * @see #message
 143:    */
 144:   public String getMessage()
 145:   {
 146:     return message;
 147:   }
 148: 
 149:   /**
 150:    * Returns the headers in the response.
 151:    */
 152:   public Headers getHeaders()
 153:   {
 154:     return headers;
 155:   }
 156: 
 157:   /**
 158:    * Returns the header value for the specified name.
 159:    * @param name the header name
 160:    */
 161:   public String getHeader(String name)
 162:   {
 163:     return headers.getValue(name);
 164:   }
 165: 
 166:   /**
 167:    * Returns the header value for the specified name as an integer.
 168:    * @param name the header name
 169:    */
 170:   public int getIntHeader(String name)
 171:   {
 172:     return headers.getIntValue(name);
 173:   }
 174: 
 175:   /**
 176:    * Returns the header value for the specified name as a date.
 177:    * @param name the header name
 178:    */
 179:   public Date getDateHeader(String name)
 180:   {
 181:     return headers.getDateValue(name);
 182:   }
 183: 
 184: }