Published in
Mashup, Programming, Ruby, Web
Sunlight Labs has released a public API, their Sunlight Datakit. It’s a straight-forward, simple API for getting access to their Civic data, like Congressional Representatives, zipcodes, timezones, and some geographic information.
There is some basic information about elected representatives that makes politico mashups easier: the ability to tie a name to a state, the district and zip codes that they represent, their office telephone number, and so on. We have put together a simple labs “datakit” that does this for us, drawing from several publicaly available data sources. We are making this fully available and have provided a fully documented API for the methods we have developed for those sources. Find out about the datakit here.
Of course, any API needs a nice little client to tie it into your applications. Here is my Ruby client. It’s very simple, because is uses the fallback method_missing to handle any function passed to the class. This also allows the class to be extended by implementing specific methods if more processing of the response is needed.
require ‘open-uri‘
require ‘rexml/document‘
require ‘cgi‘
SUNLIGHT_HOST = ‘http://sunlightlabs.com/datakit/‘
class Sunlight
def self.method_missing(service_method, *args)
params = args[0].collect {|k,v| CGI.escape(k.to_s) + ‘=‘ + CGI.escape(v.to_s)}.join(’&‘)
url = SUNLIGHT_HOST + service_method.to_s + "?" + params
open(url).read.split("|")
end
end
resp = Sunlight.getDistrictFromZip5({:zip => 20740})
puts resp.inspect
resp = Sunlight.getRepresentativeNameFromCityState({:city => ‘Detroit‘, :state => "MI"})
puts resp.inspect
The Sunlight Datakit currently offers the following functions. Check out the documentation for information on the parameters and returned values.
- getDistrictFromZip5
- getStateFromZip5
- getDistrictFromZip9
- getStateFromZip9.php
- getRepresentativeNameFromDistrict
- getRepresentativePhoneNumberFromDistrict
- getRepresentativeRoomNumberFromDistrict
- getCityFromZip5
- getCityStateFromZip5
- getLatitudeFromCityState
- getLongitudeFromCityState
- getZipCodesFromCityState
- getTimezoneFromCityState
- getRepresentativeNameFromCityState
- getRepresentativeNameFromState
- getStateAbbreviationFromStateName
- getStateNameFromStateAbbreviation
Published in
Mashup, Programming, Technology, Web
AOL has decided to make a try for the Web2.0 phenomenon by fulfilling a rule of Web2.0, releasing a public API.
AOL Developer introduces a set of API’s meant to tie into existing AOL services like instant messaging (AIM), AOL Music, WinAMP player, homepages, and MapQuest’s OpenAPI.
AOL is also releasing Boxely (coming August 2006), which is a toolset of UI elements similar to Yahoo!’s UI library (how does one include both a bang and an apostrophe in a possesive noun with punctuation like Yahoo!?)
It’s not clear yet what AOL really has to leverage in terms of bringing in mashup developers. Really someone that wants to get hired/bought. Though being able to better integrate AIM status and location into a site/tool seems really useful. So go to developer.aol.com and see if anything sparks your imagination. And try not to smirk at AOL’s line:
…this is where you’ll find the special sauce to build great Web applications. We want you to hack our stuff. So mash it up!
Published in
FoFRedux, Geolocation, Mashup, Metacarta, Programming, Technology, Web
I mentioned Metacarta last week after I saw their presentation at Where2.0.
They mentioned having a public GeoParser API available for developers to play around with. So I passed in one of the output feeds from FoFRedux (a feed aggregator that supports GeoRSS) through the Metacarta GeoParser to produce a map of locations that show up in my feeds.
FoFRedux -> Metacarta Example: SlashDot article locations
So now you can use a feed aggregator to display, say locations of articles and posts for your friends feeds. Or locations of Flickr photos, or even UPS/Fedex package tracking. The example just shows the image output, but the GeoParser can output GML or GeoMarkup XML, and JSON for better intergration into other applications.