content: package im.actor.core.entity.content;
  
  import org.jetbrains.annotations.NotNull;
  import org.jetbrains.annotations.Nullable;
  
  import im.actor.core.api.ApiJsonMessage;
  import im.actor.core.entity.content.internal.ContentRemoteContainer;
  import im.actor.runtime.json.JSONException;
  import im.actor.runtime.json.JSONObject;
  
  public class LocationContent extends AbsContent {
  
      private double latitude;
      private double longitude;
      private String street;
      private String place;
      private String rawJson;
  
      @NotNull
      public static LocationContent create(double longitude, double latitude, @Nullable String street, @Nullable String place) {
          try {
              JSONObject obj = new JSONObject();
              obj.put("dataType", "location");
              JSONObject location = new JSONObject();
              location.put("latitude", latitude);
              location.put("longitude", longitude);
              if (street != null) {
                  location.put("street", street);
              }
              if (place != null) {
                  location.put("place", place);
              }
              JSONObject data = new JSONObject();
              data.put("location", location);
              obj.put("data", data);
              return new LocationContent(new ContentRemoteContainer(new ApiJsonMessage(obj.toString())));
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }
  
  
      public LocationContent(ContentRemoteContainer contentContainer) throws JSONException {
          super(contentContainer);
  
          rawJson = ((ApiJsonMessage) contentContainer.getMessage()).getRawJson();
          JSONObject data = new JSONObject(rawJson).getJSONObject("data");
          JSONObject location = data.getJSONObject("location");
          latitude = location.getDouble("latitude");
          longitude = location.getDouble("longitude");
          street = location.optString("street");
          place = location.optString("place");
      }
  
  
      public double getLatitude() {
          return latitude;
      }
  
      public double getLongitude() {
          return longitude;
      }
  
      @Nullable
      public String getStreet() {
          return street;
      }
  
      @Nullable
      public String getPlace() {
          return place;
      }
  
      public String getRawJson() {
          return rawJson;
      }
  }
  