blob: 5776f369d23a35cf89c5b5b709e8bb3918810aeb [file] [log] [blame]
from twisted.internet import reactor
from twisted.web import static, proxy, server
import os
import json
import sys
import requests
asterix_host = "localhost"
asterix_port = 19002
# First, let's get the path to this script, we'll need it to configure the demo.
base = os.path.dirname(os.path.realpath(__file__))
print "Running Black Cherry from",base
# First, we bootstrap our request query
print "Preparing DDL..\n"
query_statement = open("src/data/query.txt").read().split("load")
query_statement[1] = "load" + query_statement[1].replace("FULL_PATH",base + "/src/data")
ddl = {
'ddl': query_statement[0]
}
load = {
"statements" : "use dataverse twitter; " + query_statement[1]
}
http_header = {
'content-type': 'application/json'
}
print query_statement
# Now we run our query
print "Running query...\n"
ddl_url = "http://" + asterix_host + ":" + str(asterix_port) + "/ddl"
update_url = "http://" + asterix_host + ":" + str(asterix_port) + "/update"
requests.get(ddl_url, params=ddl)
response = requests.get(update_url, params=load, headers=http_header)
if (response.status_code != 200):
print "Oh no, something went wrong! Could not load dataset. Is Asterix running on this host?"
sys.exit()
print "Please open http://localhost:8080/cherry.html"
# Now we obtain the path of this simple python server, and appends src to it (where Black Cherry lives)
path = os.path.dirname(os.path.realpath(__file__)) + "/src"
root = static.File(path) # will be served under '/'
# reverse proxy, served under '/asterix', with same endpoints as Asterix REST API
# http://test.company.com/service1/v1/JsonService -> becomes http://localhost/svc/service1/v1/JsonService
root.putChild('asterix', proxy.ReverseProxyResource(asterix_host, asterix_port, ''))
# magic
site = server.Site(root)
reactor.listenTCP(8080, site)
reactor.run()