Page Speed Optimization Libraries
1.3.25.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 RewriteDriver; 00030 class RewriteDriverFactory; 00031 class RewriteFilter; 00032 class RewriteOptions; 00033 class ServerContext; 00034 00035 class RewriteQuery { 00036 public: 00038 static const char kModPagespeed[]; 00039 static const char kModPagespeedFilters[]; 00044 static const char kNoscriptValue[]; 00045 00046 enum Status { 00047 kSuccess, 00048 kInvalid, 00049 kNoneFound 00050 }; 00051 00076 static Status Scan(bool allow_related_options, 00077 RewriteDriverFactory* factory, 00078 ServerContext* server_context, 00079 GoogleUrl* request_url, 00080 RequestHeaders* request_headers, 00081 ResponseHeaders* response_headers, 00082 scoped_ptr<RewriteOptions>* options, 00083 MessageHandler* handler); 00084 00093 template <class HeaderT> 00094 static Status ScanHeader(HeaderT* headers, 00095 RewriteOptions* options, 00096 MessageHandler* handler); 00097 00098 00103 static GoogleString GenerateResourceOption(StringPiece filter_id, 00104 RewriteDriver* driver); 00105 00106 private: 00110 static bool MayHaveCustomOptions(const QueryParams& params, 00111 const RequestHeaders* req_headers, 00112 const ResponseHeaders* resp_headers); 00113 00115 template <class HeaderT> 00116 static bool HeadersMayHaveCustomOptions(const QueryParams& params, 00117 const HeaderT* headers); 00118 00120 static Status ScanNameValue(const StringPiece& name, 00121 const GoogleString& value, 00122 RewriteOptions* options, 00123 MessageHandler* handler); 00124 00126 static Status ParseResourceOption(StringPiece value, RewriteOptions* options, 00127 const RewriteFilter* rewrite_filter); 00128 }; 00129 00130 } 00131 00132 #endif ///< NET_INSTAWEB_REWRITER_PUBLIC_REWRITE_QUERY_H_