Initial work on web api, with a basic hiscore api
This commit is contained in:
@@ -12,7 +12,11 @@ env:
|
||||
global:
|
||||
- secure: XkhMC3ytOrlgL4wNFRF3Wi3WxQl1vef1WxUpHn5/k4Y3oLDEJVTv5r06VhJz+hU+drdMPy1cJPmOCRleP+gNdM+Ka53aBaIJ1Hdmxw4vboZ05qHcNR29mi4F0EDvzZf3FtdWz4oXsLF/aW5+ZP4UzPa+jvpYmkvQa7MEM070mDUdWtYP/4N72aa934B/0lbmGithVbItuNabvYb4S+0MEXSTM6WAGE5I+Q+UbOwatHqqwzMZDuScA556XOc9NSDffcwgNKOuD7SmK3JETn3iFMXvSaMv21dL5ehiIJlUDVpQhMLWKlCj9Hh3VqX3ojML12CwO58+oAz4BvnR+pfQR6cC+Q7DyghxGs/+J02rBAJYIFlCCS/PqmrfdmriU8ejb/uiyPCsDNTgpEY9+92Puq/DswliRG+9YI0swN7qDSGzPWqriG7hoFmELHk6OZtX7VlRYNK6M+jfyY12SuPjQF2Mm1h18+A8thq8IXrTAB1FgtH5Or3ZVTuAPwEDBhJuk63uYZd19klINEzktxiB3WEgKCX4YMICKnxikBDXvCMid+tFV9nJclw7xFlOab9+GgkBHDbjcCBVwwPci2ieGVSC3sZb/5SS6whNYBFIO16rNTN+KyAONX4P6WQ6Ffg4FZEzKiU1c+HS0T87x2gUMJsAlTL9dUEcwvWCYLIPsBM=
|
||||
- secure: sH3m1bxlyUt/wy7edGEhAMvmk65SEKPPFW0rkC2h5dPXNScLmMtnv9Hk+AfmqWHervU0os1OuJjviocjyemY/Hp45WDweNBre4cQK/WBQwPKv+lcOMwqVbqQpQoeuauw42Lz1VBmQ/MqcCxhnXPdagEETgFYPaMYIN0LiUq4j6CMqHMGu1maljJgDc2fRe/OdKU+aAzksfAX+2ZAH3tQ7EBvJT3pP1FoJAOqQqQ5TGWYQ8R/jZSuDQXsBLdvmXzR2J9OPSzByk9PJaYtbKNrpynP9XzpXbr03Jq7Z6Fq1rxv/gjgzi8Rid6e1rJ6R93TbgzOltA8qQF6cVT73MzDCFHte8qCimN7WrH6Rt/Fw+b+t7ROjUjFWLGeJE5ujSbLDtlyaMccmyRx1tmxpTZg3F7FxhhbeYSYWZJ5W7u3Qi3vDKRVQvRh45EIAHVllDX/5hUZB8F8U517DpkXUdUCOPLiDbosJLow2L6RLywmQswIeD3oRGxQjbZ8x90glalq2dm/QIS0Q0s0OOO0+C/CNrEcEQqufSFQRT7m+XU5XMf5Wu/kpPNsRcXGXYj8aXi5mZbnXc3E0XyJhgQlrrWzJUTMI/U0jfFW1+ZZO/8YWlsShIdazWriPuXwBQqJG4Kshe95TcJY1RJc7McN8VUAuCAiJ/KsF3GUbsfWSejt3o0=
|
||||
# RUNELITE_BACKEND
|
||||
# RUNELITE_BACKEND
|
||||
- secure: psryZwj3/+xW2ZF/pjJR2UqCBVnUOdb8pbMia34yc5vQ2CCB2+ZrtIJyCEBXVpyZEgNj3qwgNtuj2tl1wameBVdrfVBBlkotlM120aeRwvMkmsggcNhTexf9SXcuRD34xGWvN7hF19ZiKBZk6rHWgzkDupFOPEAk/Q0E2swHW/YPeK8MKvRbY+UAK1WkY+TO4aJoVvDq9tc7Jbpj5XDhY6RLUb/96D+SnpBsnUG7GCpZxzavEZPMrGnMgntPlew9nWLHHcBKZbkMgTfD+X1fOrEG+kylOKIkV0afby5diKknVmLTfUUi1HrHUsvmoojcMtpBFN6yFGG7qrQV1DpZ/gZUcavWMNcBqrp03Dkb9Mtv2pnAI/KTERF3EmuzBM7/dmV/gw7Q+DmZBk97MV1ZFTvRcMu8u9OqC2TV9Xao3DqJV4dBA/d2CJrQHHdJopnh5kiEQtsWJvvqV1eLLBXY7EukMgmbYSb8ihOBY8Hi5tlIMit7j/RJCqM6jHlHEN9XcPOmNNab2liPiviWTQrvrantc2UxhgTX40DyhnDmVZIXIyS0ubqhRCgdxKuABS5aLY6SI0byXlQVj1GS1onZm9LxiTM1tq5EgCyQGBa0/6EpQNk1CNUF1dpZC7gOOFLC9nSQaBgRhqU19+6ctWTJjiTo+4WnTvutRZ3ZXoR9CE8=
|
||||
# TOMCAT_USERNAME
|
||||
- secure: ojn19kLrRjfNGEindivufyogtYVMbUHo5pyQmB5dXd3SojxEUIyYx7o7tYCfFcCQ0AmVZCEwmpU651R/m4cKobbx0suF6epozizhvS93Egc0RR5xXyUAHi0SgEUOf8fsv1V3SYy8gdaqcFFXTg5owtkdnfjjspIqrX8xZoVHItH21g06Izu1Zag+3/ovUrINY6TQM1voMQdBWlLzJ5N/gtY2AfhBGzdqa0tfSrpv23xRu1jrD0jZtE271tCHVlAFM9uJOLOP9nQYBxXC5DAoTgEVZb3yPgyiJgw0vWHneTEF5X+CQ5o7RXJQOWVdLJw5ZKfjLyFyHai44S1TA+x0WvAZjmwQvMlqD3PoTOd8dyz94eRU4lv2FE+bnzLjpBeSwLBl9tk9CketJIaQcOMUUOnuAidvgiKfDkNuMt2q5LcE0qFfjrgY8k8DBtYI13hodGMIIuUP3zXaH4nK2jOfgzVzshCpVk3pwsqtxwDjnTUIFvv8IJO5K5kC6dDlWbH+J7yrX4kPj7GKFxYcdWsjSg59E/qjeeHomqzq7PMj1XqWRgDo4JmqZxU+qgr3f2tabyP8whFdbDZTQgLuX1y0lP+7hUzOwkoi/mnqUAHlj81vRylBcX/gFtI+pJQwD7ZDwLfAmBPrkizetavxTWROnAuOoeRlzseVpclAscM2SEo=
|
||||
# TOMCAT_PASSWORD
|
||||
- secure: Hwsrlm4AblXCNdW837Z6Omsjw8sRrWA3V5/b+EtFEIzHEQE3Yd+LpKG6nW79QIKNQAwDxWb6YiDd7iFUPXYuPGW30HNvkq0VBUbWetuXF87tz9oJLwTZal8xhAk7LS9P+edf7f22UI1rdMj7nBG8VKTF9zWqm2vWphhJIMJBHIsAlk04qxOgDVPbhiccbJJ7TBpt3sIADmWeD8Z1gl23VolW+u/OELUg0Q+2JA+8RChL6vcju2/uh7pUrkMl3nqMrm8Go6EC6EDvtpOW8jcd5ov76t8opAmU6gfNWE5ZP72s9UHXuHsw+iFyO5QU3LdYMNBYRCisoYCRudy7O8uOEVsD35GaFhZmjAggawHu8FVUrnCAHYla23vEpgwxhyt0tCn9jVNJlViQMrF0S8ph7tQtykv+jpVZa+JZIyQOLDItbTxSnRqNswTEpFqZgYKbXL9DMtnt2rKeJKb48GUY8KTxM7RswczQOJ/X5nA+n2d86kPf8d4etQcXAoyfAzOv7N8JTW2lLnY/AFJpg1sHUnXKOQTNpXxHXJGrT9tHsNVHzY+IOZKqvCsfB0T5IlOslD62OgHGO5V5N9EycKyHON0nCPzFRx+0Ej+pm+leq+WQq4NYCO605qyE+WnA96L8ZiVhTTxQYeqcWxISzi+UTv9o/Mw4tcJJBz8ePmZVkAY=
|
||||
notifications:
|
||||
irc: "irc.rizon.net#runelite"
|
||||
|
||||
84
http-api/pom.xml
Normal file
84
http-api/pom.xml
Normal file
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>net.runelite</groupId>
|
||||
<artifactId>runelite-parent</artifactId>
|
||||
<version>1.1.20-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<name>Web API</name>
|
||||
<artifactId>http-api</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.7.12</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>1.7.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.api;
|
||||
|
||||
public class RuneliteAPI
|
||||
{
|
||||
private static final String BASE = "https://api.runelite.net/runelite-";
|
||||
private static String version = RuneliteAPI.class.getPackage().getImplementationVersion();
|
||||
|
||||
public static String getApiBase()
|
||||
{
|
||||
return BASE + getVersion();
|
||||
}
|
||||
|
||||
public static String getVersion()
|
||||
{
|
||||
return version;
|
||||
}
|
||||
|
||||
public static void setVersion(String version)
|
||||
{
|
||||
RuneliteAPI.version = version;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.api.hiscore;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import net.runelite.http.api.RuneliteAPI;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.client.methods.HttpUriRequest;
|
||||
import org.apache.http.client.utils.URIBuilder;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class HiscoreClient
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(HiscoreClient.class);
|
||||
|
||||
private static final String URL = RuneliteAPI.getApiBase() + "/hiscore";
|
||||
|
||||
private final Gson gson = new Gson();
|
||||
|
||||
public HiscoreResult lookup(String username) throws IOException, URISyntaxException
|
||||
{
|
||||
URIBuilder builder = new URIBuilder(URL)
|
||||
.addParameter("username", username);
|
||||
|
||||
URI uri = builder.build();
|
||||
|
||||
logger.debug("Built URI: {}", uri);
|
||||
|
||||
HttpUriRequest request = new HttpGet(uri);
|
||||
|
||||
try (CloseableHttpClient client = HttpClients.createDefault();
|
||||
CloseableHttpResponse response = client.execute(request))
|
||||
{
|
||||
InputStream in = response.getEntity().getContent();
|
||||
return gson.fromJson(new InputStreamReader(in), HiscoreResult.class);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,463 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.api.hiscore;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class HiscoreResult
|
||||
{
|
||||
private String player;
|
||||
private Skill overall;
|
||||
private Skill attack;
|
||||
private Skill defence;
|
||||
private Skill strength;
|
||||
private Skill hitpoints;
|
||||
private Skill ranged;
|
||||
private Skill prayer;
|
||||
private Skill magic;
|
||||
private Skill cooking;
|
||||
private Skill woodcutting;
|
||||
private Skill fletching;
|
||||
private Skill fishing;
|
||||
private Skill firemaking;
|
||||
private Skill crafting;
|
||||
private Skill smithing;
|
||||
private Skill mining;
|
||||
private Skill herblore;
|
||||
private Skill agility;
|
||||
private Skill thieving;
|
||||
private Skill slayer;
|
||||
private Skill farming;
|
||||
private Skill runecraft;
|
||||
private Skill hunter;
|
||||
private Skill construction;
|
||||
|
||||
public String getPlayer()
|
||||
{
|
||||
return player;
|
||||
}
|
||||
|
||||
public void setPlayer(String player)
|
||||
{
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public Skill getOverall()
|
||||
{
|
||||
return overall;
|
||||
}
|
||||
|
||||
public void setOverall(Skill overall)
|
||||
{
|
||||
this.overall = overall;
|
||||
}
|
||||
|
||||
public Skill getAttack()
|
||||
{
|
||||
return attack;
|
||||
}
|
||||
|
||||
public void setAttack(Skill attack)
|
||||
{
|
||||
this.attack = attack;
|
||||
}
|
||||
|
||||
public Skill getDefence()
|
||||
{
|
||||
return defence;
|
||||
}
|
||||
|
||||
public void setDefence(Skill defence)
|
||||
{
|
||||
this.defence = defence;
|
||||
}
|
||||
|
||||
public Skill getStrength()
|
||||
{
|
||||
return strength;
|
||||
}
|
||||
|
||||
public void setStrength(Skill strength)
|
||||
{
|
||||
this.strength = strength;
|
||||
}
|
||||
|
||||
public Skill getHitpoints()
|
||||
{
|
||||
return hitpoints;
|
||||
}
|
||||
|
||||
public void setHitpoints(Skill hitpoints)
|
||||
{
|
||||
this.hitpoints = hitpoints;
|
||||
}
|
||||
|
||||
public Skill getRanged()
|
||||
{
|
||||
return ranged;
|
||||
}
|
||||
|
||||
public void setRanged(Skill ranged)
|
||||
{
|
||||
this.ranged = ranged;
|
||||
}
|
||||
|
||||
public Skill getPrayer()
|
||||
{
|
||||
return prayer;
|
||||
}
|
||||
|
||||
public void setPrayer(Skill prayer)
|
||||
{
|
||||
this.prayer = prayer;
|
||||
}
|
||||
|
||||
public Skill getMagic()
|
||||
{
|
||||
return magic;
|
||||
}
|
||||
|
||||
public void setMagic(Skill magic)
|
||||
{
|
||||
this.magic = magic;
|
||||
}
|
||||
|
||||
public Skill getCooking()
|
||||
{
|
||||
return cooking;
|
||||
}
|
||||
|
||||
public void setCooking(Skill cooking)
|
||||
{
|
||||
this.cooking = cooking;
|
||||
}
|
||||
|
||||
public Skill getWoodcutting()
|
||||
{
|
||||
return woodcutting;
|
||||
}
|
||||
|
||||
public void setWoodcutting(Skill woodcutting)
|
||||
{
|
||||
this.woodcutting = woodcutting;
|
||||
}
|
||||
|
||||
public Skill getFletching()
|
||||
{
|
||||
return fletching;
|
||||
}
|
||||
|
||||
public void setFletching(Skill fletching)
|
||||
{
|
||||
this.fletching = fletching;
|
||||
}
|
||||
|
||||
public Skill getFishing()
|
||||
{
|
||||
return fishing;
|
||||
}
|
||||
|
||||
public void setFishing(Skill fishing)
|
||||
{
|
||||
this.fishing = fishing;
|
||||
}
|
||||
|
||||
public Skill getFiremaking()
|
||||
{
|
||||
return firemaking;
|
||||
}
|
||||
|
||||
public void setFiremaking(Skill firemaking)
|
||||
{
|
||||
this.firemaking = firemaking;
|
||||
}
|
||||
|
||||
public Skill getCrafting()
|
||||
{
|
||||
return crafting;
|
||||
}
|
||||
|
||||
public void setCrafting(Skill crafting)
|
||||
{
|
||||
this.crafting = crafting;
|
||||
}
|
||||
|
||||
public Skill getSmithing()
|
||||
{
|
||||
return smithing;
|
||||
}
|
||||
|
||||
public void setSmithing(Skill smithing)
|
||||
{
|
||||
this.smithing = smithing;
|
||||
}
|
||||
|
||||
public Skill getMining()
|
||||
{
|
||||
return mining;
|
||||
}
|
||||
|
||||
public void setMining(Skill mining)
|
||||
{
|
||||
this.mining = mining;
|
||||
}
|
||||
|
||||
public Skill getHerblore()
|
||||
{
|
||||
return herblore;
|
||||
}
|
||||
|
||||
public void setHerblore(Skill herblore)
|
||||
{
|
||||
this.herblore = herblore;
|
||||
}
|
||||
|
||||
public Skill getAgility()
|
||||
{
|
||||
return agility;
|
||||
}
|
||||
|
||||
public void setAgility(Skill agility)
|
||||
{
|
||||
this.agility = agility;
|
||||
}
|
||||
|
||||
public Skill getThieving()
|
||||
{
|
||||
return thieving;
|
||||
}
|
||||
|
||||
public void setThieving(Skill thieving)
|
||||
{
|
||||
this.thieving = thieving;
|
||||
}
|
||||
|
||||
public Skill getSlayer()
|
||||
{
|
||||
return slayer;
|
||||
}
|
||||
|
||||
public void setSlayer(Skill slayer)
|
||||
{
|
||||
this.slayer = slayer;
|
||||
}
|
||||
|
||||
public Skill getFarming()
|
||||
{
|
||||
return farming;
|
||||
}
|
||||
|
||||
public void setFarming(Skill farming)
|
||||
{
|
||||
this.farming = farming;
|
||||
}
|
||||
|
||||
public Skill getRunecraft()
|
||||
{
|
||||
return runecraft;
|
||||
}
|
||||
|
||||
public void setRunecraft(Skill runecraft)
|
||||
{
|
||||
this.runecraft = runecraft;
|
||||
}
|
||||
|
||||
public Skill getHunter()
|
||||
{
|
||||
return hunter;
|
||||
}
|
||||
|
||||
public void setHunter(Skill hunter)
|
||||
{
|
||||
this.hunter = hunter;
|
||||
}
|
||||
|
||||
public Skill getConstruction()
|
||||
{
|
||||
return construction;
|
||||
}
|
||||
|
||||
public void setConstruction(Skill construction)
|
||||
{
|
||||
this.construction = construction;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 7;
|
||||
hash = 29 * hash + Objects.hashCode(this.player);
|
||||
hash = 29 * hash + Objects.hashCode(this.overall);
|
||||
hash = 29 * hash + Objects.hashCode(this.attack);
|
||||
hash = 29 * hash + Objects.hashCode(this.defence);
|
||||
hash = 29 * hash + Objects.hashCode(this.strength);
|
||||
hash = 29 * hash + Objects.hashCode(this.hitpoints);
|
||||
hash = 29 * hash + Objects.hashCode(this.ranged);
|
||||
hash = 29 * hash + Objects.hashCode(this.prayer);
|
||||
hash = 29 * hash + Objects.hashCode(this.magic);
|
||||
hash = 29 * hash + Objects.hashCode(this.cooking);
|
||||
hash = 29 * hash + Objects.hashCode(this.woodcutting);
|
||||
hash = 29 * hash + Objects.hashCode(this.fletching);
|
||||
hash = 29 * hash + Objects.hashCode(this.fishing);
|
||||
hash = 29 * hash + Objects.hashCode(this.firemaking);
|
||||
hash = 29 * hash + Objects.hashCode(this.crafting);
|
||||
hash = 29 * hash + Objects.hashCode(this.smithing);
|
||||
hash = 29 * hash + Objects.hashCode(this.mining);
|
||||
hash = 29 * hash + Objects.hashCode(this.herblore);
|
||||
hash = 29 * hash + Objects.hashCode(this.agility);
|
||||
hash = 29 * hash + Objects.hashCode(this.thieving);
|
||||
hash = 29 * hash + Objects.hashCode(this.slayer);
|
||||
hash = 29 * hash + Objects.hashCode(this.farming);
|
||||
hash = 29 * hash + Objects.hashCode(this.runecraft);
|
||||
hash = 29 * hash + Objects.hashCode(this.hunter);
|
||||
hash = 29 * hash + Objects.hashCode(this.construction);
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (this == obj)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
final HiscoreResult other = (HiscoreResult) obj;
|
||||
if (!Objects.equals(this.player, other.player))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.overall, other.overall))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.attack, other.attack))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.defence, other.defence))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.strength, other.strength))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.hitpoints, other.hitpoints))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.ranged, other.ranged))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.prayer, other.prayer))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.magic, other.magic))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.cooking, other.cooking))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.woodcutting, other.woodcutting))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.fletching, other.fletching))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.fishing, other.fishing))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.firemaking, other.firemaking))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.crafting, other.crafting))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.smithing, other.smithing))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.mining, other.mining))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.herblore, other.herblore))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.agility, other.agility))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.thieving, other.thieving))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.slayer, other.slayer))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.farming, other.farming))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.runecraft, other.runecraft))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.hunter, other.hunter))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(this.construction, other.construction))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "HiscoreResult{" + "player=" + player + ", overall=" + overall + ", attack=" + attack + ", defence=" + defence + ", strength=" + strength + ", hitpoints=" + hitpoints + ", ranged=" + ranged + ", prayer=" + prayer + ", magic=" + magic + ", cooking=" + cooking + ", woodcutting=" + woodcutting + ", fletching=" + fletching + ", fishing=" + fishing + ", firemaking=" + firemaking + ", crafting=" + crafting + ", smithing=" + smithing + ", mining=" + mining + ", herblore=" + herblore + ", agility=" + agility + ", thieving=" + thieving + ", slayer=" + slayer + ", farming=" + farming + ", runecraft=" + runecraft + ", hunter=" + hunter + ", construction=" + construction + '}';
|
||||
}
|
||||
}
|
||||
101
http-api/src/main/java/net/runelite/http/api/hiscore/Skill.java
Normal file
101
http-api/src/main/java/net/runelite/http/api/hiscore/Skill.java
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.api.hiscore;
|
||||
|
||||
public class Skill
|
||||
{
|
||||
private final int rank;
|
||||
private final int level;
|
||||
private final long experience;
|
||||
|
||||
public Skill(int rank, int level, long experience)
|
||||
{
|
||||
this.rank = rank;
|
||||
this.level = level;
|
||||
this.experience = experience;
|
||||
}
|
||||
|
||||
public int getRank()
|
||||
{
|
||||
return rank;
|
||||
}
|
||||
|
||||
public int getLevel()
|
||||
{
|
||||
return level;
|
||||
}
|
||||
|
||||
public long getExperience()
|
||||
{
|
||||
return experience;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 3;
|
||||
hash = 59 * hash + this.rank;
|
||||
hash = 59 * hash + this.level;
|
||||
hash = 59 * hash + (int) (this.experience ^ (this.experience >>> 32));
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (this == obj)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
final Skill other = (Skill) obj;
|
||||
if (this.rank != other.rank)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.level != other.level)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.experience != other.experience)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "Skill{" + "rank=" + rank + ", level=" + level + ", experience=" + experience + '}';
|
||||
}
|
||||
}
|
||||
105
http-service/pom.xml
Normal file
105
http-service/pom.xml
Normal file
@@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>net.runelite</groupId>
|
||||
<artifactId>runelite-parent</artifactId>
|
||||
<version>1.1.20-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<name>Web Service</name>
|
||||
<artifactId>http-service</artifactId>
|
||||
<packaging>war</packaging>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>net.runelite</groupId>
|
||||
<artifactId>http-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.sparkjava</groupId>
|
||||
<artifactId>spark-core</artifactId>
|
||||
<version>2.5.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-csv</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.7.12</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>1.7.12</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<version>1.10.19</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.tomcat.maven</groupId>
|
||||
<artifactId>tomcat7-maven-plugin</artifactId>
|
||||
<version>2.2</version>
|
||||
<configuration>
|
||||
<url>${runelite.tomcat.url}</url>
|
||||
<server>runelite-tomcat</server>
|
||||
<path>/runelite-${project.version}</path>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>tomcat-deploy</id>
|
||||
<phase>deploy</phase>
|
||||
<goals>
|
||||
<goal>redeploy</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
|
||||
public class HttpClient
|
||||
{
|
||||
public String get(URI uri) throws IOException
|
||||
{
|
||||
HttpGet request = new HttpGet(uri);
|
||||
|
||||
try (CloseableHttpClient client = HttpClients.createDefault();
|
||||
CloseableHttpResponse response = client.execute(request))
|
||||
{
|
||||
return EntityUtils.toString(response.getEntity());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.service;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import spark.ResponseTransformer;
|
||||
|
||||
public class JsonTransformer implements ResponseTransformer
|
||||
{
|
||||
private final Gson gson = new Gson();
|
||||
|
||||
@Override
|
||||
public String render(Object model) throws Exception
|
||||
{
|
||||
return gson.toJson(model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.service;
|
||||
|
||||
import net.runelite.http.api.RuneliteAPI;
|
||||
import net.runelite.http.service.hiscore.HiscoreService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import spark.servlet.SparkApplication;
|
||||
import static spark.Spark.*;
|
||||
|
||||
public class Service implements SparkApplication
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(Service.class);
|
||||
|
||||
private final JsonTransformer transformer = new JsonTransformer();
|
||||
|
||||
private HiscoreService hiscores = new HiscoreService();
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
get("/version", (request, response) -> RuneliteAPI.getVersion());
|
||||
get("/hiscore", (request, response) -> hiscores.lookup(request.queryParams("username")), transformer);
|
||||
|
||||
exception(Exception.class, (exception, request, response) -> logger.warn(null, exception));
|
||||
}
|
||||
|
||||
public HiscoreService getHiscores()
|
||||
{
|
||||
return hiscores;
|
||||
}
|
||||
|
||||
public void setHiscores(HiscoreService hiscores)
|
||||
{
|
||||
this.hiscores = hiscores;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.service.hiscore;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import net.runelite.http.api.hiscore.HiscoreResult;
|
||||
import net.runelite.http.api.hiscore.Skill;
|
||||
|
||||
public class HiscoreResultBuilder
|
||||
{
|
||||
public static final int NUM_SKILLS = 24;
|
||||
|
||||
private final HiscoreResult result = new HiscoreResult();
|
||||
|
||||
private final Consumer<Skill>[] consumers = new Consumer[]
|
||||
{
|
||||
(s) -> result.setOverall((Skill) s),
|
||||
(s) -> result.setAttack((Skill) s),
|
||||
(s) -> result.setDefence((Skill) s),
|
||||
(s) -> result.setStrength((Skill) s),
|
||||
(s) -> result.setHitpoints((Skill) s),
|
||||
(s) -> result.setRanged((Skill) s),
|
||||
(s) -> result.setPrayer((Skill) s),
|
||||
(s) -> result.setMagic((Skill) s),
|
||||
(s) -> result.setCooking((Skill) s),
|
||||
(s) -> result.setWoodcutting((Skill) s),
|
||||
(s) -> result.setFletching((Skill) s),
|
||||
(s) -> result.setFishing((Skill) s),
|
||||
(s) -> result.setFiremaking((Skill) s),
|
||||
(s) -> result.setCrafting((Skill) s),
|
||||
(s) -> result.setSmithing((Skill) s),
|
||||
(s) -> result.setMining((Skill) s),
|
||||
(s) -> result.setHerblore((Skill) s),
|
||||
(s) -> result.setAgility((Skill) s),
|
||||
(s) -> result.setThieving((Skill) s),
|
||||
(s) -> result.setSlayer((Skill) s),
|
||||
(s) -> result.setFarming((Skill) s),
|
||||
(s) -> result.setRunecraft((Skill) s),
|
||||
(s) -> result.setHunter((Skill) s),
|
||||
(s) -> result.setConstruction((Skill) s),
|
||||
};
|
||||
|
||||
private int position;
|
||||
|
||||
public void setPlayer(String player)
|
||||
{
|
||||
result.setPlayer(player);
|
||||
}
|
||||
|
||||
public void setNextSkill(Skill skill)
|
||||
{
|
||||
consumers[position++].accept(skill);
|
||||
}
|
||||
|
||||
public HiscoreResult build()
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.service.hiscore;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import net.runelite.http.api.hiscore.HiscoreResult;
|
||||
import net.runelite.http.api.hiscore.Skill;
|
||||
import net.runelite.http.service.HttpClient;
|
||||
import org.apache.commons.csv.CSVFormat;
|
||||
import org.apache.commons.csv.CSVParser;
|
||||
import org.apache.commons.csv.CSVRecord;
|
||||
import org.apache.http.client.utils.URIBuilder;
|
||||
|
||||
public class HiscoreService
|
||||
{
|
||||
private static final String RUNESCAPE_HISCORE_SERVICE = "http://services.runescape.com/m=hiscore_oldschool/index_lite.ws";
|
||||
|
||||
private HttpClient client = new HttpClient();
|
||||
|
||||
public HiscoreResult lookup(String username) throws IOException, URISyntaxException
|
||||
{
|
||||
URIBuilder builder = new URIBuilder(RUNESCAPE_HISCORE_SERVICE)
|
||||
.addParameter("player", username);
|
||||
|
||||
String csv = client.get(builder.build());
|
||||
CSVParser parser = CSVParser.parse(csv, CSVFormat.DEFAULT);
|
||||
|
||||
HiscoreResultBuilder hiscoreBuilder = new HiscoreResultBuilder();
|
||||
hiscoreBuilder.setPlayer(username);
|
||||
|
||||
int count = 0;
|
||||
|
||||
for (CSVRecord record : parser.getRecords())
|
||||
{
|
||||
if (count++ >= HiscoreResultBuilder.NUM_SKILLS)
|
||||
{
|
||||
break; // rest is other things?
|
||||
}
|
||||
|
||||
// rank, level, experience
|
||||
int rank = Integer.parseInt(record.get(0));
|
||||
int level = Integer.parseInt(record.get(1));
|
||||
long experience = Long.parseLong(record.get(2));
|
||||
|
||||
Skill skill = new Skill(rank, level, experience);
|
||||
hiscoreBuilder.setNextSkill(skill);
|
||||
}
|
||||
|
||||
return hiscoreBuilder.build();
|
||||
}
|
||||
|
||||
public HttpClient getClient()
|
||||
{
|
||||
return client;
|
||||
}
|
||||
|
||||
public void setClient(HttpClient client)
|
||||
{
|
||||
this.client = client;
|
||||
}
|
||||
}
|
||||
43
http-service/src/main/webapp/WEB-INF/web.xml
Normal file
43
http-service/src/main/webapp/WEB-INF/web.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<!--
|
||||
Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
|
||||
<filter>
|
||||
<filter-name>SparkFilter</filter-name>
|
||||
<filter-class>spark.servlet.SparkFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>applicationClass</param-name>
|
||||
<param-value>net.runelite.http.service.Service</param-value>
|
||||
</init-param>
|
||||
</filter>
|
||||
|
||||
<filter-mapping>
|
||||
<filter-name>SparkFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
</web-app>
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.service;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import net.runelite.http.api.hiscore.HiscoreResult;
|
||||
import net.runelite.http.api.hiscore.Skill;
|
||||
import net.runelite.http.service.hiscore.HiscoreService;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Assert;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
import spark.Spark;
|
||||
|
||||
public class ServiceTest
|
||||
{
|
||||
private static final String URL_BASE = "http://localhost:4567";
|
||||
|
||||
private static Service service;
|
||||
|
||||
@BeforeClass
|
||||
public static void before()
|
||||
{
|
||||
service = new Service();
|
||||
service.init();
|
||||
|
||||
Spark.awaitInitialization();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void after()
|
||||
{
|
||||
Spark.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInit() throws Exception
|
||||
{
|
||||
HiscoreService hiscoreService = mock(HiscoreService.class);
|
||||
service.setHiscores(hiscoreService);
|
||||
|
||||
HiscoreResult result = new HiscoreResult();
|
||||
result.setAttack(new Skill(1, 99, 42));
|
||||
|
||||
when(hiscoreService.lookup("zezima")).thenReturn(result);
|
||||
|
||||
URL url = new URL(URL_BASE + "/hiscore?username=zezima");
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setRequestMethod("GET");
|
||||
connection.connect();
|
||||
|
||||
Gson gson = new Gson();
|
||||
HiscoreResult res = gson.fromJson(new InputStreamReader(connection.getInputStream()), HiscoreResult.class);
|
||||
|
||||
Assert.assertEquals(result, res);
|
||||
|
||||
Spark.stop();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.http.service.hiscore;
|
||||
|
||||
import java.net.URI;
|
||||
import net.runelite.http.api.hiscore.HiscoreResult;
|
||||
import net.runelite.http.service.HttpClient;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Matchers;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class HiscoreServiceTest
|
||||
{
|
||||
private static final String RESPONSE = "654683,705,1304518\n"
|
||||
+ "679419,50,107181\n"
|
||||
+ "550667,48,85764\n"
|
||||
+ "861497,50,101366\n"
|
||||
+ "891591,48,87843\n"
|
||||
+ "-1,1,4\n"
|
||||
+ "840255,27,10073\n"
|
||||
+ "1371912,10,1310\n"
|
||||
+ "432193,56,199795\n"
|
||||
+ "495638,56,198304\n"
|
||||
+ "514466,37,27502\n"
|
||||
+ "456981,54,159727\n"
|
||||
+ "459159,49,93010\n"
|
||||
+ "1028855,8,823\n"
|
||||
+ "862906,29,12749\n"
|
||||
+ "795020,31,16097\n"
|
||||
+ "673591,5,495\n"
|
||||
+ "352676,51,112259\n"
|
||||
+ "428419,40,37235\n"
|
||||
+ "461887,43,51971\n"
|
||||
+ "598582,1,10\n"
|
||||
+ "638177,1,0\n"
|
||||
+ "516239,9,1000\n"
|
||||
+ "492790,1,0\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1\n"
|
||||
+ "-1,-1";
|
||||
|
||||
@Test
|
||||
public void testLookup() throws Exception
|
||||
{
|
||||
HttpClient client = mock(HttpClient.class);
|
||||
when(client.get(Matchers.any(URI.class)))
|
||||
.thenReturn(RESPONSE);
|
||||
|
||||
HiscoreService hiscores = new HiscoreService();
|
||||
hiscores.setClient(client);
|
||||
|
||||
HiscoreResult result = hiscores.lookup("zezima");
|
||||
|
||||
Assert.assertEquals(50, result.getAttack().getLevel());
|
||||
Assert.assertEquals(159727L, result.getFishing().getExperience());
|
||||
Assert.assertEquals(492790, result.getConstruction().getRank());
|
||||
}
|
||||
|
||||
}
|
||||
3
pom.xml
3
pom.xml
@@ -72,6 +72,8 @@
|
||||
<module>runescape-client</module>
|
||||
<module>runescape-client-injector</module>
|
||||
<module>runescape-client-injector-plugin</module>
|
||||
<module>http-api</module>
|
||||
<module>http-service</module>
|
||||
</modules>
|
||||
|
||||
<build>
|
||||
@@ -79,7 +81,6 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.19</version>
|
||||
<configuration>
|
||||
<enableAssertions>true</enableAssertions>
|
||||
<argLine>-Xmx512m</argLine>
|
||||
|
||||
@@ -137,6 +137,11 @@ under the License.
|
||||
<username>runelite</username>
|
||||
<privateKey>${user.home}/.ssh/runelite</privateKey>
|
||||
</server>
|
||||
<server>
|
||||
<id>runelite-tomcat</id>
|
||||
<username>${env.TOMCAT_USERNAME}</username>
|
||||
<password>${env.TOMCAT_PASSWORD}</password>
|
||||
</server>
|
||||
|
||||
</servers>
|
||||
|
||||
@@ -258,6 +263,7 @@ under the License.
|
||||
|
||||
<properties>
|
||||
<runelite.repository.url>${env.RUNELITE_REPOSITORY_URL}</runelite.repository.url>
|
||||
<runelite.tomcat.url>http://api.runelite.net/manager/text</runelite.tomcat.url>
|
||||
</properties>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
Reference in New Issue
Block a user