From b10721573aaac26245d26d9710d58340eca2932e Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 3 Mar 2020 13:25:04 -0800 Subject: [PATCH] Added Bitlinks.update() method. --- README.md | 5 +- detekt-baseline.xml | 8 ++ docs/alltypes/index.md | 7 ++ .../-bitlinks/clicks.md | 6 +- .../net.thauvin.erik.bitly/-bitlinks/index.md | 1 + docs/net.thauvin.erik.bitly/-bitly/call.md | 2 +- docs/net.thauvin.erik.bitly/-bitly/index.md | 2 +- .../-constants/-a-p-i_-b-a-s-e_-u-r-l.md | 2 +- .../-constants/-e-m-p-t-y.md | 2 +- .../-constants/-e-m-p-t-y_-j-s-o-n.md | 2 +- .../-e-n-v_-a-c-c-e-s-s_-t-o-k-e-n.md | 2 +- .../-constants/index.md | 2 + docs/net.thauvin.erik.bitly/-utils/call.md | 2 +- docs/net.thauvin.erik.bitly/-utils/index.md | 2 +- .../-utils/is-valid-url.md | 2 +- .../-utils/remove-http.md | 2 +- .../-utils/to-end-point.md | 2 +- docs/net.thauvin.erik.bitly/index.md | 1 + .../kotlin/net/thauvin/erik/bitly/Bitlinks.kt | 73 +++++++++++++++++-- .../kotlin/net/thauvin/erik/bitly/Bitly.kt | 2 +- .../net/thauvin/erik/bitly/Constants.kt | 20 ++++- .../kotlin/net/thauvin/erik/bitly/Utils.kt | 7 +- .../net/thauvin/erik/bitly/BitlyTest.kt | 17 +++-- 23 files changed, 137 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 3552ad0..93a8948 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,10 @@ bitly.bitlinks().expand("http://bit.ly/380ojFd") bitly.bitlinks().clicks("http://bit.ly/380ojFd") // Create a bitlink -bitly.bitlinks().create(title = "Erik's Weblog", long_url = "http://erik.thauvin.net/blog/") +bitly.bitlinks().create(title = "Erik's Weblog", long_url = "http://erik.thauvin.net/blog/") + +// Update a bitlink +bitly.bitlinks().update("http://bit.ly/380ojFd", title="Erik's Weblog", tags = arrayOf("blog", "weblog")) ``` - View [Kotlin](https://github.com/ethauvin/bitly-shorten/blob/master/examples/src/main/kotlin/com/example/BitlyExample.kt) or [Java](https://github.com/ethauvin/bitly-shorten/blob/master/examples/src/main/java/com/example/BitlySample.java) Examples. diff --git a/detekt-baseline.xml b/detekt-baseline.xml index 962f3f4..a4f19c8 100644 --- a/detekt-baseline.xml +++ b/detekt-baseline.xml @@ -2,11 +2,19 @@ + ComplexMethod:Bitlinks.kt$Bitlinks$update ComplexMethod:Utils.kt$Utils.Companion$call FunctionParameterNaming:Bitlinks.kt$Bitlinks$bitlink_id: String + FunctionParameterNaming:Bitlinks.kt$Bitlinks$client_id: String = Constants.EMPTY + FunctionParameterNaming:Bitlinks.kt$Bitlinks$created_at: String = Constants.EMPTY + FunctionParameterNaming:Bitlinks.kt$Bitlinks$created_by: String = Constants.EMPTY + FunctionParameterNaming:Bitlinks.kt$Bitlinks$custom_bitlinks: Array<String> = emptyArray() FunctionParameterNaming:Bitlinks.kt$Bitlinks$group_guid: String = Constants.EMPTY FunctionParameterNaming:Bitlinks.kt$Bitlinks$long_url: String + FunctionParameterNaming:Bitlinks.kt$Bitlinks$long_url: String = Constants.EMPTY FunctionParameterNaming:Bitlinks.kt$Bitlinks$unit_reference: String = Constants.EMPTY + MagicNumber:CallResponse.kt$CallResponse$200 + MagicNumber:CallResponse.kt$CallResponse$299 NestedBlockDepth:Utils.kt$Utils.Companion$call NestedBlockDepth:Utils.kt$Utils.Companion$parseBody diff --git a/docs/alltypes/index.md b/docs/alltypes/index.md index 6abd5bc..76ea730 100644 --- a/docs/alltypes/index.md +++ b/docs/alltypes/index.md @@ -20,6 +20,13 @@ Provides functions to create and manage [Bitlinks](https://dev.bitly.com/v4/#tag Provides access to the [Bitly API v4](https://dev.bitly.com/v4). +| + +##### [net.thauvin.erik.bitly.CallResponse](../net.thauvin.erik.bitly/-call-response/index.md) + +Provides a data class to hold the JSON response. + + | ##### [net.thauvin.erik.bitly.Constants](../net.thauvin.erik.bitly/-constants/index.md) diff --git a/docs/net.thauvin.erik.bitly/-bitlinks/clicks.md b/docs/net.thauvin.erik.bitly/-bitlinks/clicks.md index d4fc518..515e559 100644 --- a/docs/net.thauvin.erik.bitly/-bitlinks/clicks.md +++ b/docs/net.thauvin.erik.bitly/-bitlinks/clicks.md @@ -10,11 +10,11 @@ See the [Bitly API](https://dev.bitly.com/v4/#operation/getClicksSummaryForBitli ### Parameters -`bitlink` - The bitlink. +`bitlink` - A Bitlink made of the domain and hash. -`unit` - A unit of time. +`unit` - A [unit of time](../-units/index.md). -`units` - An integer representing the time units to query data for. pass -1 to return all units available. +`units` - An integer representing the time units to query data for. Pass -1 to return all units available. `size` - The quantity of items to be be returned. diff --git a/docs/net.thauvin.erik.bitly/-bitlinks/index.md b/docs/net.thauvin.erik.bitly/-bitlinks/index.md index 4e394fe..30dcc5d 100644 --- a/docs/net.thauvin.erik.bitly/-bitlinks/index.md +++ b/docs/net.thauvin.erik.bitly/-bitlinks/index.md @@ -22,3 +22,4 @@ See the [Bitly API](https://dev.bitly.com/v4/#tag/Bitlinks) for more information | [create](create.md) | Converts a long url to a Bitlink and sets additional parameters.`fun create(domain: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, title: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, group_guid: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, tags: `[`Array`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`> = emptyArray(), deeplinks: `[`Array`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)`<`[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`>> = emptyArray(), long_url: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, toJson: `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)` = false): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | | [expand](expand.md) | Expands a Bitlink.`fun expand(bitlink_id: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, toJson: `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)` = false): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | | [shorten](shorten.md) | Shortens a long URL.`fun shorten(long_url: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, group_guid: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, domain: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, toJson: `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)` = false): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [update](update.md) | Updates fields in the Bitlink.`fun update(bitlink: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, references: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`> = emptyMap(), archived: `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)` = false, tags: `[`Array`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`> = emptyArray(), created_at: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, title: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, deeplinks: `[`Array`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)`<`[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`>> = emptyArray(), created_by: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, long_url: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, client_id: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, custom_bitlinks: `[`Array`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`> = emptyArray(), link: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, id: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)` = Constants.EMPTY, toJson: `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)` = false): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | diff --git a/docs/net.thauvin.erik.bitly/-bitly/call.md b/docs/net.thauvin.erik.bitly/-bitly/call.md index 5886568..ec60cbd 100644 --- a/docs/net.thauvin.erik.bitly/-bitly/call.md +++ b/docs/net.thauvin.erik.bitly/-bitly/call.md @@ -2,7 +2,7 @@ # call -`@JvmOverloads fun call(endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Bitly.kt#L117) +`@JvmOverloads fun call(endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`CallResponse`](../-call-response/index.md) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Bitly.kt#L117) Executes an API call. diff --git a/docs/net.thauvin.erik.bitly/-bitly/index.md b/docs/net.thauvin.erik.bitly/-bitly/index.md index 51f6d98..6f3d1fb 100644 --- a/docs/net.thauvin.erik.bitly/-bitly/index.md +++ b/docs/net.thauvin.erik.bitly/-bitly/index.md @@ -23,4 +23,4 @@ Provides access to the [Bitly API v4](https://dev.bitly.com/v4). | Name | Summary | |---|---| | [bitlinks](bitlinks.md) | Returns a new [Bitlinks](../-bitlinks/index.md) instance.`fun bitlinks(): `[`Bitlinks`](../-bitlinks/index.md) | -| [call](call.md) | Executes an API call.`fun call(endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [call](call.md) | Executes an API call.`fun call(endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`CallResponse`](../-call-response/index.md) | diff --git a/docs/net.thauvin.erik.bitly/-constants/-a-p-i_-b-a-s-e_-u-r-l.md b/docs/net.thauvin.erik.bitly/-constants/-a-p-i_-b-a-s-e_-u-r-l.md index beb111f..c24758f 100644 --- a/docs/net.thauvin.erik.bitly/-constants/-a-p-i_-b-a-s-e_-u-r-l.md +++ b/docs/net.thauvin.erik.bitly/-constants/-a-p-i_-b-a-s-e_-u-r-l.md @@ -2,7 +2,7 @@ # API_BASE_URL -`const val API_BASE_URL: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L42) +`const val API_BASE_URL: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L43) The Bitly API base URL. diff --git a/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y.md b/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y.md index d48cafe..8ffe3dd 100644 --- a/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y.md +++ b/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y.md @@ -2,7 +2,7 @@ # EMPTY -`const val EMPTY: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L51) +`const val EMPTY: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L53) Empty String. diff --git a/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y_-j-s-o-n.md b/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y_-j-s-o-n.md index 1a701aa..839f6dd 100644 --- a/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y_-j-s-o-n.md +++ b/docs/net.thauvin.erik.bitly/-constants/-e-m-p-t-y_-j-s-o-n.md @@ -2,7 +2,7 @@ # EMPTY_JSON -`const val EMPTY_JSON: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L54) +`const val EMPTY_JSON: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L56) Empty JSON Object. diff --git a/docs/net.thauvin.erik.bitly/-constants/-e-n-v_-a-c-c-e-s-s_-t-o-k-e-n.md b/docs/net.thauvin.erik.bitly/-constants/-e-n-v_-a-c-c-e-s-s_-t-o-k-e-n.md index c3ff8b3..8d2a60e 100644 --- a/docs/net.thauvin.erik.bitly/-constants/-e-n-v_-a-c-c-e-s-s_-t-o-k-e-n.md +++ b/docs/net.thauvin.erik.bitly/-constants/-e-n-v_-a-c-c-e-s-s_-t-o-k-e-n.md @@ -2,7 +2,7 @@ # ENV_ACCESS_TOKEN -`const val ENV_ACCESS_TOKEN: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L48) +`const val ENV_ACCESS_TOKEN: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt#L50) The API access token environment variable. diff --git a/docs/net.thauvin.erik.bitly/-constants/index.md b/docs/net.thauvin.erik.bitly/-constants/index.md index b7385f6..1380cdf 100644 --- a/docs/net.thauvin.erik.bitly/-constants/index.md +++ b/docs/net.thauvin.erik.bitly/-constants/index.md @@ -14,3 +14,5 @@ Provides the constants for this package. | [EMPTY](-e-m-p-t-y.md) | Empty String.`const val EMPTY: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | | [EMPTY_JSON](-e-m-p-t-y_-j-s-o-n.md) | Empty JSON Object.`const val EMPTY_JSON: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | | [ENV_ACCESS_TOKEN](-e-n-v_-a-c-c-e-s-s_-t-o-k-e-n.md) | The API access token environment variable.`const val ENV_ACCESS_TOKEN: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [FALSE](-f-a-l-s-e.md) | False`const val FALSE: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [TRUE](-t-r-u-e.md) | True`const val TRUE: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | diff --git a/docs/net.thauvin.erik.bitly/-utils/call.md b/docs/net.thauvin.erik.bitly/-utils/call.md index 11c1cb7..bc82ad2 100644 --- a/docs/net.thauvin.erik.bitly/-utils/call.md +++ b/docs/net.thauvin.erik.bitly/-utils/call.md @@ -2,7 +2,7 @@ # call -`@JvmOverloads fun call(accessToken: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L65) +`@JvmOverloads fun call(accessToken: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`CallResponse`](../-call-response/index.md) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L65) Executes an API call. diff --git a/docs/net.thauvin.erik.bitly/-utils/index.md b/docs/net.thauvin.erik.bitly/-utils/index.md index 635825d..8e4086f 100644 --- a/docs/net.thauvin.erik.bitly/-utils/index.md +++ b/docs/net.thauvin.erik.bitly/-utils/index.md @@ -16,7 +16,7 @@ Provides useful generic functions. | Name | Summary | |---|---| -| [call](call.md) | Executes an API call.`fun call(accessToken: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | +| [call](call.md) | Executes an API call.`fun call(accessToken: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, endPoint: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, params: `[`Map`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)`<`[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[`Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> = emptyMap(), method: `[`Methods`](../-methods/index.md)` = Methods.POST): `[`CallResponse`](../-call-response/index.md) | | [isValidUrl](is-valid-url.md) | Validates a URL.`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.isValidUrl(): `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | | [removeHttp](remove-http.md) | Removes http(s) scheme from string.`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.removeHttp(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | | [toEndPoint](to-end-point.md) | Builds the full API endpoint URL using the [Constants.API_BASE_URL](../-constants/-a-p-i_-b-a-s-e_-u-r-l.md).`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.toEndPoint(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | diff --git a/docs/net.thauvin.erik.bitly/-utils/is-valid-url.md b/docs/net.thauvin.erik.bitly/-utils/is-valid-url.md index 8e7ba41..81a81ac 100644 --- a/docs/net.thauvin.erik.bitly/-utils/is-valid-url.md +++ b/docs/net.thauvin.erik.bitly/-utils/is-valid-url.md @@ -2,7 +2,7 @@ # isValidUrl -`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.isValidUrl(): `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L148) +`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.isValidUrl(): `[`Boolean`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L149) Validates a URL. diff --git a/docs/net.thauvin.erik.bitly/-utils/remove-http.md b/docs/net.thauvin.erik.bitly/-utils/remove-http.md index 2b6a221..ff9aa3a 100644 --- a/docs/net.thauvin.erik.bitly/-utils/remove-http.md +++ b/docs/net.thauvin.erik.bitly/-utils/remove-http.md @@ -2,7 +2,7 @@ # removeHttp -`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.removeHttp(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L163) +`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.removeHttp(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L164) Removes http(s) scheme from string. diff --git a/docs/net.thauvin.erik.bitly/-utils/to-end-point.md b/docs/net.thauvin.erik.bitly/-utils/to-end-point.md index c601025..8ad55b5 100644 --- a/docs/net.thauvin.erik.bitly/-utils/to-end-point.md +++ b/docs/net.thauvin.erik.bitly/-utils/to-end-point.md @@ -2,7 +2,7 @@ # toEndPoint -`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.toEndPoint(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L170) +`fun `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`.toEndPoint(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) [(source)](https://github.com/ethauvin/bitly-shorten/tree/master/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt#L171) Builds the full API endpoint URL using the [Constants.API_BASE_URL](../-constants/-a-p-i_-b-a-s-e_-u-r-l.md). diff --git a/docs/net.thauvin.erik.bitly/index.md b/docs/net.thauvin.erik.bitly/index.md index 0694f0e..a1d8eaf 100644 --- a/docs/net.thauvin.erik.bitly/index.md +++ b/docs/net.thauvin.erik.bitly/index.md @@ -10,6 +10,7 @@ Provides the classes necessary to access the [Bitly API v4](https://dev.bitly.co |---|---| | [Bitlinks](-bitlinks/index.md) | Provides functions to create and manage [Bitlinks](https://dev.bitly.com/v4/#tag/Bitlinks).`open class Bitlinks` | | [Bitly](-bitly/index.md) | Provides access to the [Bitly API v4](https://dev.bitly.com/v4).`open class Bitly` | +| [CallResponse](-call-response/index.md) | Provides a data class to hold the JSON response.`data class CallResponse` | | [Constants](-constants/index.md) | Provides the constants for this package.`open class Constants` | | [Methods](-methods/index.md) | Provides HTTP methods definitions.`enum class Methods` | | [Units](-units/index.md) | Provides units of time definitions.`enum class Units` | diff --git a/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt b/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt index a9cf4ab..c18097a 100644 --- a/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt +++ b/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt @@ -50,9 +50,9 @@ open class Bitlinks(private val accessToken: String) { * * See the [Bitly API](https://dev.bitly.com/v4/#operation/getClicksSummaryForBitlink) for more information. * - * @param bitlink The bitlink. - * @param unit A unit of time. - * @param units An integer representing the time units to query data for. pass -1 to return all units available. + * @param bitlink A Bitlink made of the domain and hash. + * @param unit A [unit of time][Units]. + * @param units An integer representing the time units to query data for. Pass -1 to return all units available. * @param size The quantity of items to be be returned. * @param unit_reference An ISO-8601 timestamp, indicating the most recent time for which to pull metrics. * Will default to current time. @@ -72,7 +72,7 @@ open class Bitlinks(private val accessToken: String) { if (bitlink.isNotBlank()) { val response = Utils.call( accessToken, - ("/bitlinks/" + bitlink.removeHttp() + "/clicks/summary").toEndPoint(), + ("/bitlinks/${bitlink.removeHttp()}/clicks/summary").toEndPoint(), hashMapOf( Pair("unit", unit.toString().toLowerCase()), Pair("units", units.toString()), @@ -156,14 +156,14 @@ open class Bitlinks(private val accessToken: String) { default } - private fun parseJsonResponse(response: String, key: String, default: String, toJson: Boolean): String { + private fun parseJsonResponse(response: CallResponse, key: String, default: String, toJson: Boolean): String { var parsed = default - if (response.isNotEmpty()) { + if (response.body.isNotEmpty()) { if (toJson) { - parsed = response + parsed = response.body } else { try { - parsed = JSONObject(response).getString(key, default) + parsed = JSONObject(response.body).getString(key, default) } catch (jse: JSONException) { Utils.logger.log(Level.SEVERE, "An error occurred parsing the response from Bitly.", jse) } @@ -208,4 +208,61 @@ open class Bitlinks(private val accessToken: String) { return bitlink } + + /** + * Updates fields in the Bitlink. + * + * See the [Bit.ly API](https://dev.bitly.com/v4/#operation/updateBitlink) for more information. + * + * @oaran bitlink A Bitlink made of the domain and hash. + * @param toJson Returns the full JSON response if `true` + * @return `true` is the update was successful, `false` otherwise, or JSON response. + */ + @JvmOverloads + fun update( + bitlink: String, + references: Map = emptyMap(), + archived: Boolean = false, + tags: Array = emptyArray(), + created_at: String = Constants.EMPTY, + title: String = Constants.EMPTY, + deeplinks: Array> = emptyArray(), + created_by: String = Constants.EMPTY, + long_url: String = Constants.EMPTY, + client_id: String = Constants.EMPTY, + custom_bitlinks: Array = emptyArray(), + link: String = Constants.EMPTY, + id: String = Constants.EMPTY, + toJson: Boolean = false + ): String { + var result = if (toJson) Constants.EMPTY_JSON else Constants.FALSE + if (bitlink.isNotBlank()) { + val response = Utils.call( + accessToken, "/bitlinks/${bitlink.removeHttp()}".toEndPoint(), mutableMapOf().apply { + if (references.isNotEmpty()) put("references", references) + if (archived) put("archived", archived) + if (tags.isNotEmpty()) put("tags", tags) + if (created_at.isNotBlank()) put("created_at", created_at) + if (title.isNotBlank()) put("title", title) + if (deeplinks.isNotEmpty()) put("deeplinks", deeplinks) + if (created_by.isNotBlank()) put("created_by", created_by) + if (long_url.isNotBlank()) put("long_url", long_url) + if (client_id.isNotBlank()) put("client_id", client_id) + if (custom_bitlinks.isNotEmpty()) put("custom_bitlinks", custom_bitlinks) + if (link.isNotBlank()) put("link", link) + if (id.isNotBlank()) put("id", id) + }, + Methods.PATCH + ) + + if (response.isSuccessful) { + result = if (toJson) { + response.body + } else { + Constants.TRUE + } + } + } + return result + } } diff --git a/src/main/kotlin/net/thauvin/erik/bitly/Bitly.kt b/src/main/kotlin/net/thauvin/erik/bitly/Bitly.kt index ae24cf9..26b3165 100644 --- a/src/main/kotlin/net/thauvin/erik/bitly/Bitly.kt +++ b/src/main/kotlin/net/thauvin/erik/bitly/Bitly.kt @@ -114,7 +114,7 @@ open class Bitly() { * @return The response (JSON) from the API. */ @JvmOverloads - fun call(endPoint: String, params: Map = emptyMap(), method: Methods = Methods.POST): String { + fun call(endPoint: String, params: Map = emptyMap(), method: Methods = Methods.POST): CallResponse { return Utils.call(accessToken, endPoint, params, method) } } diff --git a/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt b/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt index d8466df..8669d83 100644 --- a/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt +++ b/src/main/kotlin/net/thauvin/erik/bitly/Constants.kt @@ -35,13 +35,15 @@ package net.thauvin.erik.bitly /** Provides the constants for this package. */ open class Constants private constructor() { companion object Constants { - /** The Bitly API base URL. + /** + * The Bitly API base URL. * * @value `https://api-ssl.bitly.com/v4` */ const val API_BASE_URL = "https://api-ssl.bitly.com/v4" - /** The API access token environment variable. + /** + * The API access token environment variable. * * @value `BITLY_ACCESS_TOKEN` */ @@ -52,5 +54,19 @@ open class Constants private constructor() { /** Empty JSON Object. */ const val EMPTY_JSON = "{}" + + /** + * False + * + * @value `false` + */ + const val FALSE = false.toString() + + /** + * True + * + * @value `true` + */ + const val TRUE = true.toString() } } diff --git a/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt b/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt index b6b1940..973efc9 100644 --- a/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt +++ b/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt @@ -67,8 +67,8 @@ open class Utils private constructor() { endPoint: String, params: Map = emptyMap(), method: Methods = Methods.POST - ): String { - var response = Constants.EMPTY + ): CallResponse { + val response = CallResponse() if (validateCall(accessToken, endPoint)) { val apiUrl = endPoint.toHttpUrlOrNull() if (apiUrl != null) { @@ -99,7 +99,8 @@ open class Utils private constructor() { }.addHeader("Authorization", "Bearer $accessToken") val result = createHttpClient().newCall(builder.build()).execute() - response = parseBody(endPoint, result) + response.body = parseBody(endPoint, result) + response.resultCode = result.code } } return response diff --git a/src/test/kotlin/net/thauvin/erik/bitly/BitlyTest.kt b/src/test/kotlin/net/thauvin/erik/bitly/BitlyTest.kt index a3d209e..6e1e87a 100644 --- a/src/test/kotlin/net/thauvin/erik/bitly/BitlyTest.kt +++ b/src/test/kotlin/net/thauvin/erik/bitly/BitlyTest.kt @@ -34,7 +34,6 @@ package net.thauvin.erik.bitly import net.thauvin.erik.bitly.Utils.Companion.removeHttp import net.thauvin.erik.bitly.Utils.Companion.toEndPoint -import org.json.JSONObject import org.junit.Before import java.io.File import java.util.logging.Level @@ -97,16 +96,16 @@ class BitlyTest { @Test fun `get user`() { - assertTrue(bitly.call("/user".toEndPoint(), method = Methods.GET).contains("\"login\":")) + assertTrue(bitly.call("/user".toEndPoint(), method = Methods.GET).isSuccessful) } @Test fun `created by`() { assertEquals( "ethauvin", - JSONObject( - bitly.call("/bitlinks/${shortUrl.removeHttp()}".toEndPoint(), method = Methods.GET) - ).getString("created_by") + bitly.call("/bitlinks/${shortUrl.removeHttp()}".toEndPoint(), method = Methods.GET) + .toJson() + .getString("created_by") ) } @@ -138,4 +137,12 @@ class BitlyTest { ) ) } + + @Test + fun `update bitlink`() { + assertEquals( + Constants.TRUE, + bitly.bitlinks().update(shortUrl, title = "Erik's Weblog", tags = arrayOf("blog", "weblog")) + ) + } }