in facebook-common/src/main/java/com/facebook/share/internal/ShareInternalUtility.kt [381:425]
fun removeNamespacesFromOGJsonObject(
jsonObject: JSONObject?,
requireNamespace: Boolean
): JSONObject? {
return if (jsonObject == null) {
null
} else
try {
val newJsonObject = JSONObject()
val data = JSONObject()
val names = jsonObject.names() ?: return null
for (i in 0 until names.length()) {
val key = names.getString(i)
var value: Any?
value = jsonObject[key]
if (value is JSONObject) {
value = removeNamespacesFromOGJsonObject(value as JSONObject?, true)
} else if (value is JSONArray) {
value = removeNamespacesFromOGJsonArray(value, true)
}
val fieldNameAndNamespace = getFieldNameAndNamespaceFromFullName(key)
val namespace = fieldNameAndNamespace.first
val fieldName = fieldNameAndNamespace.second
if (requireNamespace) {
if (namespace != null && namespace == "fbsdk") {
newJsonObject.put(key, value)
} else if (namespace == null || namespace == "og") {
newJsonObject.put(fieldName, value)
} else {
data.put(fieldName, value)
}
} else if (namespace != null && namespace == "fb") {
newJsonObject.put(key, value)
} else {
newJsonObject.put(fieldName, value)
}
}
if (data.length() > 0) {
newJsonObject.put("data", data)
}
newJsonObject
} catch (e: JSONException) {
throw FacebookException("Failed to create json object from share content")
}
}