Difference between revisions of "SpaceAPI"

From Fixme.ch
Jump to: navigation, search
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Ongoing_Projects]]
+
[[Category:Closed_Projects]][[Category:Android]]
 
== Description ==
 
== Description ==
* Accessible here: https://fixme.ch/cgi-bin/spaceapi.py
+
* Accessible here
 +
**https://fixme.ch/cgi-bin/spaceapi.py
 +
**https://fixme.ch/status.json
 
* Provide a simple API to know whether the hackerspace is open or closed
 
* Provide a simple API to know whether the hackerspace is open or closed
* Implements the [https://hackerspaces.nl/spaceapi/ Space API]
+
* Documentation to implements the SpaceAPI
 +
** New website: http://spaceapi.net/
 +
** Old website: https://hackerspaces.nl/spaceapi/
 
** [http://openspace.slopjong.de/ API Validator]
 
** [http://openspace.slopjong.de/ API Validator]
 +
* App which implements it
 +
** http://spacestatus.bastinat0r.de/#fixme
 +
** http://spaceapi.net/app
  
 
== Components ==
 
== Components ==
 +
* We were hosting a fork of the SpaceAPI, because it was often down and the process to add new space is opaque
 +
** This endpoint was used in MyHackerspace Android application
 +
** It's available here: http://spaceapi.fixme.ch/directory.json
 +
** It has been taken by the SpaceApi org on github (swiss german ppl mainly)
 
* [https://github.com/fixme-lausanne/Twitter-Hackerspace-Status Sources on Github]
 
* [https://github.com/fixme-lausanne/Twitter-Hackerspace-Status Sources on Github]
* Python script on fixme.ch that serves the API
+
** Python script on fixme.ch that serves the API on https://fixme.ch/status.json
* Perl script that put the status in a Mysql DB (from the [[RFID_Doorlock]] or from a computer)
+
** Perl script that put the status in a Mysql DB (from the [[RFID_Doorlock]] or from a computer)
* A Drupal module to show the status on the main website
+
** A Drupal module to show the status on the main website
* [https://play.google.com/store/apps/details?id=ch.fixme.status Android application using SpaceAPI directory] (WorkInProgress)
+
* MyHackerspace: Android application using SpaceAPI directory
 +
** [https://play.google.com/store/apps/details?id=ch.fixme.status Android Download on Play store]
 +
** [http://f-droid.org/repository/browse/?fdfilter=hackerspace&fdid=ch.fixme.status Download on F-Droid.org]
 +
** [https://github.com/fixme-lausanne/MyHackerspace/ Source code]
  
 
== Dummy script to lookup the status ==
 
== Dummy script to lookup the status ==
Line 18: Line 32:
 
#!/usr/bin/env python3
 
#!/usr/bin/env python3
 
import urllib.request
 
import urllib.request
try:
+
import json
import json
+
 
except ImportError:
+
import simplejson as json
+
 
URL = "https://fixme.ch/cgi-bin/spaceapi.py"
 
URL = "https://fixme.ch/cgi-bin/spaceapi.py"
  
Line 44: Line 56:
 
else:
 
else:
 
print("The hackerspace is closed")
 
print("The hackerspace is closed")
 
+
json = get_json()
print_info(get_json())
+
try:
 +
        print_info(json)
 +
except:
 +
        pass
  
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 17:01, 14 November 2019

Description

Components

Dummy script to lookup the status

#!/usr/bin/env python3
import urllib.request
import json
 
URL = "https://fixme.ch/cgi-bin/spaceapi.py"
 
def get_json():
	try:
		con = urllib.request.urlopen(URL)
		content = con.read()
		hs_json = json.loads(content.decode('utf8'))
		return hs_json
	except IOError:
		print("A network error occured sorry")
		exit(1)
	except ValueError:
		print("Malformatted json")
 
def print_info(hs_json):
	if hs_json['open']:
		print("OPENENENENEN")
		print("status is : {status}".format(**hs_json))
		print("the changes happens at {lastchange}".format(**hs_json))
		print("The duration is {duration} hours".format(**hs_json))
	else:
		print("The hackerspace is closed")
json = get_json()
try:
        print_info(json)
except:
        pass

Participant