Logic Machine Forum
Geofence service - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Geofence service (/showthread.php?tid=464)



Geofence service - Domoticatorino - 15.11.2016

Hi,
surfing on web I found this opportunity (https://openpaths.cc/api/1).

Here below is the script in Python. How can we traduce in lua? Thanks. 

#!/usr/bin/env python        

import oauth2, time, urllib, urllib2, json

ACCESS = "YOURACCESSKEY"
SECRET = "YOURSECRETKEY"
URL = "https://openpaths.cc/api/1"

def build_auth_header(url, method):
   params = {                                            
       'oauth_version': "1.0",
       'oauth_nonce': oauth2.generate_nonce(),
       'oauth_timestamp': int(time.time()),
   }
   consumer = oauth2.Consumer(key=ACCESS, secret=SECRET)
   params['oauth_consumer_key'] = consumer.key
   request = oauth2.Request(method=method, url=url, parameters=params)    
   signature_method = oauth2.SignatureMethod_HMAC_SHA1()
   request.sign_request(signature_method, consumer, None)
   return request.to_header()

# GET data (last 24 hours)
now = time.time()
params = {'start_time': now - 24*60*60, 'end_time': now}    # get the last 24 hours
query = "%s?%s" % (URL, urllib.urlencode(params))
print(query)
try:
   request = urllib2.Request(query)
   request.headers = build_auth_header(URL, 'GET')
   connection = urllib2.urlopen(request)
   data = json.loads(''.join(connection.readlines()))
   print(json.dumps(data, indent=4))
except urllib2.HTTPError as e:
   print(e.read())    
   
   

5. Use your data
The API returns JSON. You will get an array of objects — each one comprises a location object with lat, lon, and alt data and a timestamp. You will also see metadata on how the record was generated (if applicable), including the device model, its operating system version, and the version of the OpenPaths mobile app. Requests for project data will also include a participant identifier for each entry.
   
[
   {
       "lon": -73.99093,
       "lat": 40.751453,
       "alt": 0.0,
       "t": 1308274880,
       "device": "iPhone3,1",
       "os": "4.3.2",
       "version": "1.0"
   }
]