Skip to main content

DEPRECATED: Framework for tartiflette request/resolver context data assignment - use tartiflette-middleware instead

Project description

Tartiflette Request Context Hooks

DEPRECATED, MOVED TO tartiflette-middleware.

Framework to facilitate the creation of per-request context data for your resolvers using simple python context managers.

Allows for processing of request/response headers, dependent on the http server you're using.

Deprecated only because that name suits better.

Installation

pip install tartiflette-request-context-hooks

Usage

This requires:

  1. Creation of your hooks.
  2. Configuration of your hooks in your application.
  3. Update your resolvers to access your data.

1 - Creation of your hooks

Create a context manager to run on each request.

Example:

from tartiflette_request_contexts_hooks import BaseRequestContextHooks

class MyContextHooks(BaseRequestContextHooks):
    # required short arbitrary unique hook label
    label = 'MyHk'

    def __init__(self, my_hook_params):
        BaseRequestContextHooks.__init__(self)
        # do things necessary for repeated use across all of the requests, e.g.
        # configure factories

    async def __aenter__(self):
        # provide the data or method to be used in all queries for a single
        # request. 
        your_method_or_data = ...
        # store the data/method to be reused for this request
        await self.store_request_data(your_method_or_data)

    async def __aexit__(self, exc_type, exc_val, exc_tb):
        # optional: for if you need to do something when the request is
        # completed
        data = await self.get_request_data()
        data.close_or_whatever()

There are more examples in the examples directory including one with access to AIOHTTP request headers.

2 - Configuration of your hooks in your app

Currently only AIOHTTP is supported but the library is extensible if others would like to submit a pull request to support other servers that Tartiflette supports.

Limited AIOHTTP setup example, imports and configuration kept to hook specific details:

from tartiflette_request_context_hooks.middleware import aiohttp
from tartiflette_request_context_hooks import RequestContextHooks
import MyContextHooks # your hook

my_hook = RequestContextHooks(
     context_manager=MyContextHooks(
          my_hooks_params={},
     ),
     server_middleware=aiohttp    
)

app = web.Application(middlewares=[
    my_hook.middleware
])
ctx = {
    'my_session_service': my_hook.service,
}
web.run_app(
    register_graphql_handlers(
        # your configuration
        executor_context=ctx,
    )
)

3 - Access data in your resolvers' context

Works in queries, mutations, and subscriptions.

@Resolver('Query.whatever')
async def resolve_query_user_login(parent, args, ctx, info):
    my_data = await ctx['my_session_service']()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

File details

Details for the file tartiflette-request-context-hooks-2.0.0.tar.gz.

File metadata

  • Download URL: tartiflette-request-context-hooks-2.0.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.2

File hashes

Hashes for tartiflette-request-context-hooks-2.0.0.tar.gz
Algorithm Hash digest
SHA256 ee41a6bfda75c2d8eb913e6480511c34e70466569649ea79da9e8e974fcef6c2
MD5 0ff5a721578a6f072c377e8fc7f6f734
BLAKE2b-256 950ee8187b8562c089faee7588cc7db110416399837408a4db709b055f167bfe

See more details on using hashes here.

File details

Details for the file tartiflette_request_context_hooks-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: tartiflette_request_context_hooks-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.2

File hashes

Hashes for tartiflette_request_context_hooks-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 115cab5890af83db16aad429313c91d7ad89ebc234dde67df5851b34b2390b20
MD5 8abb95486c7287858cc23c0783e3e966
BLAKE2b-256 a694a60bf018b92a14fff0de258fbfe381a4f4808c0bab0f88f70c24bc822a02

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page