package com.splunk.mint.network.io;

import com.splunk.mint.network.Counter;
import com.splunk.mint.network.MonitorRegistry;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public final class OutputStreamMonitor extends OutputStream
{
  private static final int MAX_POSSIBLE_HEADER_LENGTH = 50;
  public static final String OUT_POSTFIX = "-bytes-out";
  private StringBuffer body;
  private List<Byte> chars;
  private final Counter counter;
  private final OutputStream original;

  public OutputStreamMonitor(String paramString, MonitorRegistry paramMonitorRegistry, OutputStream paramOutputStream)
  {
    this.original = paramOutputStream;
    this.counter = new Counter(paramString + "-bytes-out");
    paramMonitorRegistry.add(this.counter);
    this.chars = new ArrayList();
    this.body = new StringBuffer();
  }

  private void updateBody()
  {
    byte[] arrayOfByte = new byte[this.chars.size()];
    for (int i = 0; i < arrayOfByte.length; i++)
      arrayOfByte[i] = ((Byte)this.chars.get(i)).byteValue();
    this.chars.clear();
    this.body.append(new String(arrayOfByte));
  }

  public void close()
    throws IOException
  {
    this.original.close();
  }

  public HashMap<String, List<String>> getHeaders()
  {
    HashMap localHashMap = new HashMap(1);
    if ((this.body != null) && (this.body.toString() != null) && (this.body.toString().length() > 50));
    try
    {
      BufferedReader localBufferedReader = new BufferedReader(new StringReader(this.body.toString()));
      int i = 0;
      int j = 0;
      do
      {
        String str1 = localBufferedReader.readLine();
        if (str1 == null)
          break;
        if ((i == 0) && (str1.contains(":")) && (str1.length() < 50))
        {
          int k = str1.indexOf(":");
          if (k > -1)
          {
            String str2 = str1.substring(0, k).trim();
            if (str2.equals("Host"))
            {
              String[] arrayOfString3 = new String[1];
              arrayOfString3[0] = str1.substring(k + 1, str1.length()).trim();
              localHashMap.put(str2, Arrays.asList(arrayOfString3));
              i = 1;
            }
          }
        }
        if ((j == 0) && ((str1.contains("POST")) || (str1.contains("GET"))))
        {
          String[] arrayOfString1 = str1.split(" ");
          String[] arrayOfString2 = new String[1];
          arrayOfString2[0] = arrayOfString1[1].trim();
          localHashMap.put("splk-host2", Arrays.asList(arrayOfString2));
          j = 1;
        }
      }
      while ((i == 0) || (j == 0));
      return localHashMap;
    }
    catch (IOException localIOException)
    {
      localIOException.printStackTrace();
    }
    return localHashMap;
  }

  public void write(int paramInt)
    throws IOException
  {
    this.counter.inc();
    this.original.write(paramInt);
    this.chars.add(Byte.valueOf((byte)paramInt));
    updateBody();
  }

  public void write(byte[] paramArrayOfByte)
    throws IOException
  {
    this.counter.inc(paramArrayOfByte.length);
    this.original.write(paramArrayOfByte);
    for (int i = 0; i < paramArrayOfByte.length; i++)
      this.chars.add(Byte.valueOf(paramArrayOfByte[i]));
    updateBody();
  }

  public void write(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
    throws IOException
  {
    this.counter.inc(paramInt2);
    this.original.write(paramArrayOfByte, paramInt1, paramInt2);
    for (int i = paramInt1; i < paramInt2; i++)
      this.chars.add(Byte.valueOf(paramArrayOfByte[i]));
    updateBody();
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.splunk.mint.network.io.OutputStreamMonitor
 * JD-Core Version:    0.6.2
 */