// Copyright (c) 2003-2013, LogMeIn, Inc. All rights reserved. // This is part of Xively4J library, it is under the BSD 3-Clause license. package com.xively.client.http.impl; import java.util.Collection; import java.util.HashMap; import java.util.Map; import com.xively.client.http.DefaultRequestHandler; import com.xively.client.http.DefaultRequestHandler.HttpMethod; import com.xively.client.http.Response; import com.xively.client.http.api.TriggerRequester; import com.xively.client.http.exception.HttpException; import com.xively.client.http.util.exception.ParseToObjectException; import com.xively.client.model.Trigger; /** * Class for making request for trigger from XIVELY API * * {@link https ://xively.com/docs/v2/trigger/} * * @author s0pau * */ public class TriggerRequesterImpl extends AbstractRequester<Integer, Trigger> implements TriggerRequester { private static final String RESOURCES_PATH = "triggers"; @Override public Collection<Trigger> list() throws HttpException, ParseToObjectException { Response<Trigger> response = DefaultRequestHandler.getInstance().doRequest(HttpMethod.GET, getResourcesPath()); return response.getBodyAsObjects(Trigger.class); } @Override public Collection<Trigger> getByFeedId(int feedId) throws HttpException, ParseToObjectException { Map<String, Object> params = new HashMap<String, Object>(); params.put("feed_id", feedId); Response<Trigger> response = DefaultRequestHandler.getInstance().doRequest(HttpMethod.GET, getResourcesPath(), params); return response.getBodyAsObjects(Trigger.class); } /** * @param triggerId * @return the restful path to a specifc trigger resource, which can then be * appended to a base path for a complete uri */ @Override protected String getResourcePath(Integer triggerId) { StringBuilder sb = new StringBuilder(); sb.append(getResourcesPath()).append("/").append(String.valueOf(triggerId)); return sb.toString(); } /** * @return the restful path to a all trigger resources, which can then be * appended to a base path for a complete uri */ @Override protected String getResourcesPath() { return RESOURCES_PATH; } @Override protected Class<Trigger> getObjectClass() { return Trigger.class; } @Override protected Integer getCreatedId(Response<Trigger> response) { return Integer.valueOf(response.getIdFromResponse()); } }