import os
import cherrypy
#from cherrypy.lib.cptools import serveFile 

class MyServer(object):

	def __init__(self, param):
		settings = { 
			'global': {
				'server.socket_port' : param,
				'server.socket_host': '0.0.0.0', #"",
				'server.socket_file': "",
				'server.socket_queue_size': 5,
				'server.protocol_version': "HTTP/1.0",
				'server.log_to_screen': True,
				'server.log_file': "",
				'server.reverse_dns': False,
				'server.thread_pool': 10,
				'server.environment': "development"
			},
				'/service/xmlrpc' : {
				'xmlrpc_filter.on': True
			},
			'/admin': {
				'session_authenticate_filter.on' :True
			},
			'/css/default.css': {
				'static_filter.on': True,
				'static_filter.file': "data/css/default.css"
			}
		}
		cherrypy.config.update(settings)

	def start(self):
		cherrypy.server.start()
	
	def publish(self, path, proc):
		class Proc(object):
			def index(self, **params):
				proc(cherrypy.request, cherrypy.response)
				return cherrypy.response.body
			index.exposed = True
		
		cherrypy.tree.mount(Proc(), path)

	def publish_file(self, path, file):
		class Proc(object):
			def index(self, **params):
				return cherrypy.lib.static.serve_file(os.path.abspath(file)) #cherrypy.lib.cptools.serveFile(os.path.abspath(file))
			index.exposed = True
		cherrypy.tree.mount(Proc(), path)

