Home | History | Annotate | Download | only in lib
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 //
      5 // Library functions related to the Financial Server ping.
      6 
      7 #ifndef RLZ_LIB_FINANCIAL_PING_H_
      8 #define RLZ_LIB_FINANCIAL_PING_H_
      9 
     10 #include <string>
     11 #include "rlz/lib/rlz_enums.h"
     12 
     13 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET)
     14 namespace net {
     15 class URLRequestContextGetter;
     16 }  // namespace net
     17 #endif
     18 
     19 namespace rlz_lib {
     20 
     21 class FinancialPing {
     22  public:
     23   // Form the HTTP request to send to the PSO server.
     24   // Will look something like:
     25   // /pso/ping?as=swg&brand=GGLD&id=124&hl=en&
     26   //           events=I7S&rep=1&rlz=I7:val,W1:&dcc=dval
     27   static bool FormRequest(Product product, const AccessPoint* access_points,
     28                           const char* product_signature,
     29                           const char* product_brand, const char* product_id,
     30                           const char* product_lang, bool exclude_machine_id,
     31                           std::string* request);
     32 
     33   // Returns whether the time is right to send a ping.
     34   // If no_delay is true, this should always ping if there are events,
     35   // or one week has passed since last_ping when there are no new events.
     36   // If no_delay is false, this should ping if current time < last_ping time
     37   // (case of time reset) or if one day has passed since last_ping and there
     38   // are events, or one week has passed since last_ping when there are
     39   // no new events.
     40   static bool IsPingTime(Product product, bool no_delay);
     41 
     42   // Set the last ping time to be now. Writes to RlzValueStore.
     43   static bool UpdateLastPingTime(Product product);
     44 
     45   // Clear the last ping time - should be called on uninstall.
     46   // Writes to RlzValueStore.
     47   static bool ClearLastPingTime(Product product);
     48 
     49   // Ping the financial server with request. Writes to RlzValueStore.
     50   static bool PingServer(const char* request, std::string* response);
     51 
     52 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET)
     53   static bool SetURLRequestContext(net::URLRequestContextGetter* context);
     54 #endif
     55 
     56  private:
     57   FinancialPing() {}
     58   ~FinancialPing() {}
     59 };
     60 
     61 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET)
     62 namespace test {
     63 void ResetSendFinancialPingInterrupted();
     64 bool WasSendFinancialPingInterrupted();
     65 }  // namespace test
     66 #endif
     67 
     68 }  // namespace rlz_lib
     69 
     70 
     71 #endif  // RLZ_LIB_FINANCIAL_PING_H_
     72