using web services in your gadget/widget
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
Using Web Services in your Gadget
Alan Lewis – eBay Technical Evangelist
NGW024
2 eBay Inc. confidential
Hi
3 eBay Inc. confidential
I lost my voice earlier this morning
4 eBay Inc. confidential
:-(
5 eBay Inc. confidential
I have some cool stuff to show you though
6 eBay Inc. confidential
:-)
7 eBay Inc. confidential
So, I’ll give it a try
8 eBay Inc. confidential
Here goes…
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
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!!!
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
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
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
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
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>
16 eBay Inc. confidential
And Now…
Demo
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)
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
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);
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);
}
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…
22 eBay Inc. confidential
Now More Code
• Here is the code, in-depth
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
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
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
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