content: /*
   * Copyright (C) 2015 Actor LLC. <https://actor.im>
   */
  
  package im.actor.core.entity.content;
  
  import org.jetbrains.annotations.NotNull;
  import org.jetbrains.annotations.Nullable;
  
  import java.util.ArrayList;
  import java.util.HashSet;
  
  import im.actor.core.api.ApiJsonMessage;
  import im.actor.core.entity.Contact;
  import im.actor.core.entity.content.internal.ContentRemoteContainer;
  import im.actor.runtime.json.JSONArray;
  import im.actor.runtime.json.JSONException;
  import im.actor.runtime.json.JSONObject;
  
  public class ContactContent extends AbsContent {
  
      private String name;
      private String photo64;
      private String rawJson;
      private ArrayList<String> phones;
      private ArrayList<String> emails;
  
      @NotNull
      public static ContactContent create(@NotNull String name, @NotNull ArrayList<String> phones, @NotNull ArrayList<String> emails, @Nullable String base64photo) {
  
          try {
              JSONObject obj = new JSONObject();
              obj.put("dataType", "contact");
              JSONObject contact = new JSONObject();
              contact.put("name", name);
              if (base64photo != null) {
                  contact.put("photo", base64photo);
              }
              JSONArray phoneArray = new JSONArray();
              for (String phone : phones) {
                  phoneArray.put(phone);
              }
              JSONArray emailArray = new JSONArray();
              for (String phone : emails) {
                  emailArray.put(phone);
              }
              contact.put("emails", emailArray);
              contact.put("phones", phoneArray);
              JSONObject data = new JSONObject();
              data.put("contact", contact);
              obj.put("data", data);
  
              return new ContactContent(new ContentRemoteContainer(new ApiJsonMessage(obj.toString())));
          } catch (JSONException e) {
              throw new RuntimeException(e);
          }
      }
  
  
      public ContactContent(ContentRemoteContainer contentContainer) throws JSONException {
          super(contentContainer);
  
          rawJson = ((ApiJsonMessage) contentContainer.getMessage()).getRawJson();
          JSONObject data = new JSONObject(rawJson).getJSONObject("data");
          JSONObject contact = data.getJSONObject("contact");
          name = contact.getString("name");
          try {
              photo64 = contact.getString("photo");
          } catch (Exception e) {
  //            e.printStackTrace();
          }
          phones = new ArrayList<String>();
          JSONArray phonesJson = contact.getJSONArray("phones");
          for (int i = 0; i < phonesJson.length(); i++) {
              phones.add(phonesJson.getString(i));
          }
          emails = new ArrayList<String>();
          JSONArray emailsJson = contact.getJSONArray("emails");
          for (int i = 0; i < emailsJson.length(); i++) {
              emails.add(emailsJson.getString(i));
          }
      }
  
      public ArrayList<String> getPhones() {
          return phones;
      }
  
      public String getPhoto64() {
          return photo64;
      }
  
      public ArrayList<String> getEmails() {
          return emails;
      }
  
      public String getName() {
          return name;
      }
  
      public String getRawJson() {
          return rawJson;
      }
  }
  