API Tips?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter De Schuyter

Wouter De Schuyter

29/05/2010 15:58:02
Quote Anchor link
Beste PHPHulp'ers,
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)
PHP script in nieuw venster Selecteer het PHP script
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
    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;
    }


EDIT:
Argumenten voor het gemak;
-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
 
PHP hulp

PHP hulp

21/11/2024 21:07:53
 
Tom Tom

Tom Tom

29/05/2010 16:54:48
Quote Anchor link
Waarom probeer je het zelf niet gewoon te testen?
 
Pim -

Pim -

29/05/2010 17:01:53
Quote Anchor link
Gewoon server-side loggen in een DB of logfile toch?
 
Tom Beuckelaere

Tom Beuckelaere

29/05/2010 19:42:30
Quote Anchor link
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 ;)
 
Wouter De Schuyter

Wouter De Schuyter

29/05/2010 20:37:58
Quote Anchor link
Ik heb het inderdaad zelf al uitgebreid getest.

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
 
Jelmer -

Jelmer -

29/05/2010 20:41:10
Quote Anchor link
In je Java code return je al voordat je lastTanned etc, en belangrijker lastUpdate hebt geset. Dat gaat niet werken.
 
Wouter De Schuyter

Wouter De Schuyter

29/05/2010 21:09:50
Quote Anchor link
@Jelmer ja idd heb ik er al uit gehaald
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.