Skip to main content

Django Spook

PyPI codecov Code style: black PyPI - Downloads

Library to interconnect multiple external HTTP APIs as Http Resources

Installation

pip install spook

Usage

Declare a serializer class for your input validation

# app/serializers.py
from rest_framework import serializers

class MySerializer(serializers.ModelSerializer):
    name = serializers.CharField()
    age = serializers.IntegerField()
    
    class Meta:
        fields = ('name', 'age', )

Declare an InputValidator

# app/validators.py
from spook.validators import InputValidator
from app.serializers import MySerializer


class MyResourceInputValidator(InputValidator):
    serializer_class = MySerializer

Declare an API Resource class.

# app/resources.py
from spook.resources import APIResource
from app.validators import MyResourceInputValidator


class MyResource(APIResource):
    api_url = 'https://my.external/api'
    validator = MyResourceInputValidator

Now you can instance MyResource class and use the methods

resource = MyResource()

# List resources
resource.list()

# Retrieve a single resource
resource.retrieve(pk=1)

# Create resource
resource.create({'name': 'Pablo', 'age': 28})

# Update resource
resource.update(pk=1, data={'name': 'Pablo Moreno'})

# Delete resource
resource.delete(pk=1)

There are also some views available

# app/views.py
from spook.views import (
    APIResourceRetrieveView, APIResourceListView, APIResourceCreateView, APIResourcePutView,
    APIResourceRetrieveUpdateView, APIResourceRetrieveUpdateDestroyView, APIResourceListCreateView,
)
from app.resources import ProductResource


class ListCreateProductResourceView(APIResourceListCreateView):
    resource = ProductResource

    def get_token(self, request):
        return ''  # We need to override get_token()


class RetrieveUpdateDestroyProductResourceView(APIResourceRetrieveUpdateDestroyView):
    resource = ProductResource

    def get_token(self, request):
        return ''

Development

We recommend to use a virtual environment

Install poetry

pip install poetry

Install dependencies

poetry install

Run tests

poetry run pytest --cov=spook

Metadata

Release files for spook 3.2.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spook 3.2.8
File Size Uploaded
spook-3.2.8.tar.gz 7.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spook 3.2.8
File Interpreter ABI Platform
spook-3.2.8-py3-none-any.whl Python 3 none any Details

Total release size: 16.1 kB

Release files / spook-3.2.8.tar.gz

Download URL spook-3.2.8.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
91327afd7cb19dae3d9b1e307a3fdcda8f710fb0d08b4e5c056b2771f936ee61
BLAKE2b-256 checksum
How to use checksums
499f3c6dd9037ff76baab492d6768481bf552e622be842777f5550601647eac1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.10 CPython/3.7.14 Linux/5.15.0-1020-azure

Release files / spook-3.2.8-py3-none-any.whl

Download URL spook-3.2.8-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a1640aa2445de0616359dd7ff9702f8e32196a487db9677f28ffc684cf68766e
BLAKE2b-256 checksum
How to use checksums
b22c761dd84ca4c1489be352edb73591d88245db17172faeacbf9f93fbfa3d8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.10 CPython/3.7.14 Linux/5.15.0-1020-azure
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page