diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index a1fba15..37ad52e 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -46,5 +46,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index c4d4bad..4481c2a 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -5,13 +5,13 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.net.URL
plugins {
- id("com.github.ben-manes.versions") version "0.42.0"
+ id("com.github.ben-manes.versions") version "0.43.0"
id("io.gitlab.arturbosch.detekt") version "1.21.0"
id("java")
id("java-library")
id("maven-publish")
id("net.thauvin.erik.gradle.semver") version "1.0.4"
- id("org.jetbrains.dokka") version "1.7.10"
+ id("org.jetbrains.dokka") version "1.7.20"
id("org.jetbrains.kotlinx.kover") version "0.6.1"
id("org.sonarqube") version "3.4.0.2513"
id("signing")
@@ -57,7 +57,6 @@ dependencies {
testImplementation(kotlin("test"))
testImplementation(kotlin("test-junit"))
testImplementation("com.willowtreeapps.assertk:assertk-jvm:0.25")
-
}
kapt {
diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml
index a822ceb..c02497b 100644
--- a/config/detekt/baseline.xml
+++ b/config/detekt/baseline.xml
@@ -3,6 +3,17 @@
ComplexMethod:Bitlinks.kt$Bitlinks$@Synchronized @JvmOverloads fun update( bitlink: String, references: Map<String, String> = emptyMap(), archived: Boolean = false, tags: Array<String> = emptyArray(), created_at: String = Constants.EMPTY, title: String = Constants.EMPTY, deeplinks: Array<Map<String, String>> = emptyArray(), created_by: String = Constants.EMPTY, long_url: String = Constants.EMPTY, client_id: String = Constants.EMPTY, custom_bitlinks: Array<String> = emptyArray(), link: String = Constants.EMPTY, id: String = Constants.EMPTY, toJson: Boolean = false ): String
+ ComplexMethod:UpdateConfig.kt$UpdateConfig.Builder$override fun equals(other: Any?): Boolean
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig$val client_id: String
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig$val created_at: String
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig$val created_by: String
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig$val custom_bitlinks: Array<String>
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig$val long_url: String
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$var client_id: String = Constants.EMPTY
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$var created_at: String = Constants.EMPTY
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$var created_by: String = Constants.EMPTY
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$var custom_bitlinks: Array<String> = emptyArray()
+ ConstructorParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$var long_url: String = Constants.EMPTY
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
@@ -12,9 +23,15 @@
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
+ FunctionParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$client_id: String
+ FunctionParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$created_at: String
+ FunctionParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$created_by: String
+ FunctionParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$custom_bitlinks: Array<String>
+ FunctionParameterNaming:UpdateConfig.kt$UpdateConfig.Builder$long_url: String
LongParameterList:Bitlinks.kt$Bitlinks$( bitlink: String, references: Map<String, String> = emptyMap(), archived: Boolean = false, tags: Array<String> = emptyArray(), created_at: String = Constants.EMPTY, title: String = Constants.EMPTY, deeplinks: Array<Map<String, String>> = emptyArray(), created_by: String = Constants.EMPTY, long_url: String = Constants.EMPTY, client_id: String = Constants.EMPTY, custom_bitlinks: Array<String> = emptyArray(), link: String = Constants.EMPTY, id: String = Constants.EMPTY, toJson: Boolean = false )
LongParameterList:Bitlinks.kt$Bitlinks$( bitlink: String, unit: Units = Units.DAY, units: Int = -1, size: Int = 50, unit_reference: String = Constants.EMPTY, toJson: Boolean = false )
LongParameterList:Bitlinks.kt$Bitlinks$( domain: String = Constants.EMPTY, title: String = Constants.EMPTY, group_guid: String = Constants.EMPTY, tags: Array<String> = emptyArray(), deeplinks: Array<Map<String, String>> = emptyArray(), long_url: String, toJson: Boolean = false )
+ LongParameterList:UpdateConfig.kt$UpdateConfig$( val bitlink: String, val references: Map<String, String>, val archived: Boolean, val tags: Array<String>, val created_at: String, val title: String, val deepLinks: Array<Map<String, String>>, val created_by: String, val long_url: String, val client_id: String, val custom_bitlinks: Array<String>, val link: String, val id: String, val toJson: Boolean, )
MagicNumber:CallResponse.kt$CallResponse$200
MagicNumber:CallResponse.kt$CallResponse$201
MagicNumber:CallResponse.kt$CallResponse$299
@@ -29,6 +46,7 @@
NestedBlockDepth:Bitlinks.kt$Bitlinks$private fun parseJsonResponse(response: CallResponse, key: String, default: String, toJson: Boolean): String
NestedBlockDepth:Utils.kt$Utils.Companion$@JvmOverloads fun call( accessToken: String, endPoint: String, params: Map<String, Any> = emptyMap(), method: Methods = Methods.POST ): CallResponse
NestedBlockDepth:Utils.kt$Utils.Companion$private fun parseBody(endPoint: String, result: Response): String
+ TooManyFunctions:UpdateConfig.kt$UpdateConfig$Builder
UtilityClassWithPublicConstructor:Constants.kt$Constants
UtilityClassWithPublicConstructor:Utils.kt$Utils
diff --git a/examples/build.gradle.kts b/examples/build.gradle.kts
index c9ad05f..9a3a924 100644
--- a/examples/build.gradle.kts
+++ b/examples/build.gradle.kts
@@ -2,7 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("application")
- id("com.github.ben-manes.versions") version "0.42.0"
+ id("com.github.ben-manes.versions") version "0.43.0"
kotlin("jvm") version "1.7.20"
}
diff --git a/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt b/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt
index acf34c0..17e692e 100644
--- a/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt
+++ b/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt
@@ -222,6 +222,35 @@ open class Bitlinks(private val accessToken: String) {
return bitlink
}
+
+ /**
+ * Updates fields in the specified Bitlink.
+ *
+ * See the [Bit.ly API](https://dev.bitly.com/api-reference#updateBitlink) for more information.
+ *
+ * @param config The update configuration.
+ * @return [Constants.TRUE] if the update was successful, [Constants.FALSE] otherwise.
+ */
+ @Synchronized
+ fun update(config: UpdateConfig): String {
+ return update(
+ config.bitlink,
+ config.references,
+ config.archived,
+ config.tags,
+ config.created_at,
+ config.title,
+ config.deepLinks,
+ config.created_by,
+ config.long_url,
+ config.client_id,
+ config.custom_bitlinks,
+ config.link,
+ config.id,
+ config.toJson
+ )
+ }
+
/**
* Updates fields in the specified Bitlink.
*
diff --git a/src/main/kotlin/net/thauvin/erik/bitly/UpdateConfig.kt b/src/main/kotlin/net/thauvin/erik/bitly/UpdateConfig.kt
new file mode 100644
index 0000000..ee6d653
--- /dev/null
+++ b/src/main/kotlin/net/thauvin/erik/bitly/UpdateConfig.kt
@@ -0,0 +1,142 @@
+/*
+ * UpdateConfig.kt
+ *
+ * Copyright (c) 2020-2022, Erik C. Thauvin (erik@thauvin.net)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of this project nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package net.thauvin.erik.bitly
+
+class UpdateConfig private constructor(
+ val bitlink: String,
+ val references: Map,
+ val archived: Boolean,
+ val tags: Array,
+ val created_at: String,
+ val title: String,
+ val deepLinks: Array