/* * gw2live - GuildWars 2 Dynamic Map * * Website: http://gw2map.com * * Copyright 2013 zyclonite networx * http://zyclonite.net * Developer: Lukas Prettenthaler */ package net.zyclonite.gw2live.service; import java.util.ArrayList; import java.util.List; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Form; import net.zyclonite.gw2live.model.GuildDetails; import net.zyclonite.gw2live.model.GwMapResult; import net.zyclonite.gw2live.model.KeyValueLanguage; import net.zyclonite.gw2live.model.PveEventDetailsResult; import net.zyclonite.gw2live.model.PveEventResult; import net.zyclonite.gw2live.model.WvwMatchDetails; import net.zyclonite.gw2live.model.WvwMatchResult; import net.zyclonite.gw2live.util.AccessTokenResponse; import net.zyclonite.gw2live.util.AppConfig; import net.zyclonite.gw2live.util.Gw2RestInterface; import net.zyclonite.gw2live.util.HttpEngine; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jboss.resteasy.client.jaxrs.BasicAuthentication; import org.jboss.resteasy.client.jaxrs.ClientHttpEngine; import org.jboss.resteasy.client.jaxrs.ProxyBuilder; import org.jboss.resteasy.client.jaxrs.ResteasyClient; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; /** * * @author zyclonite */ public class Gw2Client { private static final Log LOG = LogFactory.getLog(Gw2Client.class); private static final Gw2Client instance; private static AppConfig config; private final Gw2RestInterface gw2resource; private final ResteasyClient client; static { instance = new Gw2Client(); } private Gw2Client() { config = AppConfig.getInstance(); final ClientHttpEngine engine = HttpEngine.getHttpEngine(); client = new ResteasyClientBuilder() .httpEngine(engine) .disableTrustManager() .build(); final WebTarget target = client.target(config.getString("endpoints.gw2rest")); gw2resource = ProxyBuilder.builder(Gw2RestInterface.class, target).build(); LOG.debug("Gw2Client initialized"); } public void authenticateUser(final String username, final String password) { final WebTarget target = client.target(config.getString("endpoints.oauth")); target.register(new BasicAuthentication(username, password)); final Form form = new Form().param("grant_type", "client_credentials"); final AccessTokenResponse res = target.request().post(Entity.form(form), AccessTokenResponse.class); //TODO store user specific key to cache //gw2resource.getAuthResource("Bearer " + res.getToken(), "test"); } public PveEventResult getPveEvents(final String worldid, final String mapid) { PveEventResult result = new PveEventResult(); try { result = gw2resource.getPveEvents(worldid, mapid); LOG.debug(result.getEvents().size() + " pve-events found"); } catch (Exception e) { LOG.warn("getPveEvents " + e.getMessage()); } return result; } public List<KeyValueLanguage> getPveEventNames(final String lang) { List<KeyValueLanguage> result = new ArrayList<>(); try { result = gw2resource.getPveEventNames(lang); LOG.debug(result.size() + " " + lang + " pve-event-names found"); } catch (Exception e) { LOG.warn("getPveEventNames " + e.getMessage()); } return result; } public List<KeyValueLanguage> getPveMapNames(final String lang) { List<KeyValueLanguage> result = new ArrayList<>(); try { result = gw2resource.getPveMapNames(lang); LOG.debug(result.size() + " " + lang + " pve-map-names found"); } catch (Exception e) { LOG.warn("getPveMapNames " + e.getMessage()); } return result; } public List<KeyValueLanguage> getPveWorldNames(final String lang) { List<KeyValueLanguage> result = new ArrayList<>(); try { result = gw2resource.getPveWorldNames(lang); LOG.debug(result.size() + " " + lang + " pve-world-names found"); } catch (Exception e) { LOG.warn("getPveWorldNames " + e.getMessage()); } return result; } public WvwMatchResult getWvwMatches() { WvwMatchResult result = new WvwMatchResult(); try { result = gw2resource.getWvwMatches(); LOG.debug(result.getWvw_matches().size() + " wvw-matches found"); } catch (Exception e) { LOG.warn("getWvwMatches " + e.getMessage()); } return result; } public WvwMatchDetails getWvwMatchDetails(final String matchid) { WvwMatchDetails result = new WvwMatchDetails(); try { result = gw2resource.getWvwMatchDetails(matchid); LOG.debug("Details for matchid: " + result.getMatch_id() + " found"); } catch (Exception e) { LOG.warn("getWvwMatchDetails " + e.getMessage()); } return result; } public List<KeyValueLanguage> getWvwObjectiveNames(final String lang) { List<KeyValueLanguage> result = new ArrayList<>(); try { result = gw2resource.getWvwObjectiveNames(lang); LOG.debug(result.size() + " " + lang + " wvw-objective-names found"); } catch (Exception e) { LOG.warn("getWvwObjectiveNames " + e.getMessage()); } return result; } public GuildDetails getGuildDetails(final String guildid) { GuildDetails result = null; try { result = gw2resource.getGuildDetails(guildid); LOG.trace("Details for guildid: " + result.getGuild_id() + " found"); } catch (Exception e) { LOG.warn("getGuildDetails " + e.getMessage()); } return result; } public PveEventDetailsResult getPveEventDetails() { PveEventDetailsResult result = new PveEventDetailsResult(); try { result = gw2resource.getPveEventDetails(null, null); LOG.debug(result.getEvents().size() + " pve-event-details found"); } catch (Exception e) { LOG.warn("getPveEventDetails " + e.getMessage()); } return result; } public GwMapResult getMaps() { GwMapResult result = new GwMapResult(); try { result = gw2resource.getMaps(null, null); LOG.debug(result.getMaps().size() + " maps found"); } catch (Exception e) { LOG.warn("getMaps " + e.getMessage()); } return result; } public static Gw2Client getInstance() { return instance; } }