Bitly Shortener for Kotlin, Java & Android
A simple implementation of the Bitly link shortening (Bitlinks) API v4.
val bitly = Bitly(/* "YOUR_API_ACCESS_TOKEN from https://bitly.is/accesstoken" */)
// Shorten
bitly.bitlinks().shorten("https://erik.thauvin.net/blog")
// Expand
bitly.bitlinks().expand("https://bit.ly/380ojFd")
// Clicks Summary
bitly.bitlinks().clicks("https://bit.ly/380ojFd")
// Create a bitlink
bitly.bitlinks().create(title="Erik's Weblog", long_url = "https://erik.thauvin.net/blog/")
// Update a bitlink
bitly.bitlinks().update("https://bit.ly/380ojFd", title = "Erik's Weblog", tags = arrayOf("blog", "weblog"))
The Bitly API Access Token can be specified directly as well as via the BITLY_ACCESS_TOKEN
environment variable or properties key.
// Env Variable or System Property
val bitly = Bitly()
// Properties file path
val bitly = Bitly(File("my.properties"))
# my.properties
BITLY_ACCESS_TOKEN=abc123def456ghi789jkl0
To use with bld, include the following dependency in your build file:
repositories = List.of(MAVEN_CENTRAL, SONATYPE_SNAPSHOTS_LEGACY);
scope(compile)
.include(dependency("net.thauvin.erik:bitly-shorten:2.0.0"));
Be sure to use the bld Kotlin extension in your project.
To use with Gradle, include the following dependency in your build file:
repositories {
mavenCentral()
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } // only needed for SNAPSHOT
}
dependencies {
implementation("net.thauvin.erik:bitly-shorten:2.0.0")
}
Instructions for using with Maven, Ivy, etc. can be found on Maven Central.
To make it easier to use the library with Java, configuration builders are available:
var config = new CreateConfig.Builder("https://erik.thauvin.net/blog")
.title("Erik's Weblog")
.tags(new String[] { "blog", "weblog"})
.build();
bitly.bitlinks().create(config);
var config = new UpdateConfig.Builder("https://bit.ly/380ojFd")
.title("Erik's Weblog")
.tags(new String[] { "blog", "weblog"})
.build();
bitly.bitlinks().update(config);
All implemented API calls can return the full JSON responses:
bitly.bitlinks().shorten("https://www.erik.thauvin.net/blog", toJson = true)
{
"created_at": "2020-02-26T06:50:08+0000",
"link": "https://bit.ly/380ojFd",
"id": "bit.ly/380ojFd",
"long_url": "https://erik.thauvin.net/blog"
}
You can also access the last response from implemented API calls using:
val bitlinks = Bitlinks(apikey)
val shortUrl = bitlinks.shorten(longUrl)
val response = bitlinks.lastCallResponse
if (response.isSuccessful) {
println(response.body)
} else {
println("${response.message}: ${response.description} (${response.statusCode})")
}
Non-implemented API endpoints can also be called directly:
val response = bitly.call("/user", method = Methods.GET)
if (response.isSuccessful) {
println(response.body)
}
{
"created": "2009-06-12T19:00:45+0000",
"modified": "2016-11-11T19:50:33+0000",
"login": "johndoe",
"is_active": true,
"is_2fa_enabled": true,
"name": "John Doe",
"emails": [
{
"email": "john@doe.com",
"is_primary": true,
"is_verified": true
}
],
"is_sso_user": false,
"default_group_guid": "ABCde1f23gh"
}
- View Example
If you want to contribute to this project, all you have to do is clone the GitHub repository:
git clone git@github.com:ethauvin/bitly-shorten.git
Then use bld to build:
cd bitly-shorten
./bld compile
The project has an IntelliJ IDEA project structure. You can just open it after all the dependencies were downloaded and peruse the code.
If all else fails, there's always more Documentation.