Last active
August 29, 2015 14:17
-
-
Save chrisguitarguy/0221ebf72b8963b91bdb to your computer and use it in GitHub Desktop.
Example of partial "function" application on python class using lambdas or functools
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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