00001
00014
00015 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_REWRITE_QUERY_H_
00016 #define NET_INSTAWEB_REWRITER_PUBLIC_REWRITE_QUERY_H_
00017
00018 #include "base/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 RewriteDriverFactory;
00029 class RewriteOptions;
00030
00031 class RewriteQuery {
00032 public:
00034 static const char kModPagespeed[];
00035 static const char kModPagespeedDisableForBots[];
00036 static const char kModPagespeedFilters[];
00037
00038 enum Status {
00039 kSuccess,
00040 kInvalid,
00041 kNoneFound
00042 };
00043
00054 static Status Scan(RewriteDriverFactory* factory,
00055 GoogleUrl* request_url,
00056 RequestHeaders* request_headers,
00057 scoped_ptr<RewriteOptions>* options,
00058 MessageHandler* handler);
00059
00060 private:
00061 static bool MayHaveCustomOptions(const QueryParams& params,
00062 const RequestHeaders& headers);
00063
00064 static Status ScanNameValue(const StringPiece& name,
00065 const GoogleString& value,
00066 RewriteOptions* options,
00067 MessageHandler* handler);
00068 };
00069
00070 }
00071
00072 #endif ///< NET_INSTAWEB_REWRITER_PUBLIC_REWRITE_QUERY_H_