33
A World Beyond AJAX: Accessing Google's APIs from Flash and other Non- JavaScript Environments Vadim Spivak 5/29/2008

A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

A World Beyond AJAX: Accessing Google's APIs from Flash and other Non-JavaScript EnvironmentsVadim Spivak5/29/2008

Page 2: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Introduction

APIsGoogle AJAX Search API

Google AJAX Feed API

Google AJAX Language API

GoalsShow how easy it is to use the RESTful interface

Go through several use cases where the traditional JavaScript library does not work

Latency sensitive websites

Flash/Silverlight

Server-side

Page 3: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Google AJAX Search API

Web

Video

News

Image

Local

Book

Blog

Page 4: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Sample

var videobar = new GSvideoBar( document.getElementById("videoBarHorizontal"),GSvideoBar.PLAYER_ROOT_FLOATING,{largeResultSet : false, horizontal : true});videobar.execute(“ytchannel:nba");

Page 5: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Customers

Page 6: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Google AJAX Feed API

Load

Find

Lookup

Page 7: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Sample

var feed = "http://www.google.com/uds/solutions/slideshow/sample.rss";var slideshow = new GFslideShow(samples, "sampleSlideshow", { linkTarget : google.feeds.LINK_TARGET_BLANK,fullControlPanel : true });

Page 8: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Customers

Page 9: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Google AJAX Language API

Translate

Detect Language

Page 10: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Sample

google.language.translate("Hello World", "en", "es", function(result) {alert(result.translation);});

Page 11: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Customers

Page 12: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

The Basic Blocks

RESTful Data Access Layer

JavaScript Runtime Layer

JavaScript Controls and UI elements

AJAX APIs

Page 13: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Why?

Restricted or no access to JavaScript

Tighter integration

Latency sensitive application

Flash

Android

Silverlight

iPhone

Facebook

Page 14: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Interface

RESTfulHTTP

Read Only

JSONLightweight

Text Based

Compact

Language Independent

Page 15: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Sample API Request

curl “http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1&q=http://digg.com/rss/index.xml"

{ "responseData": { "feed": { "title": "Digg", "link": "http://digg.com/", "entries": [ { "title": "LittleBigPlanet Killzone", "publishedDate": "Wed, 07 May 2008 21:20:09 -0700", "content": "Just to show off how ..." } ] }},"responseDetails": null,"responseStatus": 200}

Page 16: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

crossdomain.xml

Allows cross-domain requests in Flash and Silverlight

http://ajax.googleapis.com/crossdomain.xml

<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-access-from domain="*" /></cross-domain-policy>

Page 17: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Fine Print

ReferrerSpecify the URL where the API results are being displayed

Fall back to homepage URL if necessary

Optionally specify API key

Limitations

Page 18: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Examples

Page 19: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Faster AJAX

<script src="http://www.google.com/jsapi"type="text/javascript"></script><script language="Javascript" type="text/javascript">google.load("feeds", "1");google.setOnLoadCallback(OnLoad);

function OnLoad() {var feed = new google.feeds.Feed("http://www.digg.com/rss/index.xml");feed.load(FeedLoaded);}

function FeedLoaded(result) {//...}</script>

Traditional example

Page 20: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Faster AJAXDOMContentLoaded

Faster than OnLoad

Cross browser

google.setOnLoadCallback(fn, onDomContentLoaded)

Page 21: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Faster AJAXJSON with Padding

Callback

$ curl "http://ajax.googleapis.com/ajax/services/feed/load?callback=FeedLoaded&v=1.0&num=1&q=http://digg.com/rss/index.xml"

FeedLoaded({ "responseData": { "feed": { "title": "Digg", "entries": [ { "title": "LittleBigPlanet Killzone", "content": "Just to show off how ..." } ] } }, "responseDetails": null, "responseStatus": 200})

Page 22: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Faster AJAX

<script language="Javascript" type="text/javascript"> function FeedLoaded(result) {//...}</script>

<script src="http://ajax.googleapis.com/ajax/services/feed/load?callback=FeedLoaded&v=1.0&num=1& q=http://digg.com/rss/index.xml"></script>

Updated example

Response returned before OnLoad or DOMContentLoaded

1 request vs. 3 requests (10K less in size)

Page 23: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Demo

Traditional

Traditional with onDOMContentLoaded

Direct JSON-P

Page 24: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

News Bar

Popular solution built using Google AJAX Search API

Simple yet makes static content more sticky

Limited to sites who allow third party JavaScript widgets

Page 25: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

News Bar

ActionScript 3HTTPService

MXML

corelib

In Flash

Page 26: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

News Bar

var service:HTTPService = new HTTPService();service.url = 'http://ajax.googleapis.com/ajax/services/search/news';service.request.v = '1.0';service.request.q = ‘Playstation';service.resultFormat = 'text';service.addEventListener(ResultEvent.RESULT, onServerResponse);service.send();

private function onServerResponse(event:ResultEvent):void {try {var json:Object = JSON.decode(event.result as String);// now display the results...} catch(ignored:Error) {}}

Code snippet

Page 27: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Demo

Page 28: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Server Side

Facebook Application

Google App Engine

Google AJAX Language API

Translated Wall Attachments

Page 29: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Server Side

URL Fetch API

simplejson

gminifb

Translated Wall Attachments

Page 30: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Server SideCode snippet

def translate(s, lang):params = {'v' : '1.0','q' : s,'langpair' : '|%s' % lang}

response = urlfetch.fetch('http://ajax.googleapis.com/ajax/''services/language/translate?%s' % urllib.urlencode(params))data = simplejson.loads(response.content)if data['responseStatus'] != 200:return 'Error translating message.'else:return data['responseData']['translatedText'])

Page 31: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Demo

Page 32: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments

Reference

General Documentationhttp://code.google.com/apis/ajaxsearch

http://code.google.com/apis/ajaxfeeds

http://code.google.com/apis/ajaxlanguage

Complete source code for the presented exampleshttp://code.google.com/p/google-ajax-examples

Page 33: A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script Environments