Page Speed Optimization Libraries  1.2.24.1
net/instaweb/rewriter/public/rewrite_query.h
00001 // Copyright 2011 Google Inc.
00014 
00015 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_REWRITE_QUERY_H_
00016 #define NET_INSTAWEB_REWRITER_PUBLIC_REWRITE_QUERY_H_
00017 
00018 #include "net/instaweb/util/public/scoped_ptr.h"
00019 #include "net/instaweb/util/public/string.h"
00020 #include "net/instaweb/util/public/string_util.h"
00021 
00022 namespace net_instaweb {
00023 
00024 class GoogleUrl;
00025 class MessageHandler;
00026 class QueryParams;
00027 class RequestHeaders;
00028 class ResponseHeaders;
00029 class RewriteDriverFactory;
00030 class RewriteOptions;
00031 
00032 class RewriteQuery {
00033  public:
00035   static const char kModPagespeed[];
00036   static const char kModPagespeedFilters[];
00041   static const char kNoscriptValue[];
00042 
00043   enum Status {
00044     kSuccess,
00045     kInvalid,
00046     kNoneFound
00047   };
00048 
00067   static Status Scan(RewriteDriverFactory* factory,
00068                      GoogleUrl* request_url,
00069                      RequestHeaders* request_headers,
00070                      ResponseHeaders* response_headers,
00071                      scoped_ptr<RewriteOptions>* options,
00072                      MessageHandler* handler);
00073 
00082   template <class HeaderT>
00083   static Status ScanHeader(HeaderT* headers,
00084                            RewriteOptions* options,
00085                            MessageHandler* handler);
00086 
00087  private:
00088   static bool MayHaveCustomOptions(const QueryParams& params,
00089                                    const RequestHeaders* req_headers,
00090                                    const ResponseHeaders* resp_headers);
00091 
00092   template <class HeaderT>
00093   static bool HeadersMayHaveCustomOptions(const QueryParams& params,
00094                                           const HeaderT* headers);
00095 
00096 
00097   static Status ScanNameValue(const StringPiece& name,
00098                               const GoogleString& value,
00099                               RewriteOptions* options,
00100                               MessageHandler* handler);
00101 };
00102 
00103 }  
00104 
00105 #endif  ///< NET_INSTAWEB_REWRITER_PUBLIC_REWRITE_QUERY_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines