For noen måneder siden lanserte Bitfactory en +mobilapp for å få +tilgang til bensinpriser på landets bensinstasjoner. +Informasjonen appens brukere har samlet inn har så langt kun vært +tilgjengelig for brukerne av app-ene, og API for å hente ut +informasjonen fra andre plattformer har ikke vært publisert. Da +løsningen kom spurte jeg utviklerne om de kunne publisere +API-dokumentasjon og de skulle se på saken, men det har ikke skjedd så +langt.
+ +Utrolig nok er det i følge
+
+
+ Jeg tok meg derfor litt tid for å revers-utvikle protokollen for
+Bitfactorys mobilapp for å gjøre den innsamlede informasjonen
+tilgjengelig for flere. Protokollen bruker HTTP og normal
+forms-notasjon for POST. Her er API-kallene jeg har identifisert så
+langt. GET http://www.bitfactory.no/Bensin/ver1.1.stasjonsDatabaseUpdateStamp Vet ikke helt hva dette API-kallet gjør, men navnet gjør at jeg
+tror den rapporterer når listen over stasjoner sist ble endret.
+Returverdien er et tall som pr. nå er 1319145491. Mitt gjett er at
+dette er sekunder siden 1. januar 1970 som kan konverteres til en
+leselig dato med perl -e 'print scalar(localtime(1319145491)),
+"\n"'. Dagens verdi konverterer da til "Thu Oct 20 23:18:11
+2011". echo password=X43uP9KS_3ZqR | POST http://www.bitfactory.no/Bensin/GetXMLDatabase.php
+
+ Henter ned listen med stasjoner på XML-format. Argumentet er
+password som muligens følger med i programpakken og eventuelt
+genereres av app-en. Nedlasting med samme passord flere ganger ser
+ikke ut til å fungere. Selve listen ser slik ut (klippet): echo UDID=Android-123456789012345 | POST http://www.bitfactory.no/Bensin/ver1.1.GetBanStatus.php Vet heller ikke helt hva dette API-kallet gjør. Navnet gjør at jeg
+tror den rapporterer om telefonen med UDID oppgitt som argument er
+bannlyst fra tjenesten. Bannlysning gjør antagelig at telefonen ikke
+kan brukes til å registrere bensinpriser, men det er også mulig det
+blokkerer for å se på priser. Eneste POST-argument er UDID, som ser
+ut til å være den unike ID-en til en mobil-enhet. Returnverdi er 'NO'
+for alle UDID-verdier jeg har testet. Gjetter på at alternativ
+returverdi er 'YES', men har ikke sett en slik verdi så langt. echo 'stasjoner=810,364&day=0' | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjoner.php Dette kallet henter ut priser registrert på en eller flere
+bensinstasjoner. Den tar to POST-argumenter, "stasjoner" som er
+kommaseparert liste over stasjons-IDer (numeriske), og "day" som bør
+settes til "0" for å få ut informasjon om priser. Usikker på hva
+tallet betyr, men mistenker det har med hvor langt tilbake i tid det
+skal hentes ut informasjon. Resultatet som kommer tilbake er en kommaseparert liste for hver
+enkelt stasjon, med <br> som skillemarkør mellom hver stasjon.
+Ikke helt sikker på hva alle feltene er. Her er mine gjett: En stasjonsoppføring består dermed av av bensinstasjons-ID og
+deretter tre blokker for 95-oktan bensin, 98-oktan bensin og
+disel. echo 'id=736&day=0' | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjon.php Ser ut til å returnere informasjon for en enkelt bensinstasjon.
+Formatet er dato på formen "08_12_2011" for 2011-12-08, og noe som ser
+ut som samme format som fra PriserVedStasjoner. For stasjoner der
+intet er registrert returnerer den "NO RESULTS". echo day=0 | POST http://www.bitfactory.no/Bensin/ver1.1.AllePriser.php Returnere liste med av alle stasjoner det er registrert oppdaterte
+priser på siste 24 timer. Returnerer "NO RESULTS" når listen er tom.
+Ellers returnerer den en dato på formen "Thursday_08_12_2011" skilt
+med <br> og deretter en liste med stasjoner på samme format som
+PriserVedStasjoner.
+<?xml version="1.0" encoding="UTF-8"?>
+<STASJONSDATABASE>
+<STASJON>
+<NAME></NAME>
+<ADDRESS></ADDRESS>
+<ID>0</ID>
+<LATITUDE>0.000000</LATITUDE>
+<LONGITUDE>0.000000</LONGITUDE>
+<COMPANY></COMPANY>
+</STASJON>
+<STASJON>
+<NAME>Statoil Best Eidsvoll Verk</NAME>
+<ADDRESS>Gamle Trondheimsvei 339 2074 Eidsvoll Verk</ADDRESS>
+<ID>1</ID>
+<LATITUDE>60.303902</LATITUDE>
+<LONGITUDE>11.168100</LONGITUDE>
+<COMPANY>Best</COMPANY>
+</STASJON>
+[...]
+<STASJON>
+<NAME>Esso Andenes</NAME>
+<ADDRESS>Falcksgate 9, 8480 Andenes</ADDRESS>
+<ID>1822</ID>
+<LATITUDE>69.320999</LATITUDE>
+<LONGITUDE>16.118700</LONGITUDE>
+<COMPANY>Esso</COMPANY>
+</STASJON>
+</STASJONSDATABASE>
+
+
+GetBanStatus
+
+
+
+
+
+
+1 Bensinstasjons-ID
+2 Pris for blyfri 95 oktan, flyttall med punktum som desimalskille.
+3 Klokkeslett da prisen ble oppdatert, format HH:MM.
+4 Telefon-ID på formen Android-123456789012345 eller hex-kodet streng/MD5-sum
+5 tall, uviss betydning. muligens relatert til day-verdien.
+6 Pris for blyfri 98-oktan?
+7 samme som felt 3
+8 samme som felt 4
+9 samme som felt 5
+10 Pris for disel
+11 Samme som felt 3
+12 Samme som felt 4
+13 Samme som felt 5