At work, we’re doing some coding to integrate our system with Ebay’s system, which is kind of big and complex. Here’s some PHP code to get a listed item, from eBay’s developer site:
$verb = 'GetItem';
//Regulates versioning of the XML interface for the API
$compatabilityLevel = 433;
//get an array of strings containing the required headers
$headers = buildEbayHeaders($devID, $appID, $certID, $compatabilityLevel, $siteID, $verb);
///Build the request Xml string
$requestXmlBody = '<?xml version="1.0" encoding="utf-8" ?>';
$requestXmlBody .= '<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">';
$requestXmlBody .= "<RequesterCredentials><eBayAuthToken>$userToken</eBayAuthToken></RequesterCredentials>";
$requestXmlBody .= "<ItemID>$id</ItemID>";
$requestXmlBody .= '</GetItemRequest>';
$responseXml = sendHttpRequest($requestXmlBody, $serverUrl, $headers);
if(stristr($responseXml, 'HTTP 404') || $responseXml == '') {
die('<P>Error sending request');
}
//Xml string is parsed and creates a DOM Document object
$responseDoc = domxml_open_mem($responseXml);
//get any error nodes
$errors = $responseDoc->get_elements_by_tagname('Errors');
//if there are rrror nodes
if(count($errors) > 0)
… and so on and so forth (it just gets more painful)…
Compare with Cody Fauser’s Ruby eBay API
ebay = Ebay::Api.new
begin
response = ebay.get_item(:item_id => '110011765264')
rescue Ebay::RequestError => e
e.errors.each do |error|
puts error.long_message
end
end
It’s not even a contest. Best of all, most of the code that turns the XML interface into Ruby code is auto-generated. Very nice work!