fun removeNamespacesFromOGJsonObject()

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")
        }
  }