Code‎ > ‎

Online APIs


Consuming the YouTube API

As usual, we can use Groovy (or just translate this quite easily, excusing the try/catch/finally/close stuff, to Java) to do it!

import groovy.json.JsonSlurper

def apiKey = "GET_ONE_API_KEY_FROM_GOOGLE"
def videoId = "e6Q1gLFWhhY"

def url  = "https://www.googleapis.com/youtube/v3/videos?" +
           "id=${videoId}&key=${apiKey}&part=snippet,contentDetails,statistics,status"

def connection = new URL( url ).openConnection()

if ( connection.responseCode == connection.HTTP_OK ) {
  def json = new JsonSlurper().parseText( connection.inputStream.text )
  
  // print some basic information about the video
  println "Video '${json.items[0].snippet.title}' was published by " +
          "'${json.items[0].snippet.channelTitle}' at '${json.items[0].snippet.publishedAt}"
} else {
  println "ERROR ${connection.responseCode}"
}

The Maven API

Details of the Maven API can be found here.

import static java.net.URLEncoder.encode

def parse = new groovy.json.JsonSlurper().&parseText
final MAVEN_URL = "http://search.maven.org/solrsearch/select?q="

final searchBy = [ 'general': '', 'className': 'c', 'groupId': 'g' ]

def search = { type, query ->
  parse(
    ( MAVEN_URL + searchBy[ type ] +
    ":${encode( query )}&rows=5&wt=json" ).toURL().text )
}

def printJson = { json ->
  json.response.docs.each { println "$it.id:$it.latestVersion" }
}

// Example queries
printJson search( 'className', 'HttpClient' )
printJson search( 'general', 'google guava' )
printJson search( 'groupId', 'org.codehaus.groovy' )


Accessing the Official.fm API with JavaScript

The code below is a simplified version of this Pen.
Documentation about the Official.fm API can be found here.

// create a XMLHttpRequest Object in any browser
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else { // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

// response callback
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 &&
      xmlhttp.status == 200) {
        var json = JSON.parse( xmlhttp.responseText );

        // put the results in the #results html node
        document.getElementById("results").innerHTML=
          htmlFromJson(json);
    }
}

// retrieve the search text from the #searchBox node and query for tracks
var searchText = document.getElementById("searchBox").value;
var query = encodeURIComponent(searchText);
xmlhttp.open("GET",
   "http://api.official.fm/tracks/search?q=" + query +
"&types=original,remix,cover,embed&api_version=2", true);
xmlhttp.send();

// helper function that converts Json to HTML
function htmlFromJson(json) {
    var res = "";
    if (json.tracks.length == 0) {
      return "<div>Nothing found</div>"
    }
    for (i in json.tracks) {
      res += "<div>" + json.tracks[i].track.title + "</div>"
    }
    return res;
}



Comments