content: package allen.town.podcast.sync.gpoddernet.model;
  
  import androidx.collection.ArrayMap;
  
  import allen.town.podcast.sync.gpoddernet.GpodnetService;
  import allen.town.podcast.sync.model.UploadChangesResponse;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import java.util.Map;
  
  /**
   * Object returned by {@link GpodnetService} in uploadChanges method.
   */
  public class GpodnetUploadChangesResponse extends UploadChangesResponse {
      /**
       * URLs that should be updated. The key of the map is the original URL, the value of the map
       * is the sanitized URL.
       */
      public final Map<String, String> updatedUrls;
  
      public GpodnetUploadChangesResponse(long timestamp, Map<String, String> updatedUrls) {
          super(timestamp);
          this.updatedUrls = updatedUrls;
      }
  
      /**
       * Creates a new GpodnetUploadChangesResponse-object from a JSON object that was
       * returned by an uploadChanges call.
       *
       * @throws org.json.JSONException If the method could not parse the JSONObject.
       */
      public static GpodnetUploadChangesResponse fromJSONObject(String objectString) throws JSONException {
          final JSONObject object = new JSONObject(objectString);
          final long timestamp = object.getLong("timestamp");
          Map<String, String> updatedUrls = new ArrayMap<>();
          JSONArray urls = object.getJSONArray("update_urls");
          for (int i = 0; i < urls.length(); i++) {
              JSONArray urlPair = urls.getJSONArray(i);
              updatedUrls.put(urlPair.getString(0), urlPair.getString(1));
          }
          return new GpodnetUploadChangesResponse(timestamp, updatedUrls);
      }
  
      @Override
      public String toString() {
          return "GpodnetUploadChangesResponse{" +
                  "timestamp=" + timestamp +
                  ", updatedUrls=" + updatedUrls +
                  '}';
      }
  }
  