{"action":"created","comment":{"url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/comments/187633188","pull_request_review_id":119457173,"id":187633188,"diff_hunk":"@@ -0,0 +1,164 @@\n+package com.izettle.kotlin\n+\n+import com.izettle.java.ValueChecks\n+\n+/**\n+ * Takes any two nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * Usage:\n+ * ```\n+ * val field1: String? = null\n+ * val field2: Int? = null\n+ * whenNoneNull(field1, field2) { f1, f2 ->\n+ *    f1.toUppercase() // non-nullable f1\n+ *    f2.toString()    // non-nullable f2\n+ * }\n+ * ```\n+ */\n+fun <T1 : Any, T2 : Any, R : Any> whenNoneNull(p1: T1?, p2: T2?, block: (T1, T2) -> R?): R? {\n+    return if (p1 != null && p2 != null) block(p1, p2) else null\n+}\n+\n+/**\n+ * Takes any 3 nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * @see whenNoneNull\n+ */\n+fun <T1 : Any, T2 : Any, T3 : Any, R : Any> whenNoneNull(p1: T1?, p2: T2?, p3: T3?, block: (T1, T2, T3) -> R?): R? {\n+    return if (p1 != null && p2 != null && p3 != null) block(p1, p2, p3) else null\n+}\n+\n+/**\n+ * Takes any 4 nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * @see whenNoneNull\n+ */\n+fun <T1 : Any, T2 : Any, T3 : Any, T4 : Any, R : Any> whenNoneNull(\n+    p1: T1?,\n+    p2: T2?,\n+    p3: T3?,\n+    p4: T4?,\n+    block: (T1, T2, T3, T4) -> R?\n+): R? {\n+    return if (p1 != null && p2 != null && p3 != null && p4 != null) block(p1, p2, p3, p4) else null\n+}\n+\n+/**\n+ * Takes any 5 nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * @see whenNoneNull\n+ */\n+fun <T1 : Any, T2 : Any, T3 : Any, T4 : Any, T5 : Any, R : Any> whenNoneNull(\n+    p1: T1?,\n+    p2: T2?,\n+    p3: T3?,\n+    p4: T4?,\n+    p5: T5?,\n+    block: (T1, T2, T3, T4, T5) -> R?\n+): R? {\n+    return if (p1 != null && p2 != null && p3 != null && p4 != null && p5 != null) block(p1, p2, p3, p4, p5) else null\n+}\n+\n+/**\n+ * Takes any 6 nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * @see whenNoneNull\n+ */\n+fun <T1 : Any, T2 : Any, T3 : Any, T4 : Any, T5 : Any, T6 : Any, R : Any> whenNoneNull(\n+    p1: T1?,\n+    p2: T2?,\n+    p3: T3?,\n+    p4: T4?,\n+    p5: T5?,\n+    p6: T6?,\n+    block: (T1, T2, T3, T4, T5, T6) -> R?\n+): R? {\n+    return if (p1 != null && p2 != null && p3 != null && p4 != null && p5 != null && p6 != null)\n+        block(p1, p2, p3, p4, p5, p6) else null\n+}\n+\n+/**\n+ * Takes any 7 nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * @see whenNoneNull\n+ */\n+fun <T1 : Any, T2 : Any, T3 : Any, T4 : Any, T5 : Any, T6 : Any, T7 : Any, R : Any> whenNoneNull(\n+    p1: T1?,\n+    p2: T2?,\n+    p3: T3?,\n+    p4: T4?,\n+    p5: T5?,\n+    p6: T6?,\n+    p7: T7?,\n+    block: (T1, T2, T3, T4, T5, T6, T7) -> R?\n+): R? {\n+    return if (p1 != null && p2 != null && p3 != null && p4 != null && p5 != null && p6 != null && p7 != null)\n+        block(p1, p2, p3, p4, p5, p6, p7) else null\n+}\n+\n+/**\n+ * Takes any 8 nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * @see whenNoneNull\n+ */\n+fun <T1 : Any, T2 : Any, T3 : Any, T4 : Any, T5 : Any, T6 : Any, T7 : Any, T8 : Any, R : Any> whenNoneNull(\n+    p1: T1?,\n+    p2: T2?,\n+    p3: T3?,\n+    p4: T4?,\n+    p5: T5?,\n+    p6: T6?,\n+    p7: T7?,\n+    p8: T8?,\n+    block: (T1, T2, T3, T4, T5, T6, T7, T8) -> R?\n+): R? {\n+    return if (p1 != null && p2 != null && p3 != null && p4 != null && p5 != null &&\n+        p6 != null && p7 != null && p8 != null\n+    ) block(p1, p2, p3, p4, p5, p6, p7, p8) else null\n+}\n+\n+/**\n+ * Takes any 9 nullable inputs and calls the specified block with non-null asserted versions of those inputs\n+ *\n+ * @see whenNoneNull\n+ */\n+fun <T1 : Any, T2 : Any, T3 : Any, T4 : Any, T5 : Any, T6 : Any, T7 : Any, T8 : Any, T9 : Any, R : Any> whenNoneNull(\n+    p1: T1?,\n+    p2: T2?,\n+    p3: T3?,\n+    p4: T4?,\n+    p5: T5?,\n+    p6: T6?,\n+    p7: T7?,\n+    p8: T8?,\n+    p9: T9?,\n+    block: (T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R?\n+): R? {\n+    return if (p1 != null && p2 != null && p3 != null && p4 != null && p5 != null &&\n+        p6 != null && p7 != null && p8 != null && p9 != null\n+    ) block(p1, p2, p3, p4, p5, p6, p7, p8, p9) else null\n+}\n+\n+/**\n+ * Return the result of the provided block if the value is not empty according to ValueChecks.empty()\n+ *\n+ * Usage:\n+ * ```\n+ * val result = field.letIfNotEmpty { \"$it is not empty\" } ?: \"\"\n+ * ```\n+ *\n+ * @see com.izettle.java.ValueChecks.empty\n+ */\n+fun <T : Any?, R : Any?> T?.letIfNotEmpty(block: (T) -> R?): R? = if (!ValueChecks.empty(this)) block(this!!) else null\n+\n+/**\n+ * Return the result of the provided block if the value is empty according to ValueChecks.empty()\n+ *\n+ * Usage:\n+ * ```\n+ * val result = field.letIfEmpty { \"empty\" } ?: \"the $field was not empty\"\n+ * ```\n+ *\n+ * @see com.izettle.java.ValueChecks.empty\n+ */\n+fun <T : Any?, R : Any?> T?.letIfEmpty(block: () -> R?): R? = if (ValueChecks.empty(this)) block() else null","path":"izettle-kotlin/src/main/kotlin/com/izettle/kotlin/ValueChecks.kt","position":164,"original_position":164,"commit_id":"0247dcfd220bd8ecbca47b035bbbeeca7a86eff6","original_commit_id":"0247dcfd220bd8ecbca47b035bbbeeca7a86eff6","user":{"login":"pvoid","id":91985,"avatar_url":"https://avatars1.githubusercontent.com/u/91985?v=4","gravatar_id":"","url":"https://api.github.com/users/pvoid","html_url":"https://github.com/pvoid","followers_url":"https://api.github.com/users/pvoid/followers","following_url":"https://api.github.com/users/pvoid/following{/other_user}","gists_url":"https://api.github.com/users/pvoid/gists{/gist_id}","starred_url":"https://api.github.com/users/pvoid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pvoid/subscriptions","organizations_url":"https://api.github.com/users/pvoid/orgs","repos_url":"https://api.github.com/users/pvoid/repos","events_url":"https://api.github.com/users/pvoid/events{/privacy}","received_events_url":"https://api.github.com/users/pvoid/received_events","type":"User","site_admin":false},"body":"Is it just a replacement for \r\n\r\n`field.takeIf { ValueChecks.empty(this) }?.let { block() }`\r\n\r\nDoes it worth it?","created_at":"2018-05-11T14:35:18Z","updated_at":"2018-05-11T14:35:18Z","html_url":"https://github.com/iZettle/izettle-toolbox/pull/272#discussion_r187633188","pull_request_url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/comments/187633188"},"html":{"href":"https://github.com/iZettle/izettle-toolbox/pull/272#discussion_r187633188"},"pull_request":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272"}}},"pull_request":{"url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272","id":187430273,"html_url":"https://github.com/iZettle/izettle-toolbox/pull/272","diff_url":"https://github.com/iZettle/izettle-toolbox/pull/272.diff","patch_url":"https://github.com/iZettle/izettle-toolbox/pull/272.patch","issue_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/272","number":272,"state":"open","locked":false,"title":"Introduces izettle-kotlin library","user":{"login":"olsson","id":2767569,"avatar_url":"https://avatars3.githubusercontent.com/u/2767569?v=4","gravatar_id":"","url":"https://api.github.com/users/olsson","html_url":"https://github.com/olsson","followers_url":"https://api.github.com/users/olsson/followers","following_url":"https://api.github.com/users/olsson/following{/other_user}","gists_url":"https://api.github.com/users/olsson/gists{/gist_id}","starred_url":"https://api.github.com/users/olsson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olsson/subscriptions","organizations_url":"https://api.github.com/users/olsson/orgs","repos_url":"https://api.github.com/users/olsson/repos","events_url":"https://api.github.com/users/olsson/events{/privacy}","received_events_url":"https://api.github.com/users/olsson/received_events","type":"User","site_admin":false},"body":"This PR introduces a new `izettle-kotlin` library into the toolbox. The motivation for this library is simply to make programming in Kotlin at iZettle easier and more enjoyable, and to reduce boilerplate and ceremony (a primary goal of Kotlin)\r\n\r\nInitially, I have provided 4 functions that I think will make our Kotlin code more \"Kotlin-like\", by encouraging chains of calls and not `if` statements. We are already using the `whenNotNull` function in https://github.com/iZettle/online-payment and it would be much better to have it in a library like this one.\r\n\r\nHere is a summary of the features this PR will provide:\r\n\r\n```kotlin\r\n// Provides Kotlin-friendly ways of accessing ValueChecks.empty()\r\n\r\nval result1 = field.letIfNotEmpty { \"not empty: $it\" } ?: doStuffIfEmpty()\r\nval result2 = field.letIfEmpty { doStuffIfEmpty() } ?: \"$field is not empty\"\r\n\r\n\r\n// Introduces a whenNoneNull() global function that acts like a multi-variable .let()\r\n// Supports between 2 and 9 arguments of different or same types\r\n\r\nwhenNoneNull(nullableName, nullableAge) { name, age ->\r\n    println(\"Block was called with $name, $age, guaranteed to be non null\")\r\n} ?: throw Exception()\r\n\r\n\r\n// Adds a mapper between Java Optional to a nullable Kotlin type, \r\n// to cut down on boilerplate in Kotlin code where we get Optionals \r\n// from legacy Java frameworks or code\r\n\r\nval result = optional.asNullable()?.let { \"has value $it\" } ?: \"empty\"\r\n```","created_at":"2018-05-11T10:48:37Z","updated_at":"2018-05-11T14:35:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0b208e1e9fd787d3e20606b183dee68021909810","assignee":null,"assignees":[],"requested_reviewers":[{"login":"jrclaramunt","id":645592,"avatar_url":"https://avatars3.githubusercontent.com/u/645592?v=4","gravatar_id":"","url":"https://api.github.com/users/jrclaramunt","html_url":"https://github.com/jrclaramunt","followers_url":"https://api.github.com/users/jrclaramunt/followers","following_url":"https://api.github.com/users/jrclaramunt/following{/other_user}","gists_url":"https://api.github.com/users/jrclaramunt/gists{/gist_id}","starred_url":"https://api.github.com/users/jrclaramunt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrclaramunt/subscriptions","organizations_url":"https://api.github.com/users/jrclaramunt/orgs","repos_url":"https://api.github.com/users/jrclaramunt/repos","events_url":"https://api.github.com/users/jrclaramunt/events{/privacy}","received_events_url":"https://api.github.com/users/jrclaramunt/received_events","type":"User","site_admin":false},{"login":"adamvoncorswant","id":1142587,"avatar_url":"https://avatars2.githubusercontent.com/u/1142587?v=4","gravatar_id":"","url":"https://api.github.com/users/adamvoncorswant","html_url":"https://github.com/adamvoncorswant","followers_url":"https://api.github.com/users/adamvoncorswant/followers","following_url":"https://api.github.com/users/adamvoncorswant/following{/other_user}","gists_url":"https://api.github.com/users/adamvoncorswant/gists{/gist_id}","starred_url":"https://api.github.com/users/adamvoncorswant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamvoncorswant/subscriptions","organizations_url":"https://api.github.com/users/adamvoncorswant/orgs","repos_url":"https://api.github.com/users/adamvoncorswant/repos","events_url":"https://api.github.com/users/adamvoncorswant/events{/privacy}","received_events_url":"https://api.github.com/users/adamvoncorswant/received_events","type":"User","site_admin":false},{"login":"aaanders","id":1295656,"avatar_url":"https://avatars0.githubusercontent.com/u/1295656?v=4","gravatar_id":"","url":"https://api.github.com/users/aaanders","html_url":"https://github.com/aaanders","followers_url":"https://api.github.com/users/aaanders/followers","following_url":"https://api.github.com/users/aaanders/following{/other_user}","gists_url":"https://api.github.com/users/aaanders/gists{/gist_id}","starred_url":"https://api.github.com/users/aaanders/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaanders/subscriptions","organizations_url":"https://api.github.com/users/aaanders/orgs","repos_url":"https://api.github.com/users/aaanders/repos","events_url":"https://api.github.com/users/aaanders/events{/privacy}","received_events_url":"https://api.github.com/users/aaanders/received_events","type":"User","site_admin":false},{"login":"rillard","id":26705440,"avatar_url":"https://avatars0.githubusercontent.com/u/26705440?v=4","gravatar_id":"","url":"https://api.github.com/users/rillard","html_url":"https://github.com/rillard","followers_url":"https://api.github.com/users/rillard/followers","following_url":"https://api.github.com/users/rillard/following{/other_user}","gists_url":"https://api.github.com/users/rillard/gists{/gist_id}","starred_url":"https://api.github.com/users/rillard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rillard/subscriptions","organizations_url":"https://api.github.com/users/rillard/orgs","repos_url":"https://api.github.com/users/rillard/repos","events_url":"https://api.github.com/users/rillard/events{/privacy}","received_events_url":"https://api.github.com/users/rillard/received_events","type":"User","site_admin":false},{"login":"davidodelberg","id":29304390,"avatar_url":"https://avatars2.githubusercontent.com/u/29304390?v=4","gravatar_id":"","url":"https://api.github.com/users/davidodelberg","html_url":"https://github.com/davidodelberg","followers_url":"https://api.github.com/users/davidodelberg/followers","following_url":"https://api.github.com/users/davidodelberg/following{/other_user}","gists_url":"https://api.github.com/users/davidodelberg/gists{/gist_id}","starred_url":"https://api.github.com/users/davidodelberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidodelberg/subscriptions","organizations_url":"https://api.github.com/users/davidodelberg/orgs","repos_url":"https://api.github.com/users/davidodelberg/repos","events_url":"https://api.github.com/users/davidodelberg/events{/privacy}","received_events_url":"https://api.github.com/users/davidodelberg/received_events","type":"User","site_admin":false},{"login":"magnuslambert","id":33415085,"avatar_url":"https://avatars1.githubusercontent.com/u/33415085?v=4","gravatar_id":"","url":"https://api.github.com/users/magnuslambert","html_url":"https://github.com/magnuslambert","followers_url":"https://api.github.com/users/magnuslambert/followers","following_url":"https://api.github.com/users/magnuslambert/following{/other_user}","gists_url":"https://api.github.com/users/magnuslambert/gists{/gist_id}","starred_url":"https://api.github.com/users/magnuslambert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/magnuslambert/subscriptions","organizations_url":"https://api.github.com/users/magnuslambert/orgs","repos_url":"https://api.github.com/users/magnuslambert/repos","events_url":"https://api.github.com/users/magnuslambert/events{/privacy}","received_events_url":"https://api.github.com/users/magnuslambert/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":813853647,"url":"https://api.github.com/repos/iZettle/izettle-toolbox/labels/Technical%20Design","name":"Technical Design","color":"17b21e","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272/commits","review_comments_url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272/comments","review_comment_url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/comments{/number}","comments_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/272/comments","statuses_url":"https://api.github.com/repos/iZettle/izettle-toolbox/statuses/0247dcfd220bd8ecbca47b035bbbeeca7a86eff6","head":{"label":"iZettle:kotlin-library","ref":"kotlin-library","sha":"0247dcfd220bd8ecbca47b035bbbeeca7a86eff6","user":{"login":"iZettle","id":1272526,"avatar_url":"https://avatars2.githubusercontent.com/u/1272526?v=4","gravatar_id":"","url":"https://api.github.com/users/iZettle","html_url":"https://github.com/iZettle","followers_url":"https://api.github.com/users/iZettle/followers","following_url":"https://api.github.com/users/iZettle/following{/other_user}","gists_url":"https://api.github.com/users/iZettle/gists{/gist_id}","starred_url":"https://api.github.com/users/iZettle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iZettle/subscriptions","organizations_url":"https://api.github.com/users/iZettle/orgs","repos_url":"https://api.github.com/users/iZettle/repos","events_url":"https://api.github.com/users/iZettle/events{/privacy}","received_events_url":"https://api.github.com/users/iZettle/received_events","type":"Organization","site_admin":false},"repo":{"id":13087671,"name":"izettle-toolbox","full_name":"iZettle/izettle-toolbox","owner":{"login":"iZettle","id":1272526,"avatar_url":"https://avatars2.githubusercontent.com/u/1272526?v=4","gravatar_id":"","url":"https://api.github.com/users/iZettle","html_url":"https://github.com/iZettle","followers_url":"https://api.github.com/users/iZettle/followers","following_url":"https://api.github.com/users/iZettle/following{/other_user}","gists_url":"https://api.github.com/users/iZettle/gists{/gist_id}","starred_url":"https://api.github.com/users/iZettle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iZettle/subscriptions","organizations_url":"https://api.github.com/users/iZettle/orgs","repos_url":"https://api.github.com/users/iZettle/repos","events_url":"https://api.github.com/users/iZettle/events{/privacy}","received_events_url":"https://api.github.com/users/iZettle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/iZettle/izettle-toolbox","description":null,"fork":false,"url":"https://api.github.com/repos/iZettle/izettle-toolbox","forks_url":"https://api.github.com/repos/iZettle/izettle-toolbox/forks","keys_url":"https://api.github.com/repos/iZettle/izettle-toolbox/keys{/key_id}","collaborators_url":"https://api.github.com/repos/iZettle/izettle-toolbox/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/iZettle/izettle-toolbox/teams","hooks_url":"https://api.github.com/repos/iZettle/izettle-toolbox/hooks","issue_events_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/events{/number}","events_url":"https://api.github.com/repos/iZettle/izettle-toolbox/events","assignees_url":"https://api.github.com/repos/iZettle/izettle-toolbox/assignees{/user}","branches_url":"https://api.github.com/repos/iZettle/izettle-toolbox/branches{/branch}","tags_url":"https://api.github.com/repos/iZettle/izettle-toolbox/tags","blobs_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/refs{/sha}","trees_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/trees{/sha}","statuses_url":"https://api.github.com/repos/iZettle/izettle-toolbox/statuses/{sha}","languages_url":"https://api.github.com/repos/iZettle/izettle-toolbox/languages","stargazers_url":"https://api.github.com/repos/iZettle/izettle-toolbox/stargazers","contributors_url":"https://api.github.com/repos/iZettle/izettle-toolbox/contributors","subscribers_url":"https://api.github.com/repos/iZettle/izettle-toolbox/subscribers","subscription_url":"https://api.github.com/repos/iZettle/izettle-toolbox/subscription","commits_url":"https://api.github.com/repos/iZettle/izettle-toolbox/commits{/sha}","git_commits_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/commits{/sha}","comments_url":"https://api.github.com/repos/iZettle/izettle-toolbox/comments{/number}","issue_comment_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/comments{/number}","contents_url":"https://api.github.com/repos/iZettle/izettle-toolbox/contents/{+path}","compare_url":"https://api.github.com/repos/iZettle/izettle-toolbox/compare/{base}...{head}","merges_url":"https://api.github.com/repos/iZettle/izettle-toolbox/merges","archive_url":"https://api.github.com/repos/iZettle/izettle-toolbox/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/iZettle/izettle-toolbox/downloads","issues_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues{/number}","pulls_url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls{/number}","milestones_url":"https://api.github.com/repos/iZettle/izettle-toolbox/milestones{/number}","notifications_url":"https://api.github.com/repos/iZettle/izettle-toolbox/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/iZettle/izettle-toolbox/labels{/name}","releases_url":"https://api.github.com/repos/iZettle/izettle-toolbox/releases{/id}","deployments_url":"https://api.github.com/repos/iZettle/izettle-toolbox/deployments","created_at":"2013-09-25T08:01:29Z","updated_at":"2018-04-26T21:43:07Z","pushed_at":"2018-05-11T10:48:38Z","git_url":"git://github.com/iZettle/izettle-toolbox.git","ssh_url":"git@github.com:iZettle/izettle-toolbox.git","clone_url":"https://github.com/iZettle/izettle-toolbox.git","svn_url":"https://github.com/iZettle/izettle-toolbox","homepage":null,"size":1260,"stargazers_count":4,"watchers_count":4,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":14,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":1,"open_issues":14,"watchers":4,"default_branch":"master"}},"base":{"label":"iZettle:master","ref":"master","sha":"96d5e824a95d85df59fc23f173f3b4a0ff694e03","user":{"login":"iZettle","id":1272526,"avatar_url":"https://avatars2.githubusercontent.com/u/1272526?v=4","gravatar_id":"","url":"https://api.github.com/users/iZettle","html_url":"https://github.com/iZettle","followers_url":"https://api.github.com/users/iZettle/followers","following_url":"https://api.github.com/users/iZettle/following{/other_user}","gists_url":"https://api.github.com/users/iZettle/gists{/gist_id}","starred_url":"https://api.github.com/users/iZettle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iZettle/subscriptions","organizations_url":"https://api.github.com/users/iZettle/orgs","repos_url":"https://api.github.com/users/iZettle/repos","events_url":"https://api.github.com/users/iZettle/events{/privacy}","received_events_url":"https://api.github.com/users/iZettle/received_events","type":"Organization","site_admin":false},"repo":{"id":13087671,"name":"izettle-toolbox","full_name":"iZettle/izettle-toolbox","owner":{"login":"iZettle","id":1272526,"avatar_url":"https://avatars2.githubusercontent.com/u/1272526?v=4","gravatar_id":"","url":"https://api.github.com/users/iZettle","html_url":"https://github.com/iZettle","followers_url":"https://api.github.com/users/iZettle/followers","following_url":"https://api.github.com/users/iZettle/following{/other_user}","gists_url":"https://api.github.com/users/iZettle/gists{/gist_id}","starred_url":"https://api.github.com/users/iZettle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iZettle/subscriptions","organizations_url":"https://api.github.com/users/iZettle/orgs","repos_url":"https://api.github.com/users/iZettle/repos","events_url":"https://api.github.com/users/iZettle/events{/privacy}","received_events_url":"https://api.github.com/users/iZettle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/iZettle/izettle-toolbox","description":null,"fork":false,"url":"https://api.github.com/repos/iZettle/izettle-toolbox","forks_url":"https://api.github.com/repos/iZettle/izettle-toolbox/forks","keys_url":"https://api.github.com/repos/iZettle/izettle-toolbox/keys{/key_id}","collaborators_url":"https://api.github.com/repos/iZettle/izettle-toolbox/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/iZettle/izettle-toolbox/teams","hooks_url":"https://api.github.com/repos/iZettle/izettle-toolbox/hooks","issue_events_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/events{/number}","events_url":"https://api.github.com/repos/iZettle/izettle-toolbox/events","assignees_url":"https://api.github.com/repos/iZettle/izettle-toolbox/assignees{/user}","branches_url":"https://api.github.com/repos/iZettle/izettle-toolbox/branches{/branch}","tags_url":"https://api.github.com/repos/iZettle/izettle-toolbox/tags","blobs_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/refs{/sha}","trees_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/trees{/sha}","statuses_url":"https://api.github.com/repos/iZettle/izettle-toolbox/statuses/{sha}","languages_url":"https://api.github.com/repos/iZettle/izettle-toolbox/languages","stargazers_url":"https://api.github.com/repos/iZettle/izettle-toolbox/stargazers","contributors_url":"https://api.github.com/repos/iZettle/izettle-toolbox/contributors","subscribers_url":"https://api.github.com/repos/iZettle/izettle-toolbox/subscribers","subscription_url":"https://api.github.com/repos/iZettle/izettle-toolbox/subscription","commits_url":"https://api.github.com/repos/iZettle/izettle-toolbox/commits{/sha}","git_commits_url":"https://api.github.com/repos/iZettle/izettle-toolbox/git/commits{/sha}","comments_url":"https://api.github.com/repos/iZettle/izettle-toolbox/comments{/number}","issue_comment_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/comments{/number}","contents_url":"https://api.github.com/repos/iZettle/izettle-toolbox/contents/{+path}","compare_url":"https://api.github.com/repos/iZettle/izettle-toolbox/compare/{base}...{head}","merges_url":"https://api.github.com/repos/iZettle/izettle-toolbox/merges","archive_url":"https://api.github.com/repos/iZettle/izettle-toolbox/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/iZettle/izettle-toolbox/downloads","issues_url":"https://api.github.com/repos/iZettle/izettle-toolbox/issues{/number}","pulls_url":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls{/number}","milestones_url":"https://api.github.com/repos/iZettle/izettle-toolbox/milestones{/number}","notifications_url":"https://api.github.com/repos/iZettle/izettle-toolbox/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/iZettle/izettle-toolbox/labels{/name}","releases_url":"https://api.github.com/repos/iZettle/izettle-toolbox/releases{/id}","deployments_url":"https://api.github.com/repos/iZettle/izettle-toolbox/deployments","created_at":"2013-09-25T08:01:29Z","updated_at":"2018-04-26T21:43:07Z","pushed_at":"2018-05-11T10:48:38Z","git_url":"git://github.com/iZettle/izettle-toolbox.git","ssh_url":"git@github.com:iZettle/izettle-toolbox.git","clone_url":"https://github.com/iZettle/izettle-toolbox.git","svn_url":"https://github.com/iZettle/izettle-toolbox","homepage":null,"size":1260,"stargazers_count":4,"watchers_count":4,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":14,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":1,"open_issues":14,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272"},"html":{"href":"https://github.com/iZettle/izettle-toolbox/pull/272"},"issue":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/272"},"comments":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/issues/272/comments"},"review_comments":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272/comments"},"review_comment":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/pulls/272/commits"},"statuses":{"href":"https://api.github.com/repos/iZettle/izettle-toolbox/statuses/0247dcfd220bd8ecbca47b035bbbeeca7a86eff6"}},"author_association":"NONE"}}
{"actor":{"display_login":"pvoid"}}