Last active
August 29, 2015 14:22
-
-
Save tomprince/e58d041cc81ac004e635 to your computer and use it in GitHub Desktop.
Effect using mockup.
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
class Request(object): | |
"Description of an HTTP request." | |
def engined(f): | |
"Turn an effect using function into one that uses a specific performer." | |
@wraps(f) | |
def wrapper(*args, **kwargs, engine=blocking_engine): | |
effect = f(*args, **kwargs) | |
result = engine(effect) | |
return result | |
wrapper.effectfully = f | |
return wrapper | |
def blocking_engine(effect): | |
"Run an effect synchronously" | |
return perform_effect_synchronously(effect) | |
def get_twisted_engine(reactor): | |
def twisted_engine(effect): | |
"Run an effect using twisted." | |
return perform_effect_with_reactor(reactor, effect) | |
return twisted_engine | |
@engined | |
def request(method, url, **kwargs): | |
return Effect(Request(method, url, kwargs)) | |
@engined | |
def get(url, **args): | |
effect = request.effectfully("get", url, **args) | |
return effect | |
@engined | |
def library_function_calling_get(thing): | |
url = base_url + thing | |
effect = get.effectfully(url) | |
effect.on(success=post_process) | |
return effect |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment