Page Speed Optimization Libraries  1.3.25.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 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_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines