// Path: app/src/main/java/com/referendum/uoctubre/main/Constants.java
// public class Constants {
//     public static final int MAX_FIREBASE_DOWNLOAD_SIZE = 1024 * 1024; //1MB
//     public static final int TWEETS_PER_PAGE = 50;
// 
//     public static final String FIREBASE_CONFIG_SHARE_APP_MESSAGEREQUIRED = "share_app_message";
//     public static final String FIREBASE_CONFIG_WEB_URL = "web_url";
//     public static final String FIREBASE_CONFIG_API_URL = "api_url";
//     public static final String PRIVACY_POLICY_URL = "https://htmlpreview.github.io/?https://github.com/mosquitolabs/referendum_1o_android/blob/master/privacy_policy.html";
// 
//     public static final String TWITTER_CONSUMER_KEY = "XXXXXX";
//     public static final String TWITTER_CONSUMER_SECRET = "XXXXXX";
// }
// 
// Path: app/src/main/java/com/referendum/uoctubre/model/ColegiElectoral.java
// public class ColegiElectoral implements Serializable {
// 
//     private String municipi;
//     private String local;
//     private String adresa;
//     private String districte;
//     private String seccio;
//     private String mesa;
// 
//     //TODO TO BE REMOVED
//     private int cp;
//     private double lat;
//     private double lon;
// 
//     public String getMunicipi() {
//         return municipi;
//     }
// 
//     public void setMunicipi(String municipi) {
//         this.municipi = municipi;
//     }
// 
//     public String getLocal() {
//         return local;
//     }
// 
//     public void setLocal(String local) {
//         this.local = local;
//     }
// 
//     public String getAdresa() {
//         return adresa;
//     }
// 
//     public void setAdresa(String adresa) {
//         this.adresa = adresa;
//     }
// 
//     public String getDistricte() {
//         return districte;
//     }
// 
//     public void setDistricte(String districte) {
//         this.districte = districte;
//     }
// 
//     public String getSeccio() {
//         return seccio;
//     }
// 
//     public void setSeccio(String seccio) {
//         this.seccio = seccio;
//     }
// 
//     public String getMesa() {
//         return mesa;
//     }
// 
//     public void setMesa(String mesa) {
//         this.mesa = mesa;
//     }
// 
//     public int getCp() {
//         return cp;
//     }
// 
//     public void setCp(int cp) {
//         this.cp = cp;
//     }
// 
//     public double getLat() {
//         return lat;
//     }
// 
//     public void setLat(double lat) {
//         this.lat = lat;
//     }
// 
//     public double getLon() {
//         return lon;
//     }
// 
//     public void setLon(double lon) {
//         this.lon = lon;
//     }
// }
// 
// Path: app/src/main/java/com/referendum/uoctubre/model/PollingStationResponse.java
// public class PollingStationResponse {
//     private String status;
//     private ColegiElectoral pollingStation;
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public ColegiElectoral getPollingStation() {
//         return pollingStation;
//     }
// 
//     public void setPollingStation(ColegiElectoral pollingStation) {
//         this.pollingStation = pollingStation;
//     }
// }


import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.referendum.uoctubre.R;
import com.referendum.uoctubre.main.Constants;
import com.referendum.uoctubre.model.ColegiElectoral;
import com.referendum.uoctubre.model.PollingStationResponse;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
package com.referendum.uoctubre.utils;




public class PollingStationDataFetcher {

    public static PollingStationResponse getUserPollingStation(String nif, Date birthDate, int zipCode) {
        PollingStationResponse pollingStationResponse = new PollingStationResponse();
        String keyDate = new SimpleDateFormat("yyyyMMdd", Locale.US).format(birthDate);
        String keyZipCode = String.format(Locale.US, "%05d", zipCode);
        String keyNif = nif.toUpperCase(Locale.US).substring(nif.length() - 6, nif.length());

        String key = keyNif + keyDate + keyZipCode;

        String firstSha256 = hash(bucleHash(key));
        String secondSha256 = hash(firstSha256);
        String dir = secondSha256.substring(0, 2);
        String file = secondSha256.substring(2, 4);

        FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
        firebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
// Path: app/src/main/java/com/referendum/uoctubre/main/Constants.java
// public class Constants {
//     public static final int MAX_FIREBASE_DOWNLOAD_SIZE = 1024 * 1024; //1MB
//     public static final int TWEETS_PER_PAGE = 50;
// 
//     public static final String FIREBASE_CONFIG_SHARE_APP_MESSAGEREQUIRED = "share_app_message";
//     public static final String FIREBASE_CONFIG_WEB_URL = "web_url";
//     public static final String FIREBASE_CONFIG_API_URL = "api_url";
//     public static final String PRIVACY_POLICY_URL = "https://htmlpreview.github.io/?https://github.com/mosquitolabs/referendum_1o_android/blob/master/privacy_policy.html";
// 
//     public static final String TWITTER_CONSUMER_KEY = "XXXXXX";
//     public static final String TWITTER_CONSUMER_SECRET = "XXXXXX";
// }
// 
// Path: app/src/main/java/com/referendum/uoctubre/model/ColegiElectoral.java
// public class ColegiElectoral implements Serializable {
// 
//     private String municipi;
//     private String local;
//     private String adresa;
//     private String districte;
//     private String seccio;
//     private String mesa;
// 
//     //TODO TO BE REMOVED
//     private int cp;
//     private double lat;
//     private double lon;
// 
//     public String getMunicipi() {
//         return municipi;
//     }
// 
//     public void setMunicipi(String municipi) {
//         this.municipi = municipi;
//     }
// 
//     public String getLocal() {
//         return local;
//     }
// 
//     public void setLocal(String local) {
//         this.local = local;
//     }
// 
//     public String getAdresa() {
//         return adresa;
//     }
// 
//     public void setAdresa(String adresa) {
//         this.adresa = adresa;
//     }
// 
//     public String getDistricte() {
//         return districte;
//     }
// 
//     public void setDistricte(String districte) {
//         this.districte = districte;
//     }
// 
//     public String getSeccio() {
//         return seccio;
//     }
// 
//     public void setSeccio(String seccio) {
//         this.seccio = seccio;
//     }
// 
//     public String getMesa() {
//         return mesa;
//     }
// 
//     public void setMesa(String mesa) {
//         this.mesa = mesa;
//     }
// 
//     public int getCp() {
//         return cp;
//     }
// 
//     public void setCp(int cp) {
//         this.cp = cp;
//     }
// 
//     public double getLat() {
//         return lat;
//     }
// 
//     public void setLat(double lat) {
//         this.lat = lat;
//     }
// 
//     public double getLon() {
//         return lon;
//     }
// 
//     public void setLon(double lon) {
//         this.lon = lon;
//     }
// }
// 
// Path: app/src/main/java/com/referendum/uoctubre/model/PollingStationResponse.java
// public class PollingStationResponse {
//     private String status;
//     private ColegiElectoral pollingStation;
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public ColegiElectoral getPollingStation() {
//         return pollingStation;
//     }
// 
//     public void setPollingStation(ColegiElectoral pollingStation) {
//         this.pollingStation = pollingStation;
//     }
// }


// Path: app/src/main/java/com/referendum/uoctubre/utils/PollingStationDataFetcher.java
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.referendum.uoctubre.R;
import com.referendum.uoctubre.main.Constants;
import com.referendum.uoctubre.model.ColegiElectoral;
import com.referendum.uoctubre.model.PollingStationResponse;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

package com.referendum.uoctubre.utils;




public class PollingStationDataFetcher {

    public static PollingStationResponse getUserPollingStation(String nif, Date birthDate, int zipCode) {
        PollingStationResponse pollingStationResponse = new PollingStationResponse();
        String keyDate = new SimpleDateFormat("yyyyMMdd", Locale.US).format(birthDate);
        String keyZipCode = String.format(Locale.US, "%05d", zipCode);
        String keyNif = nif.toUpperCase(Locale.US).substring(nif.length() - 6, nif.length());

        String key = keyNif + keyDate + keyZipCode;

        String firstSha256 = hash(bucleHash(key));
        String secondSha256 = hash(firstSha256);
        String dir = secondSha256.substring(0, 2);
        String file = secondSha256.substring(2, 4);

        FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
        firebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
        String api = firebaseRemoteConfig.getString(Constants.FIREBASE_CONFIG_API_URL);