using web services in your gadget/widget

26
Using Web Services in your Gadget Alan Lewis – eBay Technical Evangelist NGW024

Upload: goodfriday

Post on 19-Jun-2015

2.266 views

Category:

Technology


1 download

DESCRIPTION

Gadget/Widget platforms, such as live.com, have a natural integration with sites, such as eBay, using Web services. Gadgets are great for monitoring the status of ever-changing data; the eBay marketplace is always in flux. However, there are unique challenges you will need to overcome in order to use Web services in your gadget, such as security constraints, authentication, data overload, and more. This breakout session discusses how to use Web services within live.com and similar platforms, and dives into some real-world examples of gadgets/widgets that use third-party Web services.

TRANSCRIPT

Page 1: Using Web Services in Your Gadget/Widget

Using Web Services in your Gadget

Alan Lewis – eBay Technical Evangelist

NGW024

Page 2: Using Web Services in Your Gadget/Widget

2 eBay Inc. confidential

Hi

Page 3: Using Web Services in Your Gadget/Widget

3 eBay Inc. confidential

I lost my voice earlier this morning

Page 4: Using Web Services in Your Gadget/Widget

4 eBay Inc. confidential

:-(

Page 5: Using Web Services in Your Gadget/Widget

5 eBay Inc. confidential

I have some cool stuff to show you though

Page 6: Using Web Services in Your Gadget/Widget

6 eBay Inc. confidential

:-)

Page 7: Using Web Services in Your Gadget/Widget

7 eBay Inc. confidential

So, I’ll give it a try

Page 8: Using Web Services in Your Gadget/Widget

8 eBay Inc. confidential

Here goes…

Page 9: Using Web Services in Your Gadget/Widget

9 eBay Inc. confidential

Huh? What’s this presentation about???

• Web Services

– You may have heard of them

– Yes, they are actually useful

– No, you don’t have to use SOAP

– Lots of services are out there for you to use (finally)

• Gadgets

– Or Widgets

– Or Plugins

– Or Panels

– Definition: “mini-applications that let you perform common tasks and provide you with fast access to information”

– Translation: They do cool stuff

Page 10: Using Web Services in Your Gadget/Widget

10 eBay Inc. confidential

Why Should I Care?

• Gadgets are cool

• Web services offer lots of reusable data and functionality

• MIXing them up (nice plug) in your gadget saves you headaches

• Alternative to doing it this way – server side coding

– Need to scale your server to handle traffic from gadget

– Different skill set required

– Eww!!!

Page 11: Using Web Services in Your Gadget/Widget

11 eBay Inc. confidential

So, what sorts of web services are out there?

• I’m so glad you asked… here is a totally random example:

eBay Web Services!!!

• Please permit me a short detour to summarize

Page 12: Using Web Services in Your Gadget/Widget

12 eBay Inc. confidential

eBay Web Service Features

• Search

• Listing Items

• Transaction/Order Management

• My eBay

• eBay Stores

• Feedback Management

• Watch List

• Bidding (with signed agreement)

• In short, almost everything you can do on the site

Page 13: Using Web Services in Your Gadget/Widget

13 eBay Inc. confidential

Different Flavors of eBay Web Services

• SOAP

• XML (HTTP POST) – Both support the same feature set (all calls)

– Calls go over HTTPS

• REST (HTTP GET)– supports GetSearchResults call

Page 14: Using Web Services in Your Gadget/Widget

14 eBay Inc. confidential

Sample Call Request

XML API:

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

<GetSearchResultsRequest xmlns="urn:ebay:apis:eBLBaseComponents">

<RequesterCredentials>

<eBayAuthToken>ABC123</eBayAuthToken>

</RequesterCredentials>

<Query>iPod Nano</Query>

</GetSearchResultsRequest>  

REST API

http://rest.api.ebay.com/restapi?CallName=GetSearchResults&RequestToken=ABC123=&RequestUserId=alanlewis0&Query=iPod%20Nano&Schema=1

Page 15: Using Web Services in Your Gadget/Widget

15 eBay Inc. confidential

Sample Call Response

XML API and REST API (same response)

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

<GetSearchResultsRequest xmlns="urn:ebay:apis:eBLBaseComponents">

<Item>

<ItemID>4036874357</ItemID>

…   

<SellingStatus>

<BidCount>31</BidCount>

<CurrentPrice currencyID="USD">80.0</CurrentPrice>

</SellingStatus>

<Site>US</Site>

<Title>Used Apple iPod Nano MP3 Player Good Condition</Title>

</Item>

</GetSearchResultsRequest>  

Page 16: Using Web Services in Your Gadget/Widget

16 eBay Inc. confidential

And Now…

Demo

Page 17: Using Web Services in Your Gadget/Widget

17 eBay Inc. confidential

Live.com

• Supports RSS feeds and Gadgets

• Gadgets are implemented in javascript + CSS

• Still alpha feel – emerging feature set and very buggy at times (especially with CSS support)

Page 18: Using Web Services in Your Gadget/Widget

18 eBay Inc. confidential

Design Philosophy

• Gadgets call for a fresh design approach

• Sort of like code for mobile devices– Limited screen real-estate

– Limited functionality/APIs

• Except not– Still coding for the browser– multiple windows/tabs, cross-browser issues

– Asynchronous interaction, more bandwidth

Page 19: Using Web Services in Your Gadget/Widget

19 eBay Inc. confidential

Challenge 1: Security Restrictions

• Calls can’t go across domains– If the gadget was served up from www.mydomain.com, can’t call api.ebay.com

• Live.com solution to this: proxy!– Supports XML data (except XHTML) and RSS feeds

– Currently only supports HTTP GET (contrary to docs – support for POST will be added in the future)

– Can’t proxy HTTPS yet, so only option for eBay is REST API

var r = Web.Network.createRequest( Web.Network.Type.XML,

searchQuery,

{proxy:"generic"},

eBaySearchCallback);

Page 20: Using Web Services in Your Gadget/Widget

20 eBay Inc. confidential

Challenge 2: Namespaces

• IE javascript engine can’t handle XML data in default namespaces

• Solution: Use ugly RegEx hack to remove namespace:

var rootText = response.responseText;

var re = /xmlns="urn:ebay:apis:eBLBaseComponents"/g;

rootText = rootText.replace(re, "");

var responseWithoutNamespaces;

if (window.ActiveXObject) {

responseWithoutNamespaces = new ActiveXObject("Microsoft.XMLDOM");

responseWithoutNamespaces.async="false";

responseWithoutNamespaces.loadXML(rootText);

}

else {

responseWithoutNamespaces = document.implementation.createDocument("","",null);

responseWithoutNamespaces.loadXML(rootText);

}

Page 21: Using Web Services in Your Gadget/Widget

21 eBay Inc. confidential

And now…

• ANNOUNCING:

• The gadget is open sourced

• Commercial software-friendly open source license: CDDL

• Yeah!

• http://searchgadget.codebase.ebay.com

• Lets go check it out…

Page 22: Using Web Services in Your Gadget/Widget

22 eBay Inc. confidential

Now More Code

• Here is the code, in-depth

Page 23: Using Web Services in Your Gadget/Widget

23 eBay Inc. confidential

Other Web Services

• Lots to choose from: www.programmableweb.com

• REST is very popular, but has limitations

• RSS feeds are web services too

Page 24: Using Web Services in Your Gadget/Widget

24 eBay Inc. confidential

Building Commercial Apps

• One issue to keep in mind is many Web services out there force non-commercial use

• Shameless plug: that’s not the case with eBay Web services

• One way to make money with your Gadget is to use an affiliate program like eBay’s:http://developer.ebay.com/affiliates

Page 25: Using Web Services in Your Gadget/Widget

25 eBay Inc. confidential

Other Gadget/Widget Platforms

• Vista Sidebar

– Bundled with Vista, but limited capabilities (thusfar)

• Yahoo! Widget Engine (Konfabulator)

– Multi-platform support, integration with Desktop still clumsy

• Apple Dashboard

– Best desktop integration, but only for OSX

• Google Desktop – (Sidebar)

– Information-rich widgets, but harder to build, bundled with a product IT departments hate

• Google Personalized Home Page

– Sorta like live.com – less functionality but better visibility

Page 26: Using Web Services in Your Gadget/Widget

26 eBay Inc. confidential

Learn More Stuff

• More on eBay Web Services: http://developer.ebay.comIts totally free!

• eBay Developers Conference, baby!June 10-12, Mandalay Bay, Las Vegas

• Live.com eBay Gadget available in the Gallery:microsoftgadgets.com

• Open sourced at: http://searchgadget.codebase.ebay.com

• Sanaz Ahari’s presentation immediately following this one, in C/D