API Tips?
ik ben bezig met een API te maken voor een Java (en ja ik bedoel wel degelijk Java en geen JavaScript) programma dat elke 5 minuten data verstuurd.
Zijn er enige tips die jullie mij kunnen geven voor het controleren van de API?
Het is de bedoeling dat de API enkel door het programma kan gebruikt worden en dus niet misbruikt worden door anderen.
Aangezien het een opensource project is hebben anderen dus toegang tot mijn code en kunnen ze zien hoe ze de API kunnen gebruiken.
Als jullie al even willen testen, hieronder de URL van de api en de method die ik gebruik voor het versturen van stats (waar je dus de nodige argumenten uit kan afleiden).
http://rsbot.paradox-productions.net/API.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private boolean updateStats(boolean update) {
// Update every 5 minutes unless update is true
if(System.currentTimeMillis() - lastUpdate > 300000 || update) {
try {
new URL("http://rsbot.paradox-productions.net/API.php?action=submit_stats"
+ "&nickname=" + statsNick
+ "&hidesTanned=" + (hidesTanned - lastTanned)
+ "&runCount=" + (runCount - lastRuncount)
+ "&profit=" + (profitMade - lastProfit)
+ "&time=" + (runTime - lastRuntime)
+ "&typeOfHides=" + hidesType
).openStream();
return true;
}
catch (final Exception e) {
return false;
}
lastTanned = hidesTanned;
lastProfit = profitMade;
lastRuncount = runCount;
lastRuntime = runTime;
lastUpdate = System.currentTimeMillis();
}
return false;
}
// Update every 5 minutes unless update is true
if(System.currentTimeMillis() - lastUpdate > 300000 || update) {
try {
new URL("http://rsbot.paradox-productions.net/API.php?action=submit_stats"
+ "&nickname=" + statsNick
+ "&hidesTanned=" + (hidesTanned - lastTanned)
+ "&runCount=" + (runCount - lastRuncount)
+ "&profit=" + (profitMade - lastProfit)
+ "&time=" + (runTime - lastRuntime)
+ "&typeOfHides=" + hidesType
).openStream();
return true;
}
catch (final Exception e) {
return false;
}
lastTanned = hidesTanned;
lastProfit = profitMade;
lastRuncount = runCount;
lastRuntime = runTime;
lastUpdate = System.currentTimeMillis();
}
return false;
}
EDIT:
Argumenten voor het gemak;
-nickname (type string)
-hidesTanned (type integer)
-runCount (type integer)
-profit (type integer)
-time (type integer)
-typeOfHides (type integer)
-nickname (type string)
-hidesTanned (type integer)
-runCount (type integer)
-profit (type integer)
-time (type integer)
-typeOfHides (type integer)
Gewijzigd op 29/05/2010 16:03:44 door Wouter De Schuyter
Waarom probeer je het zelf niet gewoon te testen?
Gewoon server-side loggen in een DB of logfile toch?
Tom:
Waarom probeer je het zelf niet gewoon te testen?
Ik ben er van overtuigd dat hij dat zeker zal doen of heeft gedaan. Hij vraagt echter onze extra hulp om zo tot ontdekkingen te komen die hij zelf misschien niet zou zien.
Een extra paar ogen helpt altijd ;)
Misschien een fout van mij om niet te zeggen tegen wat ik nu beveilig.
Ik controleer momenteel of de useragent Java/x.x.x_xx is, er kan niet meer dan 1 request per ip elke 300.000 miliseconden (5 minuten) gedaan worden, alle velden moet ingevuld zijn, enkel het veld nickname mag niet numeriek zijn en dat is zo een beetje mijn controle tot nu toe.
Mvg,
Wouter.
Gewijzigd op 29/05/2010 20:39:22 door Wouter De Schuyter
In je Java code return je al voordat je lastTanned etc, en belangrijker lastUpdate hebt geset. Dat gaat niet werken.
@Jelmer ja idd heb ik er al uit gehaald