Index: rlz/lib/financial_ping.h |
=================================================================== |
--- rlz/lib/financial_ping.h (revision 0) |
+++ rlz/lib/financial_ping.h (revision 0) |
@@ -0,0 +1,64 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// Library functions related to the Financial Server ping. |
+ |
+#ifndef RLZ_LIB_FINANCIAL_PING_H_ |
+#define RLZ_LIB_FINANCIAL_PING_H_ |
+ |
+#include <string> |
+#include "rlz/lib/rlz_enums.h" |
+ |
+#if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
+namespace net { |
+class URLRequestContextGetter; |
+} // namespace net |
+#endif |
+ |
+namespace rlz_lib { |
+ |
+class FinancialPing { |
+ public: |
+ // Form the HTTP request to send to the PSO server. |
+ // Will look something like: |
+ // /pso/ping?as=swg&brand=GGLD&id=124&hl=en& |
+ // events=I7S&rep=1&rlz=I7:val,W1:&dcc=dval |
+ static bool FormRequest(Product product, const AccessPoint* access_points, |
+ const char* product_signature, |
+ const char* product_brand, const char* product_id, |
+ const char* product_lang, bool exclude_machine_id, |
+ std::string* request); |
+ |
+ // Returns whether the time is right to send a ping. |
+ // If no_delay is true, this should always ping if there are events, |
+ // or one week has passed since last_ping when there are no new events. |
+ // If no_delay is false, this should ping if current time < last_ping time |
+ // (case of time reset) or if one day has passed since last_ping and there |
+ // are events, or one week has passed since last_ping when there are |
+ // no new events. |
+ static bool IsPingTime(Product product, bool no_delay); |
+ |
+ // Set the last ping time to be now. Writes to RlzValueStore. |
+ static bool UpdateLastPingTime(Product product); |
+ |
+ // Clear the last ping time - should be called on uninstall. |
+ // Writes to RlzValueStore. |
+ static bool ClearLastPingTime(Product product); |
+ |
+ // Ping the financial server with request. Writes to RlzValueStore. |
+ static bool PingServer(const char* request, std::string* response); |
+ |
+#if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
+ static bool SetURLRequestContext(net::URLRequestContextGetter* context); |
+#endif |
+ |
+ private: |
+ FinancialPing() {} |
+ ~FinancialPing() {} |
+}; |
+ |
+} // namespace rlz_lib |
+ |
+ |
+#endif // RLZ_LIB_FINANCIAL_PING_H_ |