Multipart.java 3.9 KB
package com.squareup.mimecraft;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
import sd;

public final class Multipart
  implements Part
{
  private final List<Part> a;
  private final Map<String, String> b;
  private final String c;
  
  private Multipart(Type paramType, List<Part> paramList, String paramString)
  {
    sd.a(paramType, "Multipart type must not be null.");
    this.a = paramList;
    this.b = Collections.singletonMap("Content-Type", "multipart/" + paramType.a + "; boundary=" + paramString);
    this.c = paramString;
  }
  
  private static void a(OutputStream paramOutputStream, byte[] paramArrayOfByte, boolean paramBoolean1, boolean paramBoolean2)
    throws IOException
  {
    if (!paramBoolean1)
    {
      paramOutputStream.write(13);
      paramOutputStream.write(10);
    }
    paramOutputStream.write(45);
    paramOutputStream.write(45);
    paramOutputStream.write(paramArrayOfByte);
    if (paramBoolean2)
    {
      paramOutputStream.write(45);
      paramOutputStream.write(45);
      return;
    }
    paramOutputStream.write(13);
    paramOutputStream.write(10);
  }
  
  public final Map<String, String> getHeaders()
  {
    return this.b;
  }
  
  public final void writeBodyTo(OutputStream paramOutputStream)
    throws IOException
  {
    byte[] arrayOfByte = this.c.getBytes("UTF-8");
    Iterator localIterator = this.a.iterator();
    for (boolean bool = true; localIterator.hasNext(); bool = false)
    {
      Part localPart = (Part)localIterator.next();
      a(paramOutputStream, arrayOfByte, bool, false);
      Object localObject = localPart.getHeaders();
      if (localObject != null)
      {
        localObject = ((Map)localObject).entrySet().iterator();
        while (((Iterator)localObject).hasNext())
        {
          Map.Entry localEntry = (Map.Entry)((Iterator)localObject).next();
          paramOutputStream.write(((String)localEntry.getKey()).getBytes("UTF-8"));
          paramOutputStream.write(58);
          paramOutputStream.write(32);
          paramOutputStream.write(((String)localEntry.getValue()).getBytes("UTF-8"));
          paramOutputStream.write(13);
          paramOutputStream.write(10);
        }
      }
      paramOutputStream.write(13);
      paramOutputStream.write(10);
      localPart.writeBodyTo(paramOutputStream);
    }
    a(paramOutputStream, arrayOfByte, false, true);
  }
  
  public static class Builder
  {
    private final String a;
    private final List<Part> b = new ArrayList();
    private Multipart.Type c = Multipart.Type.MIXED;
    
    public Builder()
    {
      this(UUID.randomUUID().toString());
    }
    
    public Builder(String paramString)
    {
      this.a = paramString;
    }
    
    public Builder addPart(Part paramPart)
    {
      sd.a(paramPart, "Part must not be null.");
      this.b.add(paramPart);
      return this;
    }
    
    public Multipart build()
    {
      if (this.b.isEmpty()) {
        throw new IllegalStateException("Multipart body must have at least one part.");
      }
      return new Multipart(this.c, this.b, this.a, (byte)0);
    }
    
    public Builder type(Multipart.Type paramType)
    {
      sd.a(paramType, "Type must not be null.");
      this.c = paramType;
      return this;
    }
  }
  
  public static enum Type
  {
    final String a;
    
    static
    {
      ALTERNATIVE = new Type("ALTERNATIVE", 1, "alternative");
      DIGEST = new Type("DIGEST", 2, "digest");
      PARALLEL = new Type("PARALLEL", 3, "parallel");
    }
    
    private Type(String paramString)
    {
      this.a = paramString;
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/squareup/mimecraft/Multipart.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */