hack day eu 2011 yql

39

Upload: jonathan-leblanc

Post on 20-Jan-2015

6.258 views

Category:

Technology


2 download

DESCRIPTION

"YQL and other hack APIs" presentation for May 2011 Yahoo! Developer Network Hack Day EU in Bucharest, Romania.

TRANSCRIPT

Page 1: Hack Day EU 2011 YQL
Page 2: Hack Day EU 2011 YQL

YQL AND THE API HACK STACK

Jonathan LeBlanc

Principal Software Engineer / Technology Evangelist

Twitter: @jcleblanc

Page 3: Hack Day EU 2011 YQL

WHAT WE’RE GOING TO COVER

YQL Overview

Making Queries and the Console Sandbox

Open Data Tables (a.k.a. Adding New Features into YQL)

Execute (Server-Side JavaScript)

Final Lessons

Page 4: Hack Day EU 2011 YQL

WHAT WE’RE GOING TO COVER

YQL Overview

Making Queries and the Console Sandbox

Open Data Tables (a.k.a. Adding New Features into YQL)

Execute (Server-Side JavaScript)

Final Lessons

Page 5: Hack Day EU 2011 YQL

OVERVIEW: DON’T REINVENT THE WHEEL!

Page 6: Hack Day EU 2011 YQL

OVERVIEW: THE COMPONENTS OF YQL

USER

YQL Service Web APIYQL Table

Page 7: Hack Day EU 2011 YQL

OVERVIEW: YQL FETCHES DATA

Page 8: Hack Day EU 2011 YQL

OVERVIEW: YQL SETS AND DELETES DATA

Page 9: Hack Day EU 2011 YQL

OVERVIEW: IS YQL A DATABASE?

Page 10: Hack Day EU 2011 YQL

OVERVIEW: YQL IS NOT A DATABASE

Page 11: Hack Day EU 2011 YQL

WHAT WE’RE GOING TO COVER

YQL Overview

Making Queries and the Console Sandbox

Open Data Tables (a.k.a. Adding New Features into YQL)

Execute (Server-Side JavaScript)

Final Lessons

Page 12: Hack Day EU 2011 YQL

MAKING REQUESTS: FETCHING DATA

SELECT myColumn, myTitle

FROM myTable(0, 50)

WHERE myColumn = 'value'

AND myTitle = 'title‘

LIMIT 3 OFFSET 10

Page 13: Hack Day EU 2011 YQL

MAKING REQUESTS: INSERTING DATA

INSERT INTO bitly.shorten (login, apiKey, longUrl)

VALUES ('ME', 'API_KEY', 'http://yahoo.com')

Page 14: Hack Day EU 2011 YQL

MAKING REQUESTS: UPDATING DATA

UPDATE social.profile.status

SET status="Using YQL UPDATE”

WHERE guid="NJFIDHVPVVISDX7UKED2WHU"

Page 15: Hack Day EU 2011 YQL

MAKING REQUESTS: DELETING DATA

DELETE FROM twittertable

WHERE tweetid="12345"

AND username="twitter_username"

AND password="twitter_password"

Page 16: Hack Day EU 2011 YQL

MAKING REQUESTS: SUB SELECTS

SELECT * FROM geo.places WHERE text IN (SELECT location FROM social.profile WHERE

guid = me)

Page 17: Hack Day EU 2011 YQL

MAKING REQUESTS: THE YQL CONSOLE

http://developer.yahoo.com/yql/console

Page 18: Hack Day EU 2011 YQL

MAKING REQUESTS: FLICKR URLS

<photo farm="3"

id="5708163920"

isfamily="0"

isfriend="0"

ispublic="1"

owner="31832337@N04"

secret="0075137487"

server="2496"

title="San Francisco"/>

Page 19: Hack Day EU 2011 YQL

MAKING REQUESTS: FLICKR URLS

http://farm{$farm}.static.flickr.com/{$server}/{$id}_{$secret}.jpg

Photo URL

http://www.flickr.com/photos/{$owner}/{$id}

Photo Page URL

http://www.flickr.com/photos/{$owner}

Photo Owner Profile URL

Page 20: Hack Day EU 2011 YQL

MAKING REQUESTS: URL STRUCTURE

http://query.yahooapis.com/v1/yql?[params]

http://query.yahooapis.com/v1/public/yql?[params]

Params• q = [ YQL QUERY ]• format = [ XML / JSON ]• diagnostics = [ true / false ]• debug = [ true / false ]• callback = [ function name ]

Page 21: Hack Day EU 2011 YQL

MAKING REQUESTS: PRIVATE DATA

http://query.yahooapis.com/v1/yql

Uses OAuth 1.0 for authorization

OAuth is complicated – use one of our SDKs at https://github.com/yahoo

Page 22: Hack Day EU 2011 YQL

MAKING REQUESTS: LET’S SEE IT

Page 23: Hack Day EU 2011 YQL

WHAT WE’RE GOING TO COVER

YQL Overview

Making Queries and the Console Sandbox

Open Data Tables (a.k.a. Adding New Features into YQL)

Execute (Server-Side JavaScript)

Final Lessons

Page 24: Hack Day EU 2011 YQL

OPEN DATA TABLES: TOP LEVEL

<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">

<meta></meta>

<bindings></bindings>

</table>

Page 25: Hack Day EU 2011 YQL

OPEN DATA TABLES: META NODE

<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">

<meta></meta>

<bindings></bindings>

</table>

Page 26: Hack Day EU 2011 YQL

OPEN DATA TABLES: META NODE

<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">

<meta>

<author>Jonathan LeBlanc</author>

<description>My Table</description>

<documentationURL>www.site.com

</documentationURL>

<sampleQuery>SELECT * FROM {table}

</sampleQuery>

</meta>

<bindings></bindings>

</table>

Page 27: Hack Day EU 2011 YQL

OPEN DATA TABLES: BINDINGS NODE

<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">

<meta></meta>

<bindings></bindings>

</table>

Page 28: Hack Day EU 2011 YQL

OPEN DATA TABLES: BINDINGS NODE

<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">

<meta></meta>

<bindings>

<select itemPath="top.child" produces="XML">

<urls>

<url env="all">http://www.site.com/{user}</url>

</urls>

<inputs>

<key id="user" type="xs:string" paramType="path"

required="true" />

</inputs>

</select>

</bindings>

</table>

Page 29: Hack Day EU 2011 YQL

OPEN DATA TABLES: USING YOUR TABLE

Several Choices:

1. Upload the XML file to our community Github account.

2. Upload the XML file to your own site and use the YQL ‘USE’ clause.

Page 30: Hack Day EU 2011 YQL

OPEN DATA TABLES: COMMUNITY TABLES

http://github.com/yql/yql-tables

Page 31: Hack Day EU 2011 YQL

OPEN DATA TABLES: USING THE USE CLAUSE

The USE clause

USE 'http://www.mysite.com/my_table.xml'

AS mytable;

SELECT * FROM mytable

WHERE user='john_doe'

Page 32: Hack Day EU 2011 YQL

WHAT WE’RE GOING TO COVER

YQL Overview

Making Queries and the Console Sandbox

Open Data Tables (a.k.a. Adding New Features into YQL)

Execute (Server-Side JavaScript)

Final Lessons

Page 33: Hack Day EU 2011 YQL

EXECUTE: EXECUTE NODE

<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">

<meta></meta>

<bindings>

<select itemPath="top.child" produces="XML">

<urls></urls>

<inputs></inputs>

</select>

</bindings>

</table>

Page 34: Hack Day EU 2011 YQL

EXECUTE: EXECUTE NODE

<?xml version="1.0" encoding="UTF-8"?>

<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">

<meta></meta>

<bindings>

<select itemPath="top.child" produces="XML">

<urls></urls>

<inputs></inputs>

<execute></execute>

</select>

</bindings>

</table>

Page 35: Hack Day EU 2011 YQL

EXECUTE: SERVER-SIDE JAVASCRIPT

<execute>

<![CDATA[

//get user specified inputs from YQL query

var arrQueries = inputs['query'];

//create new XML nodes

var elQueries = <queries/>;

//output new node as YQL response

response.object = elQueries;

]]>

</execute>

Page 36: Hack Day EU 2011 YQL

WHAT WE’RE GOING TO COVER

YQL Overview

Making Queries and the Console Sandbox

Open Data Tables (a.k.a. Adding New Features into YQL)

Execute (Server-Side JavaScript)

Final Lessons

Page 37: Hack Day EU 2011 YQL

FINAL LESSONS

YQL is a skeleton key for all Yahoo! APIs

Open data tables allow you to create new data feeds out of one or many different raw sources

Execute allows you to manipulate data before it is returned.

Use SDKs when accessing private data that requires OAuth

Page 38: Hack Day EU 2011 YQL

FINAL LESSONS: LINKS

All Yahoo! APIs and Services

http://developer.yahoo.com/everything.html

YQL Documentation

http://developer.yahoo.com/yql

YQL Console

http://developer.yahoo.com/yql/console

YQL Github Account (Contribute Tables)

http://github.com/yql/yql-tables

Page 39: Hack Day EU 2011 YQL

ANY QUESTIONS?

Jonathan LeBlanc

Twitter: @jcleblanc

E-Mail: [email protected]

http://www.slideshare.net/jcleblanc/hack-day-eu-2011-yql