aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-05-21 23:06:25 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-05-21 23:06:51 +0200
commit952bb99a2467bb5c1c2988d33451df0249e04a42 (patch)
tree7c8cdeba0812cf84443880010cbedc73ab3a52d7 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java
parent6d7daec37f9ac7efbdd687c97ca45f9c9ddc5602 (diff)
parent8a2ffd8f90e9653ed69f945a94f6b9702dbdfff4 (diff)
downloadopen-keychain-952bb99a2467bb5c1c2988d33451df0249e04a42.tar.gz
open-keychain-952bb99a2467bb5c1c2988d33451df0249e04a42.tar.bz2
open-keychain-952bb99a2467bb5c1c2988d33451df0249e04a42.zip
Merge remote-tracking branch 'origin/master' into wrapped-key-ring
Conflicts: OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java
index 7ae1d8fab..76797811d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java
@@ -23,29 +23,77 @@ import org.json.JSONObject;
/**
* Minimal hierarchy selector
+ *
+ * This is for picking out an item in a large multilevel JSON object, for example look at
+ * the Keybase.io User object, documentation at https://keybase.io/__/api-docs/1.0#user-objects
+ * an example available via
+ * curl https://keybase.io/_/api/1.0/user/lookup.json?username=timbray
+ *
+ * If you want to retrieve the ascii-armored key, you'd say
+ * String key = JWalk.getString(match,"them", "public_keys", "primary", "bundle");
*/
public class JWalk {
+ /**
+ * Returns an int member value from the JSON sub-object addressed by the path
+ *
+ * @param json The object
+ * @param path list of string object member selectors
+ * @return the int addressed by the path, assuming such a thing exists
+ * @throws JSONException if any step in the path doesn’t work
+ */
public static int getInt(JSONObject json, String... path) throws JSONException {
json = walk(json, path);
return json.getInt(path[path.length - 1]);
}
+ /**
+ * Returns a long member value from the JSON sub-object addressed by the path
+ *
+ * @param json The object
+ * @param path list of string object member selectors
+ * @return the int addressed by the path, assuming such a thing exists
+ * @throws JSONException if any step in the path doesn’t work
+ */
public static long getLong(JSONObject json, String... path) throws JSONException {
json = walk(json, path);
return json.getLong(path[path.length - 1]);
}
+ /**
+ * Returns a String member value from the JSON sub-object addressed by the path
+ *
+ * @param json The object
+ * @param path list of string object member selectors
+ * @return the int addressed by the path, assuming such a thing exists
+ * @throws JSONException if any step in the path doesn’t work
+ */
public static String getString(JSONObject json, String... path) throws JSONException {
json = walk(json, path);
return json.getString(path[path.length - 1]);
}
+ /**
+ * Returns a JSONArray member value from the JSON sub-object addressed by the path
+ *
+ * @param json The object
+ * @param path list of string object member selectors
+ * @return the int addressed by the path, assuming such a thing exists
+ * @throws JSONException if any step in the path doesn’t work
+ */
public static JSONArray getArray(JSONObject json, String... path) throws JSONException {
json = walk(json, path);
return json.getJSONArray(path[path.length - 1]);
}
+ /**
+ * Returns a JSONObject member value from the JSON sub-object addressed by the path, or null
+ *
+ * @param json The object
+ * @param path list of string object member selectors
+ * @return the int addressed by the path, assuming such a thing exists
+ * @throws JSONException if any step in the path, except for the last, doesn’t work
+ */
public static JSONObject optObject(JSONObject json, String... path) throws JSONException {
json = walk(json, path);
return json.optJSONObject(path[path.length - 1]);