package com.fireworksdk.bridge.models import com.fireworksdk.bridge.models.enums.FWVideoFeedMode import com.fireworksdk.bridge.models.enums.FWVideoFeedSource import org.json.JSONArray import org.json.JSONObject object FWVideoFeedPropsModelSerializer { private const val SOURCE_KEY = "source" private const val CHANNEL_KEY = "channel" private const val PLAYLIST_KEY = "playlist" private const val PLAYLIST_GROUP_KEY = "playlistGroup" private const val HASHTAG_FILTER_EXPRESSION_KEY = "hashtagFilterExpression" private const val PRODUCT_IDS_KEY = "productIds" private const val CONTENT_ID_KEY = "contentId" private const val SHARE_URL_KEY = "shareUrl" private const val MODE_KEY = "mode" private const val MARGIN_RIGHT_KEY = "marginRight" private const val CORNER_RADIUS_KEY = "cornerRadius" private const val AD_CONFIGURATION_KEY = "adConfiguration" private const val VIDEO_FEED_CONFIGURATION_KEY = "videoFeedConfiguration" private const val VIDEO_PLAYER_CONFIGURATION_KEY = "videoPlayerConfiguration" private const val DYNAMIC_CONTENT_PARAMETERS_KEY = "dynamicContentParameters" fun serialize(model: FWVideoFeedPropsModel?): JSONObject? { model ?: return null val jsonObject = JSONObject() jsonObject.put(SOURCE_KEY, FWVideoFeedSource.serialize(model.source)) jsonObject.put(CHANNEL_KEY, model.channel) jsonObject.put(PLAYLIST_KEY, model.playlist) jsonObject.put(PLAYLIST_GROUP_KEY, model.playlistGroup) jsonObject.put(HASHTAG_FILTER_EXPRESSION_KEY, model.hashtagFilterExpression) if (model.productIds != null ) { val productIdJsonArray = JSONArray() for (item in model.productIds) { productIdJsonArray.put(item) } jsonObject.put(PRODUCT_IDS_KEY, productIdJsonArray) } jsonObject.put(CONTENT_ID_KEY, model.contentId) jsonObject.put(SHARE_URL_KEY, model.shareUrl) jsonObject.put(MODE_KEY, FWVideoFeedMode.serialize(model.mode)) jsonObject.put(VIDEO_FEED_CONFIGURATION_KEY, FWVideoFeedConfigModelSerializer.serialize(model.videoFeedConfiguration)) jsonObject.put(VIDEO_PLAYER_CONFIGURATION_KEY, FWVideoPlayerConfigModelSerializer.serialize(model.videoPlayerConfiguration)) if (model.dynamicContentParameters != null) { val dynamicContentParametersJsonObject = JSONObject() val keys = model.dynamicContentParameters.keys for (key in keys) { val list = model.dynamicContentParameters[key] if (!list.isNullOrEmpty()) { val array = JSONArray() for (item in list) { array.put(item) } dynamicContentParametersJsonObject.put(key, array) } } jsonObject.put(DYNAMIC_CONTENT_PARAMETERS_KEY, dynamicContentParametersJsonObject) } jsonObject.put(MARGIN_RIGHT_KEY, model.marginRight) jsonObject.put(CORNER_RADIUS_KEY, model.cornerRadius) jsonObject.put(AD_CONFIGURATION_KEY, FWAdConfigurationSerializer.serialize(model.adConfiguration)) return jsonObject } }