/* * Copyright (c) 2005 Aetrion LLC. */ package com.googlecode.flickr2twitter.com.aetrion.flickr; import java.util.Collection; import java.util.Iterator; import org.w3c.dom.Document; import org.w3c.dom.Element; import com.googlecode.flickr2twitter.com.aetrion.flickr.util.XMLUtilities; /** * Flickr Response object. * * @author Anthony Eden */ public class RESTResponse implements Response { private String stat; private Collection<Element> payload; private String errorCode; private String errorMessage; public void parse(Document document) { Element rspElement = document.getDocumentElement(); rspElement.normalize(); stat = rspElement.getAttribute("stat"); if ("ok".equals(stat)) { // TODO: Verify that the payload is always a single XML node payload = XMLUtilities.getChildElements(rspElement); } else if ("fail".equals(stat)) { Element errElement = (Element) rspElement.getElementsByTagName("err").item(0); errorCode = errElement.getAttribute("code"); errorMessage = errElement.getAttribute("msg"); } } public String getStat() { return stat; } public Element getPayload() { Iterator<Element> iter = payload.iterator(); if (iter.hasNext()) { return (Element) iter.next(); } else { throw new RuntimeException("REST response payload has no elements"); } } public Collection<Element> getPayloadCollection() { return payload; } public boolean isError() { return errorCode != null; } public String getErrorCode() { return errorCode; } public String getErrorMessage() { return errorMessage; } }