.circleci | ||
.github/workflows | ||
.idea | ||
.vscode | ||
config | ||
docs | ||
examples | ||
lib/bld | ||
src | ||
.editorconfig | ||
.gitattributes | ||
.github_changelog_generator | ||
.gitignore | ||
.gitlab-ci.yml | ||
bitbucket-pipelines.yml | ||
bld | ||
bld.bat | ||
CHANGELOG.md | ||
LICENSE.txt | ||
pom.xml | ||
README.md | ||
sonar-project.properties |
Bitly Shortener for Kotlin, Java & Android
A simple implementation of the Bitly link shortening (Bitlinks) API v4.
Examples (TL;DR)
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"))
API Access Token
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
bld
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:1.0.0"));
Be sure to use the bld Kotlin extension in your project.
Gradle, Maven, etc…
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:1.0.0")
}
Instructions for using with Maven, Ivy, etc. can be found on Maven Central.
Java
To make it easier to use the library with Java, configuration builders are available:
var config = new CreateConfig.Builder()
.title("Erik's Weblog")
.tags(new String[] { "blog", "weblog"})
.longUrl("https://erik.thauvin.net/blog")
.build();
bitly.bitlinks().create(config);
var config = new UpdateConfig.Builder()
.bitlink("https://bit.ly/380ojFd")
.title("Erik's Weblog")
.tags(new String[] { "blog", "weblog"})
.build();
bitly.bitlinks().update(config);
JSON
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
More…
If all else fails, there's always more Documentation.