Django Spook
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)
| File | Size | Uploaded | |
|---|---|---|---|
| spook-3.2.8.tar.gz | 7.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|