|
4 | 4 | import okhttp3.OkHttpClient;
|
5 | 5 | import okhttp3.ResponseBody;
|
6 | 6 | import org.jetbrains.annotations.NotNull;
|
| 7 | +import org.json.JSONArray; |
7 | 8 | import org.json.JSONObject;
|
8 | 9 | import retrofit2.Response;
|
9 | 10 | import retrofit2.Retrofit;
|
@@ -552,5 +553,57 @@ public enum PublishType {
|
552 | 553 | ENTRY_PUBLISHED,
|
553 | 554 | ENTRY_UNPUBLISHED
|
554 | 555 | }
|
| 556 | + public void updateAssetUrl(Entry entry) { |
| 557 | + JSONObject entryJson = entry.toJSON(); |
| 558 | + // Check if entry consists of _embedded_items object |
| 559 | + if (!entryJson.has("_embedded_items")) { |
| 560 | + throw new IllegalArgumentException("_embedded_items not present in entry. Call includeEmbeddedItems() before fetching entry."); |
| 561 | + } |
| 562 | + // Get _embedded_items as a JSONObject |
| 563 | + JSONObject embeddedItems = entryJson.getJSONObject("_embedded_items"); |
| 564 | + Iterator<String> keys = embeddedItems.keys(); |
| 565 | + Map<String, String> assetUrls = new HashMap<>(); |
| 566 | + while (keys.hasNext()) { |
| 567 | + String key = keys.next(); |
| 568 | + Object embeddedItem = embeddedItems.get(key); |
| 569 | + if (embeddedItem instanceof JSONArray) { |
| 570 | + JSONArray itemList = (JSONArray) embeddedItem; |
| 571 | + for (int i = 0; i < itemList.length(); i++) { |
| 572 | + JSONObject item = itemList.getJSONObject(i); |
| 573 | + if ("sys_assets".equals(item.getString("_content_type_uid")) && item.has("filename")) { |
| 574 | + String url = item.getString("url"); |
| 575 | + String uid = item.getString("uid"); |
| 576 | + assetUrls.put(uid,url); |
| 577 | + } |
| 578 | + } |
| 579 | + } |
| 580 | + } |
| 581 | + updateChildObjects(entryJson, assetUrls); |
| 582 | + } |
| 583 | + private void updateChildObjects(JSONObject entryJson, Map<String, String> assetUrls) { |
| 584 | + Iterator<String> mainKeys = entryJson.keys(); |
| 585 | + while (mainKeys.hasNext()) { |
| 586 | + String key = mainKeys.next(); |
| 587 | + Object childObj = entryJson.get(key); |
| 588 | + if(childObj instanceof JSONObject) |
| 589 | + { JSONObject mainKey = (JSONObject) childObj; |
| 590 | + if (mainKey.has("children")) { |
| 591 | + JSONArray mainList = mainKey.getJSONArray("children"); |
| 592 | + for (int i = 0; i < mainList.length(); i++) { |
| 593 | + JSONObject list = mainList.getJSONObject(i); |
| 594 | + if (list.has("attrs") ) { |
| 595 | + JSONObject childList = list.getJSONObject("attrs"); |
| 596 | + if(childList.has("asset-uid") && childList.has("asset-link")){ |
| 597 | + String assetUid = childList.getString("asset-uid"); |
| 598 | + if (assetUrls.containsKey(assetUid)) { |
| 599 | + childList.put("asset-link", assetUrls.get(assetUid)); |
| 600 | + } |
| 601 | + } |
| 602 | + } |
| 603 | + } |
| 604 | + } |
| 605 | + } |
| 606 | + } |
| 607 | + } |
555 | 608 |
|
556 | 609 | }
|
0 commit comments