001package com.gigya.android.sdk.utils; 002 003import android.support.annotation.NonNull; 004import android.support.annotation.Nullable; 005 006import java.util.Random; 007import java.util.TreeMap; 008 009public class AuthUtils { 010 011 /** 012 * Add relevant authentication parameters to request parameters. 013 * 014 * @param sessionSecret Active session secret. 015 * @param httpMethod Http request method. 016 * @param baseUrl Base url for request. 017 * @param params Active request parameters. 018 * @param offset Server click offset. 019 */ 020 public static void addAuthenticationParameters(final String sessionSecret, 021 int httpMethod, 022 String baseUrl, 023 @NonNull final TreeMap<String, Object> params, 024 @Nullable Long offset) { 025 final String timestamp = Long.toString((System.currentTimeMillis() / 1000) + (offset != null ? offset : 0)); 026 // Add timestamp. 027 params.put("timestamp", timestamp); 028 029 // Add nonce. 030 final Random random = new Random(); 031 String nonce = System.currentTimeMillis() + "_" + random.nextInt(); 032 params.put("nonce", nonce); 033 034 // Add signature. 035 final String signature = SigUtils.getSignature( 036 sessionSecret, 037 httpMethod == 1 ? "POST" : "GET", 038 baseUrl, 039 params); 040 if (signature != null) { 041 params.put("sig", signature); 042 } 043 } 044 045 /** 046 * Removing authentication specific parameters. 047 * This step is crucial when resending the same request. 048 * 049 * @param params Request parameters map. 050 */ 051 public static void removeAuthenticationParameters(@NonNull final TreeMap<String, Object> params) { 052 params.remove("sig"); 053 params.remove("timestamp"); 054 params.remove("nonce"); 055 } 056}