package com.bdc.ociney.service;
import android.util.Base64;
import android.util.Log;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* Created by florentchampigny on 18/04/2014.
*/
public class ServiceSecurity {
public static final String ALLOCINE_SECRET_KEY = "29d185d98c984a359e6e6f26a0474269";
static boolean AFFICHER_LOG = false;
static String LOG_TAG = "ALLOCINE_SECRET";
static String sha1(String input) {
try {
MessageDigest md = null;
md = MessageDigest.getInstance("SHA1");
md.update((input).getBytes("UTF-8"));
byte raw[] = md.digest();
String hash = Base64.encodeToString(raw, Base64.DEFAULT);
hash = hash.replace("\n", "");
return hash;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
static String getSED() {
DateFormat df = new SimpleDateFormat("yyyyMMdd");
String sed = df.format(new Date());
return sed;
}
static String getSIG(String params, String sed) {
if (AFFICHER_LOG)
Log.d("ALLOCINE_SECRET", "sed :" + sed);
if (AFFICHER_LOG)
Log.d("ALLOCINE_SECRET", "params :" + params);
String input = ALLOCINE_SECRET_KEY + params + "&sed=" + sed;
input = input.replace(":", "%3A");
input = input.replace(",", "%2C");
if (AFFICHER_LOG)
Log.d("ALLOCINE_SECRET", "input :" + input);
String sha1 = sha1(input);
if (AFFICHER_LOG)
Log.d("ALLOCINE_SECRET", "sha1 :" + sha1);
String sig = "";
try {
sig = URLEncoder.encode(sha1, "UTF8");
if (AFFICHER_LOG)
Log.d("ALLOCINE_SECRET", "sig :" + sig);
} catch (Exception e) {
e.printStackTrace();
} //Retrofit le fait tout seul, pas besoin ici d'encrypter eh HTML
return sha1;
}
static String applatir(List<String> liste) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < liste.size(); ++j) {
if (j != 0)
sb.append(",");
sb.append(liste.get(j));
}
return sb.toString();
}
static String construireParams(boolean ajouterCode, Object... params) {
List<Object> ps = new ArrayList<Object>();
ps.addAll(Arrays.asList(AllocineService.PARTNER, AllocineService.ALLOCINE_PARTNER_KEY));
if (ajouterCode)
ps.addAll(Arrays.asList(AllocineService.CODE, AllocineService.APP_ID));
ps.addAll(Arrays.asList(AllocineService.FORMAT, AllocineService.FORMAT_JSON));
ps.addAll(Arrays.asList(params));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ps.size(); i += 2) {
if (i + 1 < ps.size()) {
if (i != 0)
sb.append("&");
sb.append(ps.get(i)).append("=");
Object value = ps.get(i + 1);
if (value instanceof String)
sb.append((String) value);
else if (value instanceof List) {
List<String> liste = (List<String>) value;
sb.append(applatir(liste));
}
}
}
return sb.toString();
}
}