Skip to content

Instantly share code, notes, and snippets.

@chrisguitarguy
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisguitarguy/0221ebf72b8963b91bdb to your computer and use it in GitHub Desktop.
Save chrisguitarguy/0221ebf72b8963b91bdb to your computer and use it in GitHub Desktop.
Example of partial "function" application on python class using lambdas or functools
import http.server as httpserver
import functools
class Handler(httpserver.BaseHTTPRequestHandler):
_id = 'default'
_secret = 'default'
def __init__(self, request, client_addy, server, app_id, app_secret):
# super().__init__(...) kicks of request handler so set up
# before calling it
self._id = app_id
self._secret = app_secret
super().__init__(request, client_addy, server)
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type', 'text/plain')
self.end_headers()
self.wfile.write((self._id+' '+self._secret).encode('utf-8'))
if __name__ == '__main__':
id = 'whatever'
secret = 'shhhh'
server = httpserver.HTTPServer(
('localhost', 9090),
functools.partial(Handler, app_id=id, app_secret=secret)
)
server.serve_forever()
import http.server as httpserver
class Handler(httpserver.BaseHTTPRequestHandler):
_id = 'default'
_secret = 'default'
def __init__(self, request, client_addy, server, app_id, app_secret):
# super().__init__(...) kicks of request handler so set up
# before calling it
self._id = app_id
self._secret = app_secret
super().__init__(request, client_addy, server)
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type', 'text/plain')
self.end_headers()
self.wfile.write((self._id+' '+self._secret).encode('utf-8'))
if __name__ == '__main__':
id = 'whatever'
secret = 'shhhh'
server = httpserver.HTTPServer(
('localhost', 9090),
lambda request, client_addy, server: Handler(request, client_addy, server, id, secret)
)
server.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment