Page Speed Optimization Libraries
1.2.24.1
|
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_