/* * Created on Mar 15, 2011 */ package com.googlecode.flickr2twitter.services.rest; import java.util.Arrays; import java.util.logging.Logger; import org.restlet.data.Form; import org.restlet.resource.ServerResource; import com.googlecode.flickr2twitter.datastore.MyPersistenceManagerFactory; import com.googlecode.flickr2twitter.datastore.model.User; import com.googlecode.flickr2twitter.datastore.model.UserSourceServiceConfig; import com.googlecode.flickr2twitter.org.apache.commons.lang3.StringUtils; import com.googlecode.flickr2twitter.services.rest.models.ISocialHubEbaySellerResource; import com.googlecode.flickr2twitter.servlet.EbayConfigServlet; /** * @author Emac Shen (shen.bin.1983@gmail.com) */ public class SocialHubEbaySellerResource extends ServerResource implements ISocialHubEbaySellerResource { private static final Logger log = Logger.getLogger(SocialHubEbaySellerResource.class.getName()); /** * */ public SocialHubEbaySellerResource() { super(); } /* * (non-Javadoc) * @see com.googlecode.flickr2twitter.services.rest.models.ISocialHubEbaySellerResource#register(java.lang.String) */ @Override public void register(String data) { log.info("registering new eBay seller source->" + data); if ( data != null ) { try { String[] values = StringUtils.split(data, "/"); log.info("Received data->" + Arrays.asList(values)); if ( values.length == 3 ) { String userEmail = values[0]; String sellerId = values[1]; // it seems GAE doesn't support DELETE method, have to use POST to work around boolean following = "follow".equals(values[2]); if ( !following ) { unregister(data); return; } new EbayConfigServlet().registerNewSellerSourceServiceConfig(userEmail, sellerId, false); log.info("new eBay seller source registered->" + data); } else { log.info("Unsupported source config->" + data); } } catch (Exception e) { log.throwing(SocialHubEbaySellerResource.class.getName(), "register", e); } } } /* * (non-Javadoc) * @see com.googlecode.flickr2twitter.services.rest.models.ISocialHubEbaySellerResource#unregister(java.lang.String) */ @Override public void unregister(String data) { log.info("unregistering existing eBay seller source->" + data); if ( data != null ) { try { String[] values = StringUtils.split(data, "/"); log.info("Received data->" + Arrays.asList(values)); if ( values.length == 3 ) { String userEmail = values[0]; String sellerId = values[1]; User user = MyPersistenceManagerFactory.getUser(userEmail); MyPersistenceManagerFactory.deleteUserService(user, sellerId, 0); log.info("eBay seller source unregistered->" + data); } else { log.info("Unsupported source config->" + data); } } catch (Exception e) { log.throwing(SocialHubEbaySellerResource.class.getName(), "unregister", e); } } } /* * (non-Javadoc) * @see com.googlecode.flickr2twitter.services.rest.models.ISocialHubEbaySellerResource#find() */ @Override public boolean find() { Form query = getQuery(); log.info("finding eBay seller source->" + query); if ( query != null ) { try { log.info("Received data->" + query); if ( query.size() == 2 ) { String userEmail = query.getFirstValue("useremail"); String sellerId = query.getFirstValue("sellerid"); boolean found = false; for (UserSourceServiceConfig config : MyPersistenceManagerFactory.getUserSourceServices(userEmail)) { if ( sellerId.equals(config.getServiceAccessToken()) ) { found = true; break; } } log.info("eBay seller source found->" + query); return found; } else { log.info("Unsupported source config->" + query); } } catch (Exception e) { log.throwing(SocialHubEbaySellerResource.class.getName(), "find", e); } } return false; } }