Skip to content

Instantly share code, notes, and snippets.

@luckyruby
Created April 13, 2012 17:13
Show Gist options
  • Save luckyruby/2378432 to your computer and use it in GitHub Desktop.
Save luckyruby/2378432 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'eventmachine'
require 'nokogiri'
require 'net/http'
require 'uri'
require 'yajl'
require 'active_support/core_ext'
require 'yaml'
require 'logger'
require 'securerandom'
require 'net/http/persistent'
$config = YAML::load(File.open(File.expand_path('../../config/config.yml', __FILE__)))
module XMLtoWeb
def post_init
end
def receive_data(data)
begin
xml_request = ''
@query ||= BufferedTokenizer.new("</xml_request>")
@query.extract(data).each do |msg|
xml_request << msg
xml_request << "</xml_request>"
end
if xml_request.present?
request = parse_xml(xml_request)
json_parser = Yajl::Parser.new
response = json_parser.parse(send_GET(request))
xml_response = XML_response(request, response)
send_data xml_response
close_connection_after_writing
end
rescue => ex
send_data "#{$!}"
close_connection_after_writing
end
end
def parse_xml(xml)
#parse some xml
end
def send_GET(request)
#call web service and get back JSON
end
def XML_response(request, response)
#build XML response from parsed JSON response
end
end
EM.run{
EM.start_server($config["listen_on_ip"], $config["listen_on_port"].to_i, XMLtoWeb)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment