package com.worklight.location.internal.deviceContextPiggybacker;

import com.worklight.location.internal.DeviceContextImpl;
import com.worklight.wlclient.WLRequestPiggybacker;
import com.worklight.wlclient.api.WLFailResponse;
import com.worklight.wlclient.api.WLRequestOptions;
import com.worklight.wlclient.api.WLResponse;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Map;

public class DeviceContextPiggybacker
  implements WLRequestPiggybacker
{
  private static final String SECURE_RANDOME_ALGORITHM = "SHA1PRNG";
  private StringBuilder binaryData = new StringBuilder();
  private final DeviceContextImpl dc;
  private int numOutstandingBits = 0;
  private long outstandingValue = 0L;
  StringBuilder sensorInfo = new StringBuilder();
  private final int sessionRandom;
  private final long sessionTimestamp;
  private StringBuilder temp = new StringBuilder();
  StringBuilder textData = new StringBuilder();

  public DeviceContextPiggybacker(DeviceContextImpl paramDeviceContextImpl)
  {
    this.dc = paramDeviceContextImpl;
    try
    {
      this.sessionRandom = ((int)Math.floor(16777216.0D * SecureRandom.getInstance("SHA1PRNG").nextDouble()));
      this.sessionTimestamp = System.currentTimeMillis();
      return;
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      throw new Error(localNoSuchAlgorithmException.getMessage());
    }
  }

  private char base64AEncode(long paramLong)
  {
    long l = paramLong & 0x3F;
    if (l < 26L)
      return (char)(int)(65L + l);
    if (l < 52L)
      return (char)(int)(97L + l - 26L);
    if (l < 62L)
      return (char)(int)(48L + l - 52L);
    if (l == 62L)
      return '-';
    if (l == 63L)
      return '_';
    throw new IllegalStateException("Internal error in base64AEncode");
  }

  private String clearTemp(int paramInt)
  {
    String str = this.temp.substring(paramInt);
    this.temp.setLength(paramInt);
    return str;
  }

  private String finishEncode()
  {
    if (this.numOutstandingBits == 0)
      return "";
    String str = writeNumber(0L, 6 - this.numOutstandingBits);
    this.numOutstandingBits = 0;
    this.outstandingValue = 0L;
    return str;
  }

  private String getMessage(DeviceContextImpl paramDeviceContextImpl)
  {
    try
    {
      this.outstandingValue = 0L;
      this.numOutstandingBits = 0;
      this.binaryData.setLength(0);
      this.textData.setLength(0);
      this.sensorInfo.setLength(0);
      this.temp.setLength(0);
      this.binaryData.append(encodeNonNegativeNumber(0L));
      this.binaryData.append(writeNumber(this.sessionRandom, 24));
      this.binaryData.append(encodeNonNegativeNumber(this.sessionTimestamp));
      this.binaryData.append(encodeNonNegativeNumber(paramDeviceContextImpl.getVersion()));
      this.binaryData.append(finishEncode());
      String str1;
      if ((paramDeviceContextImpl.getGeoPosition() == null) && (paramDeviceContextImpl.getWifiLocation() == null))
      {
        this.binaryData.append(encodeNonNegativeNumber(0L));
        String str2 = this.binaryData.toString();
        str1 = str2;
      }
      while (true)
      {
        return str1;
        encodeSensor(paramDeviceContextImpl.getGeoPosition(), new GeoPositionSensorEncoder(this));
        encodeSensor(paramDeviceContextImpl.getWifiLocation(), new WifiLocationSensorEncoder(this));
        encodeSensor(paramDeviceContextImpl.getLastModified(), new LastModifiedSensorEncoder(this, paramDeviceContextImpl));
        encodeSensor(paramDeviceContextImpl.getTimezoneOffset(), new TimezoneOffsetSensorEncoder(this));
        this.sensorInfo.append(finishEncode());
        this.binaryData.append(encodeNonNegativeNumber(this.sensorInfo.length())).append(this.sensorInfo).append(this.textData);
        str1 = this.binaryData.toString();
        this.binaryData.setLength(0);
        this.textData.setLength(0);
        this.sensorInfo.setLength(0);
      }
    }
    finally
    {
    }
  }

  String encodeBoolean(boolean paramBoolean)
  {
    if (paramBoolean);
    for (int i = 1; ; i = 0)
      return writeNumber(i, 1);
  }

  String encodeCoordsValue(Object paramObject, String paramString)
  {
    this.textData.append(paramString);
    if (paramObject == null)
    {
      this.textData.append('_');
      return "";
    }
    this.textData.append(paramObject);
    return "~";
  }

  String encodeNonNegativeNumber(long paramLong)
  {
    int i = this.temp.length();
    int j = 1;
    if (j != 0)
    {
      long l = paramLong & 0x1F;
      paramLong >>= 5;
      if (paramLong > 0L)
        l |= 32L;
      while (true)
      {
        this.temp.append(writeNumber(l, 6));
        break;
        j = 0;
      }
    }
    return clearTemp(i);
  }

  <T> void encodeSensor(T paramT, SensorEncoder<T> paramSensorEncoder)
  {
    if (paramT == null)
    {
      this.sensorInfo.append(encodeBoolean(false));
      return;
    }
    this.sensorInfo.append(encodeBoolean(true));
    paramSensorEncoder.encode(paramT);
  }

  String encodeWholeNumber(long paramLong)
  {
    StringBuilder localStringBuilder = new StringBuilder();
    if (paramLong < 0L);
    for (boolean bool = true; ; bool = false)
      return encodeBoolean(bool) + encodeNonNegativeNumber(Math.abs(paramLong));
  }

  int getNumBitsToEncode(int paramInt)
  {
    return Integer.numberOfTrailingZeros(Integer.highestOneBit(paramInt + 1));
  }

  public void onFailure(WLFailResponse paramWLFailResponse)
  {
  }

  public void onSuccess(WLResponse paramWLResponse)
  {
  }

  public void processOptions(String paramString, WLRequestOptions paramWLRequestOptions)
  {
    if ((!paramString.endsWith("events")) && (!paramString.endsWith("query")) && (!paramString.endsWith("invoke")))
      return;
    paramWLRequestOptions.getParameters().put("__wl_deviceCtx", getMessage(this.dc.clone()));
  }

  String writeNumber(long paramLong, int paramInt)
  {
    if (paramInt == 0)
      return "";
    int i = paramInt + this.numOutstandingBits;
    if (i < 6)
    {
      this.outstandingValue <<= paramInt;
      this.outstandingValue += (paramLong & -1 + (1 << paramInt));
      this.numOutstandingBits = i;
      return "";
    }
    int j = this.temp.length();
    while (i >= 6)
    {
      int k = 6 - this.numOutstandingBits;
      this.outstandingValue <<= k;
      this.outstandingValue += (paramLong >> paramInt - k & -1 + (1 << k));
      this.temp.append(base64AEncode(this.outstandingValue));
      this.outstandingValue = 0L;
      this.numOutstandingBits = 0;
      paramInt -= k;
      i -= 6;
    }
    this.outstandingValue = (paramLong & -1 + (1 << i));
    this.numOutstandingBits = i;
    return clearTemp(j);
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.worklight.location.internal.deviceContextPiggybacker.DeviceContextPiggybacker
 * JD-Core Version:    0.6.2
 */