plugins/oceanxtremes/post/Writer.py (37 lines of code) (raw):

import logging import urllib.request, urllib.error, urllib.parse import urllib.parse import uuid import json from datetime import datetime import requestresponder from edge.httputility import HttpUtility class Writer(requestresponder.RequestResponder): def __init__(self, configFilePath): super(Writer, self).__init__(configFilePath) def options(self, requestHandler): super(Writer, self).options(requestHandler) self.requestHandler.set_header('Access-Control-Allow-Origin', '*') self.requestHandler.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') self.requestHandler.set_header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With') self.requestHandler.set_header('Allow', 'OPTIONS, GET, HEAD, POST') self.requestHandler.set_header('Accept', 'application/json') self.requestHandler.set_status(200) self.requestHandler.finish() def post(self, requestHandler): super(Writer, self).post(requestHandler) data = json.loads(requestHandler.request.body) data["id"] = str(uuid.uuid4()) data["submit_date"] = datetime.utcnow().isoformat() + "Z" httpUtility = HttpUtility() solrUrl = self._configuration.get('solr', 'url') + "/update/json/docs?commit=true" result = httpUtility.getResponse(solrUrl, self.onResponse, body=json.dumps(data), headers={'Content-Type': 'application/json'}) def onResponse(self, response): self.requestHandler.set_header('Access-Control-Allow-Origin', '*') if response.error: self.requestHandler.set_status(404) self.requestHandler.write(str(response.error)) self.requestHandler.finish() else: self.requestHandler.write(response.body) self.requestHandler.finish()