{"action":"created","comment":{"url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/comments/182472184","pull_request_review_id":113274325,"id":182472184,"diff_hunk":"@@ -0,0 +1,127 @@\n+/*\n+ * \tCopyright (c) 2017. Toshi Inc\n+ *\n+ *  This program is free software: you can redistribute it and/or modify\n+ *     it under the terms of the GNU General Public License as published by\n+ *     the Free Software Foundation, either version 3 of the License, or\n+ *     (at your option) any later version.\n+ *\n+ *     This program is distributed in the hope that it will be useful,\n+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *     GNU General Public License for more details.\n+ *\n+ *     You should have received a copy of the GNU General Public License\n+ *     along with this program.  If not, see <http://www.gnu.org/licenses/>.\n+ */\n+\n+package com.toshi.util.sharedPrefs\n+\n+import android.preference.PreferenceManager\n+import android.util.Base64\n+import com.toshi.view.BaseApplication\n+\n+object SignalPrefs : SignalPrefsInterface {\n+\n+    private const val LOCAL_REGISTRATION_ID_PREF = \"pref_local_registration_id\"\n+    private const val SERIALIZED_IDENTITY_KEY_PAIR_PREF = \"serialized_identity_key_pair_pref\"\n+    private const val SERIALIZED_LAST_RESORT_KEY_PREF = \"serialized_last_resort_key_pref\"\n+    private const val SIGNALING_KEY_PREF = \"signaling_key_pref\"\n+    private const val SIGNED_PRE_KEY_ID_PREF = \"signed_pre_key_id\"\n+    private const val PASSWORD_PREF = \"password_pref\"\n+    private const val REGISTERED_WITH_SERVER_PREF = \"have_registered_with_server_pref\"\n+\n+    private val prefs by lazy { PreferenceManager.getDefaultSharedPreferences(BaseApplication.get()) }\n+\n+    override fun getRegisteredWithServer(): Boolean {\n+        return getBooleanPreference(REGISTERED_WITH_SERVER_PREF, false)\n+    }\n+\n+    override fun setRegisteredWithServer() {\n+        setBooleanPreference(REGISTERED_WITH_SERVER_PREF, true)\n+    }\n+\n+    override fun getLocalRegistrationId(): Int {\n+        return getIntegerPreference(LOCAL_REGISTRATION_ID_PREF, -1)\n+    }\n+\n+    override fun setLocalRegistrationId(registrationId: Int) {\n+        setIntegerPreference(LOCAL_REGISTRATION_ID_PREF, registrationId)\n+    }\n+\n+    override fun getSignalingKey(): String? {\n+        return getStringPreference(SIGNALING_KEY_PREF, null)\n+    }\n+\n+    override fun setSignalingKey(signalingKey: String) {\n+        setStringPreference(SIGNALING_KEY_PREF, signalingKey)\n+    }\n+\n+    override fun getPassword(): String? {\n+        return getStringPreference(PASSWORD_PREF, null)\n+    }\n+\n+    override fun setPassword(password: String) {\n+        setStringPreference(PASSWORD_PREF, password)\n+    }\n+\n+    override fun getSerializedIdentityKeyPair(): ByteArray? {\n+        return getByteArrayPreference(SERIALIZED_IDENTITY_KEY_PAIR_PREF)\n+    }\n+\n+    override fun setSerializedIdentityKeyPair(serializedIdentityKeyPair: ByteArray) {\n+        setByteArrayPreference(SERIALIZED_IDENTITY_KEY_PAIR_PREF, serializedIdentityKeyPair)\n+    }\n+\n+    override fun getSerializedLastResortKey(): ByteArray? {\n+        return getByteArrayPreference(SERIALIZED_LAST_RESORT_KEY_PREF)\n+    }\n+\n+    override fun setSerializedLastResortKey(serializedLastResortKey: ByteArray) {\n+        setByteArrayPreference(SERIALIZED_LAST_RESORT_KEY_PREF, serializedLastResortKey)\n+    }\n+\n+    override fun getSignedPreKeyId(): Int {\n+        return getIntegerPreference(SIGNED_PRE_KEY_ID_PREF, -1)\n+    }\n+\n+    override fun setSignedPreKeyId(signedPreKeyId: Int) {\n+        setIntegerPreference(SIGNED_PRE_KEY_ID_PREF, signedPreKeyId)\n+    }\n+\n+    override fun clear() = prefs.edit().clear().apply()\n+\n+    private fun setByteArrayPreference(key: String, value: ByteArray) {\n+        val encoded = Base64.encodeToString(value, Base64.NO_WRAP)\n+        setStringPreference(key, encoded)\n+    }\n+\n+    private fun getByteArrayPreference(key: String): ByteArray? {\n+        val encoded = getStringPreference(key, null) ?: return null\n+        return Base64.decode(encoded, Base64.NO_WRAP)\n+    }\n+\n+    private fun setStringPreference(key: String, value: String) {\n+        prefs.edit().putString(key, value).apply()\n+    }\n+\n+    private fun getStringPreference(key: String, defaultValue: String?): String? {\n+        return prefs.getString(key, defaultValue)\n+    }\n+\n+    private fun getIntegerPreference(key: String, defaultValue: Int): Int {\n+        return prefs.getInt(key, defaultValue)\n+    }\n+\n+    private fun setIntegerPreference(key: String, value: Int) {\n+        prefs.edit().putInt(key, value).apply()\n+    }\n+\n+    private fun getBooleanPreference(key: String, defaultValue: Boolean): Boolean {\n+        return prefs.getBoolean(key, defaultValue)\n+    }\n+\n+    private fun setBooleanPreference(key: String, value: Boolean) {\n+        prefs.edit().putBoolean(key, value).apply()","path":"app/src/main/java/com/toshi/util/sharedPrefs/SignalPrefs.kt","position":125,"original_position":125,"commit_id":"9d6389f6d65f6c7c1078ed742a5687dee94b09a6","original_commit_id":"9d6389f6d65f6c7c1078ed742a5687dee94b09a6","user":{"login":"martintoften","id":10745215,"avatar_url":"https://avatars2.githubusercontent.com/u/10745215?v=4","gravatar_id":"","url":"https://api.github.com/users/martintoften","html_url":"https://github.com/martintoften","followers_url":"https://api.github.com/users/martintoften/followers","following_url":"https://api.github.com/users/martintoften/following{/other_user}","gists_url":"https://api.github.com/users/martintoften/gists{/gist_id}","starred_url":"https://api.github.com/users/martintoften/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martintoften/subscriptions","organizations_url":"https://api.github.com/users/martintoften/orgs","repos_url":"https://api.github.com/users/martintoften/repos","events_url":"https://api.github.com/users/martintoften/events{/privacy}","received_events_url":"https://api.github.com/users/martintoften/received_events","type":"User","site_admin":false},"body":"Sometimes you want to use `commit` instead of `apply`. How would we split between those? We could have two extension functions for example","created_at":"2018-04-18T15:34:35Z","updated_at":"2018-04-18T15:34:35Z","html_url":"https://github.com/toshiapp/toshi-android-client/pull/1004#discussion_r182472184","pull_request_url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/comments/182472184"},"html":{"href":"https://github.com/toshiapp/toshi-android-client/pull/1004#discussion_r182472184"},"pull_request":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004"}},"in_reply_to_id":182390218},"pull_request":{"url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004","id":182179492,"html_url":"https://github.com/toshiapp/toshi-android-client/pull/1004","diff_url":"https://github.com/toshiapp/toshi-android-client/pull/1004.diff","patch_url":"https://github.com/toshiapp/toshi-android-client/pull/1004.patch","issue_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/1004","number":1004,"state":"open","locked":false,"title":"Toshi manager refactor","user":{"login":"martintoften","id":10745215,"avatar_url":"https://avatars2.githubusercontent.com/u/10745215?v=4","gravatar_id":"","url":"https://api.github.com/users/martintoften","html_url":"https://github.com/martintoften","followers_url":"https://api.github.com/users/martintoften/followers","following_url":"https://api.github.com/users/martintoften/following{/other_user}","gists_url":"https://api.github.com/users/martintoften/gists{/gist_id}","starred_url":"https://api.github.com/users/martintoften/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martintoften/subscriptions","organizations_url":"https://api.github.com/users/martintoften/orgs","repos_url":"https://api.github.com/users/martintoften/repos","events_url":"https://api.github.com/users/martintoften/events{/privacy}","received_events_url":"https://api.github.com/users/martintoften/received_events","type":"User","site_admin":false},"body":"One step closer to make all managers fully testable. This PR looks big, but it's basically many small refactoring changes","created_at":"2018-04-17T14:10:37Z","updated_at":"2018-04-18T15:34:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b26ad5c1180496ae6bfb123b216f0b9c11cde8a2","assignee":null,"assignees":[],"requested_reviewers":[{"login":"anskaal","id":1208437,"avatar_url":"https://avatars2.githubusercontent.com/u/1208437?v=4","gravatar_id":"","url":"https://api.github.com/users/anskaal","html_url":"https://github.com/anskaal","followers_url":"https://api.github.com/users/anskaal/followers","following_url":"https://api.github.com/users/anskaal/following{/other_user}","gists_url":"https://api.github.com/users/anskaal/gists{/gist_id}","starred_url":"https://api.github.com/users/anskaal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anskaal/subscriptions","organizations_url":"https://api.github.com/users/anskaal/orgs","repos_url":"https://api.github.com/users/anskaal/repos","events_url":"https://api.github.com/users/anskaal/events{/privacy}","received_events_url":"https://api.github.com/users/anskaal/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004/commits","review_comments_url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004/comments","review_comment_url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/comments{/number}","comments_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/1004/comments","statuses_url":"https://api.github.com/repos/toshiapp/toshi-android-client/statuses/9d6389f6d65f6c7c1078ed742a5687dee94b09a6","head":{"label":"toshiapp:toshi-manager-refactor","ref":"toshi-manager-refactor","sha":"9d6389f6d65f6c7c1078ed742a5687dee94b09a6","user":{"login":"toshiapp","id":18060234,"avatar_url":"https://avatars3.githubusercontent.com/u/18060234?v=4","gravatar_id":"","url":"https://api.github.com/users/toshiapp","html_url":"https://github.com/toshiapp","followers_url":"https://api.github.com/users/toshiapp/followers","following_url":"https://api.github.com/users/toshiapp/following{/other_user}","gists_url":"https://api.github.com/users/toshiapp/gists{/gist_id}","starred_url":"https://api.github.com/users/toshiapp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toshiapp/subscriptions","organizations_url":"https://api.github.com/users/toshiapp/orgs","repos_url":"https://api.github.com/users/toshiapp/repos","events_url":"https://api.github.com/users/toshiapp/events{/privacy}","received_events_url":"https://api.github.com/users/toshiapp/received_events","type":"Organization","site_admin":false},"repo":{"id":75301435,"name":"toshi-android-client","full_name":"toshiapp/toshi-android-client","owner":{"login":"toshiapp","id":18060234,"avatar_url":"https://avatars3.githubusercontent.com/u/18060234?v=4","gravatar_id":"","url":"https://api.github.com/users/toshiapp","html_url":"https://github.com/toshiapp","followers_url":"https://api.github.com/users/toshiapp/followers","following_url":"https://api.github.com/users/toshiapp/following{/other_user}","gists_url":"https://api.github.com/users/toshiapp/gists{/gist_id}","starred_url":"https://api.github.com/users/toshiapp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toshiapp/subscriptions","organizations_url":"https://api.github.com/users/toshiapp/orgs","repos_url":"https://api.github.com/users/toshiapp/repos","events_url":"https://api.github.com/users/toshiapp/events{/privacy}","received_events_url":"https://api.github.com/users/toshiapp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/toshiapp/toshi-android-client","description":"Android client for Toshi","fork":false,"url":"https://api.github.com/repos/toshiapp/toshi-android-client","forks_url":"https://api.github.com/repos/toshiapp/toshi-android-client/forks","keys_url":"https://api.github.com/repos/toshiapp/toshi-android-client/keys{/key_id}","collaborators_url":"https://api.github.com/repos/toshiapp/toshi-android-client/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/toshiapp/toshi-android-client/teams","hooks_url":"https://api.github.com/repos/toshiapp/toshi-android-client/hooks","issue_events_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/events{/number}","events_url":"https://api.github.com/repos/toshiapp/toshi-android-client/events","assignees_url":"https://api.github.com/repos/toshiapp/toshi-android-client/assignees{/user}","branches_url":"https://api.github.com/repos/toshiapp/toshi-android-client/branches{/branch}","tags_url":"https://api.github.com/repos/toshiapp/toshi-android-client/tags","blobs_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/refs{/sha}","trees_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/trees{/sha}","statuses_url":"https://api.github.com/repos/toshiapp/toshi-android-client/statuses/{sha}","languages_url":"https://api.github.com/repos/toshiapp/toshi-android-client/languages","stargazers_url":"https://api.github.com/repos/toshiapp/toshi-android-client/stargazers","contributors_url":"https://api.github.com/repos/toshiapp/toshi-android-client/contributors","subscribers_url":"https://api.github.com/repos/toshiapp/toshi-android-client/subscribers","subscription_url":"https://api.github.com/repos/toshiapp/toshi-android-client/subscription","commits_url":"https://api.github.com/repos/toshiapp/toshi-android-client/commits{/sha}","git_commits_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/commits{/sha}","comments_url":"https://api.github.com/repos/toshiapp/toshi-android-client/comments{/number}","issue_comment_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/comments{/number}","contents_url":"https://api.github.com/repos/toshiapp/toshi-android-client/contents/{+path}","compare_url":"https://api.github.com/repos/toshiapp/toshi-android-client/compare/{base}...{head}","merges_url":"https://api.github.com/repos/toshiapp/toshi-android-client/merges","archive_url":"https://api.github.com/repos/toshiapp/toshi-android-client/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/toshiapp/toshi-android-client/downloads","issues_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues{/number}","pulls_url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls{/number}","milestones_url":"https://api.github.com/repos/toshiapp/toshi-android-client/milestones{/number}","notifications_url":"https://api.github.com/repos/toshiapp/toshi-android-client/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/toshiapp/toshi-android-client/labels{/name}","releases_url":"https://api.github.com/repos/toshiapp/toshi-android-client/releases{/id}","deployments_url":"https://api.github.com/repos/toshiapp/toshi-android-client/deployments","created_at":"2016-12-01T14:41:46Z","updated_at":"2018-04-18T03:08:37Z","pushed_at":"2018-04-18T15:30:46Z","git_url":"git://github.com/toshiapp/toshi-android-client.git","ssh_url":"git@github.com:toshiapp/toshi-android-client.git","clone_url":"https://github.com/toshiapp/toshi-android-client.git","svn_url":"https://github.com/toshiapp/toshi-android-client","homepage":"","size":9759,"stargazers_count":100,"watchers_count":100,"language":"Java","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":46,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0"},"forks":46,"open_issues":10,"watchers":100,"default_branch":"master"}},"base":{"label":"toshiapp:master","ref":"master","sha":"735710944fff961dedb4cc1e96294ce2abe6d7f0","user":{"login":"toshiapp","id":18060234,"avatar_url":"https://avatars3.githubusercontent.com/u/18060234?v=4","gravatar_id":"","url":"https://api.github.com/users/toshiapp","html_url":"https://github.com/toshiapp","followers_url":"https://api.github.com/users/toshiapp/followers","following_url":"https://api.github.com/users/toshiapp/following{/other_user}","gists_url":"https://api.github.com/users/toshiapp/gists{/gist_id}","starred_url":"https://api.github.com/users/toshiapp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toshiapp/subscriptions","organizations_url":"https://api.github.com/users/toshiapp/orgs","repos_url":"https://api.github.com/users/toshiapp/repos","events_url":"https://api.github.com/users/toshiapp/events{/privacy}","received_events_url":"https://api.github.com/users/toshiapp/received_events","type":"Organization","site_admin":false},"repo":{"id":75301435,"name":"toshi-android-client","full_name":"toshiapp/toshi-android-client","owner":{"login":"toshiapp","id":18060234,"avatar_url":"https://avatars3.githubusercontent.com/u/18060234?v=4","gravatar_id":"","url":"https://api.github.com/users/toshiapp","html_url":"https://github.com/toshiapp","followers_url":"https://api.github.com/users/toshiapp/followers","following_url":"https://api.github.com/users/toshiapp/following{/other_user}","gists_url":"https://api.github.com/users/toshiapp/gists{/gist_id}","starred_url":"https://api.github.com/users/toshiapp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toshiapp/subscriptions","organizations_url":"https://api.github.com/users/toshiapp/orgs","repos_url":"https://api.github.com/users/toshiapp/repos","events_url":"https://api.github.com/users/toshiapp/events{/privacy}","received_events_url":"https://api.github.com/users/toshiapp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/toshiapp/toshi-android-client","description":"Android client for Toshi","fork":false,"url":"https://api.github.com/repos/toshiapp/toshi-android-client","forks_url":"https://api.github.com/repos/toshiapp/toshi-android-client/forks","keys_url":"https://api.github.com/repos/toshiapp/toshi-android-client/keys{/key_id}","collaborators_url":"https://api.github.com/repos/toshiapp/toshi-android-client/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/toshiapp/toshi-android-client/teams","hooks_url":"https://api.github.com/repos/toshiapp/toshi-android-client/hooks","issue_events_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/events{/number}","events_url":"https://api.github.com/repos/toshiapp/toshi-android-client/events","assignees_url":"https://api.github.com/repos/toshiapp/toshi-android-client/assignees{/user}","branches_url":"https://api.github.com/repos/toshiapp/toshi-android-client/branches{/branch}","tags_url":"https://api.github.com/repos/toshiapp/toshi-android-client/tags","blobs_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/refs{/sha}","trees_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/trees{/sha}","statuses_url":"https://api.github.com/repos/toshiapp/toshi-android-client/statuses/{sha}","languages_url":"https://api.github.com/repos/toshiapp/toshi-android-client/languages","stargazers_url":"https://api.github.com/repos/toshiapp/toshi-android-client/stargazers","contributors_url":"https://api.github.com/repos/toshiapp/toshi-android-client/contributors","subscribers_url":"https://api.github.com/repos/toshiapp/toshi-android-client/subscribers","subscription_url":"https://api.github.com/repos/toshiapp/toshi-android-client/subscription","commits_url":"https://api.github.com/repos/toshiapp/toshi-android-client/commits{/sha}","git_commits_url":"https://api.github.com/repos/toshiapp/toshi-android-client/git/commits{/sha}","comments_url":"https://api.github.com/repos/toshiapp/toshi-android-client/comments{/number}","issue_comment_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/comments{/number}","contents_url":"https://api.github.com/repos/toshiapp/toshi-android-client/contents/{+path}","compare_url":"https://api.github.com/repos/toshiapp/toshi-android-client/compare/{base}...{head}","merges_url":"https://api.github.com/repos/toshiapp/toshi-android-client/merges","archive_url":"https://api.github.com/repos/toshiapp/toshi-android-client/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/toshiapp/toshi-android-client/downloads","issues_url":"https://api.github.com/repos/toshiapp/toshi-android-client/issues{/number}","pulls_url":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls{/number}","milestones_url":"https://api.github.com/repos/toshiapp/toshi-android-client/milestones{/number}","notifications_url":"https://api.github.com/repos/toshiapp/toshi-android-client/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/toshiapp/toshi-android-client/labels{/name}","releases_url":"https://api.github.com/repos/toshiapp/toshi-android-client/releases{/id}","deployments_url":"https://api.github.com/repos/toshiapp/toshi-android-client/deployments","created_at":"2016-12-01T14:41:46Z","updated_at":"2018-04-18T03:08:37Z","pushed_at":"2018-04-18T15:30:46Z","git_url":"git://github.com/toshiapp/toshi-android-client.git","ssh_url":"git@github.com:toshiapp/toshi-android-client.git","clone_url":"https://github.com/toshiapp/toshi-android-client.git","svn_url":"https://github.com/toshiapp/toshi-android-client","homepage":"","size":9759,"stargazers_count":100,"watchers_count":100,"language":"Java","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":46,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0"},"forks":46,"open_issues":10,"watchers":100,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004"},"html":{"href":"https://github.com/toshiapp/toshi-android-client/pull/1004"},"issue":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/1004"},"comments":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/issues/1004/comments"},"review_comments":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004/comments"},"review_comment":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/pulls/1004/commits"},"statuses":{"href":"https://api.github.com/repos/toshiapp/toshi-android-client/statuses/9d6389f6d65f6c7c1078ed742a5687dee94b09a6"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"martintoften"}}