]> git.saurik.com Git - apt.git/blobdiff - methods/http.h
merge from lp:~mvo/apt/mvo
[apt.git] / methods / http.h
index dec5cd80f3105788d01512bcda625ada112a8736..aa96c6810d9824c36893a59cd9fda7d910e56f29 100644 (file)
@@ -13,7 +13,7 @@
 
 #define MAXLEN 360
 
 
 #define MAXLEN 360
 
-
+#include <apt-pkg/hashes.h>
 
 using std::cout;
 using std::endl;
 
 using std::cout;
 using std::endl;
@@ -99,6 +99,7 @@ struct ServerState
    enum {Chunked,Stream,Closes} Encoding;
    enum {Header, Data} State;
    bool Persistent;
    enum {Chunked,Stream,Closes} Encoding;
    enum {Header, Data} State;
    bool Persistent;
+   string Location;
    
    // This is a Persistent attribute of the server itself.
    bool Pipeline;
    
    // This is a Persistent attribute of the server itself.
    bool Pipeline;
@@ -116,7 +117,19 @@ struct ServerState
    void Reset() {Major = 0; Minor = 0; Result = 0; Size = 0; StartPos = 0;
                  Encoding = Closes; time(&Date); ServerFd = -1; 
                  Pipeline = true;};
    void Reset() {Major = 0; Minor = 0; Result = 0; Size = 0; StartPos = 0;
                  Encoding = Closes; time(&Date); ServerFd = -1; 
                  Pipeline = true;};
-   int RunHeaders();
+
+   /** \brief Result of the header acquire */
+   enum RunHeadersResult {
+      /** \brief Header ok */
+      RUN_HEADERS_OK,
+      /** \brief IO error while retrieving */
+      RUN_HEADERS_IO_ERROR,
+      /** \brief Parse error after retrieving */
+      RUN_HEADERS_PARSE_ERROR,
+   };
+   /** \brief Get the headers before the data */
+   RunHeadersResult RunHeaders();
+   /** \brief Transfer the data from the socket */
    bool RunData();
    
    bool Open();
    bool RunData();
    
    bool Open();
@@ -132,7 +145,27 @@ class HttpMethod : public pkgAcqMethod
    bool Go(bool ToFile,ServerState *Srv);
    bool Flush(ServerState *Srv);
    bool ServerDie(ServerState *Srv);
    bool Go(bool ToFile,ServerState *Srv);
    bool Flush(ServerState *Srv);
    bool ServerDie(ServerState *Srv);
-   int DealWithHeaders(FetchResult &Res,ServerState *Srv);
+
+   /** \brief Result of the header parsing */
+   enum DealWithHeadersResult { 
+      /** \brief The file is open and ready */
+      FILE_IS_OPEN,
+      /** \brief We got a IMS hit, the file has not changed */
+      IMS_HIT,
+      /** \brief The server reported a unrecoverable error */
+      ERROR_UNRECOVERABLE,
+      /** \brief The server reported a error with a error content page */
+      ERROR_WITH_CONTENT_PAGE,
+      /** \brief A error on the client side */
+      ERROR_NOT_FROM_SERVER,
+      /** \brief A redirect or retry request */
+      TRY_AGAIN_OR_REDIRECT 
+   };
+   /** \brief Handle the retrieved header data */
+   DealWithHeadersResult DealWithHeaders(FetchResult &Res,ServerState *Srv);
+
+   /** \brief Try to AutoDetect the proxy */
+   bool AutoDetectProxy();
 
    virtual bool Configuration(string Message);
    
 
    virtual bool Configuration(string Message);
    
@@ -145,8 +178,11 @@ class HttpMethod : public pkgAcqMethod
    protected:
    virtual bool Fetch(FetchItem *);
    
    protected:
    virtual bool Fetch(FetchItem *);
    
+   string NextURI;
+   string AutoDetectProxyCmd;
+
    public:
    public:
-   friend class ServerState;
+   friend struct ServerState;
 
    FileFd *File;
    ServerState *Server;
 
    FileFd *File;
    ServerState *Server;