JavaScript bindings for the YOURLS API
The current release of YOURLS does not provide official support for JSONP so this API cannot be used with it.
However, I have provided a patch which implements full support for JSONP which Ozh has applied so these changes should be included in the next stable release. If you're impatient or are really keen and you're comfortable changing PHP files you can attempt to make the change yourself (requires very few changes).
yourls-api is a JavaScript library that provides bindings for the YOURLS API using JSONP.
yourls.connect(url[, credentials])
This is the first step and where you'll provide the URL
of the YOURLS API
you wish to connect to, baring in mind that the URL
should point to the yourls-api.php
file and not just its directory.
If you're going to be connecting to a private YOURLS
installation you'll also need to provide either the username/password or
the signature token if you're wanting to use passwordless API requests
(the signature token takes precedence here).
var exampl = yourls.connect('http://exam.pl/yourls-api.php', {
// username: 'admin'
//, password: 'qwerty'
, signature: '3002a61584'
})
Despite the name no connection or authentication is carried out at this point and this initial method simply stores these values to prevent you from specifying them with every API call.
yourls.shorten(url[, keyword], callback(data)[, context])
This method shortens the URL provided optionally using a custom keyword/hash.
exampl.shorten('http://neocotic.com/yourls-api', 'yourls', function(data) {
console.log(data.shorturl) // http://exam.pl/yourls
})
yourls.stats([filter, ][limit, ]callback(data)[, context])
This method fetches the statistics on all your links but also allows you to filter and limit what is returned.
exampl.stats('last', 1, function(data) {
var myLink = data.links.link_1
console.log(myLink.shorturl) // http://exam.pl/yourls
console.log(myLink.url) // http://neocotic.com/yourls-api
console.log(myLink.title) // yourls-api · neocotic
console.log(myLink.clicks) // 1987
// Overall statistics
console.log(data.stats.total_links) // 12
console.log(data.stats.total_clicks) // 2012
})
yourls.url(url)
Unlike the other API
calls this constructs an instance of a yourls.url
for the URL
provided (which should be a shortened URL).
var myUrl = exampl.url('http://exam.pl/yourls')
Once you have this instance more operations become available that are applicable only to the URL provided here.
yourls.url.expand(callback(data)[, context])
This method fetches the original long URL for your link.
myUrl.expand(function (data) {
console.log(data.keyword) // yourls
console.log(data.shorturl) // http://exam.pl/yourls
console.log(data.longurl) // http://neocotic.com/yourls-api
})
yourls.url.stats(callback(data)[, context])
This method fetches the statistics for your link.
myUrl.stats(function (data) {
console.log(data.link.shorturl) // http://exam.pl/yourls
console.log(data.link.url) // http://neocotic.com/yourls-api
console.log(data.link.title) // yourls-api · neocotic
console.log(data.link.clicks) // 1987
})
The API exposes some properties and methods which may only be useful to users in special cases.
yourls.noConflict()
Relinquish yourls-api's control of the yourls
global variable. If another library uses this variable calling this method will
reassign it back to that library.
yourls.VERSION
The current version of yourls-api.
If you have any problems with this library or would like to see the changes currently in development browse our issues.
Take a look at the documentation to get a better understanding of what the code is doing.
If that doesn't help, feel free to follow me on Twitter, @neocotic.