Skip to main content

pyramid_skue

Project description

pyramid_skue is a library for builidn REST API services on top of Pyramid framework.

Installation

Requires Pyramid >= 1.5a2

Install with pip:

pip install pyramid_skue

or using easy_install:

easy_install pyramid_skue

Usage

Create api python package inside your main project package.

Populate api/resourses.py with the defenition of resource:

from pyramid_skue.rest.api import ResourceDescription
from pyramid_skue.rest.api import HttpMethodDescription
from pyramid_skue.rest.api import HttpParameterDescription
from pyramid_skue.http import CommonResponse
from pyramid_skue.rest.resources import DocumentResource
from .response import MessageResourceJson

class MessageResource(DocumentResource):
    """Represents resource for readin/creating messages."""

    # Resource definition
    def describe_resource(self):
        """Self description.

        """
        description = 'Author of the message'
        author_param = HttpParameterDescription(
            'author', 'string', is_required=True,
            description=description)

        description = 'Title of the message'
        title_param = HttpParameterDescription(
            'title', 'string', is_required=True,
            description=description)

        description = 'Title of the message (optional)'
        title_optional_param = HttpParameterDescription(
            'title', 'string', is_required=False,
            description=description)

        description = 'Message body'
        body_param = HttpParameterDescription(
            'body', 'string', is_required=True,
            description=description)

        description = "Get existing messages"
        get_method = HttpMethodDescription(
            'GET', parameters=[title_optional_param],
            description=description)

        description = "Post message"
        post_method = HttpMethodDescription(
            'POST', parameters=[author_param, title_param, body_param],
            description=description)

        description = "Create/Get messages"
        resource = ResourceDescription(
            'MessageResource', url="/api/message",
            methods=[get_method, post_method],
            description=description)
        return resource

    def read_resource(self):
        """
        Return messages. Can be filtered by title.
        Assuming that ``storage`` is some database you're using.

        """
        title = self.payload.get('title')
        if title:
            messages = storage.filter(title).all()
        else:
            messages = storage.all()

        body = MessageResourceJson(messages)
        return CommonResponse.success(body)

    def create_resource(self):
        """Create message.

        ``storage`` is some hypothetical database.

        """
        author = self.payload.get('author')
        title = self.payload.get('title')
        body = self.payload.get('body')

        message_id = storage.create_message(author=author, title=title, body=body)
        resource_uri = self.get_resoruce_uri(message_id)

        return CommonResponse.resource_created(resource_uri)

Then add api/response.py:

from pyramid_skue.json.utils import ResourceJSONRepresentation

class MessageResourceJson(ResourceJSONRepresentation):
    """Represents a JSON response for MessageResource."""
    def __init__(self, messages):
        ResourceJSONRepresentation.__init__(self, 'MessageResource')

        self.objects = []

        for message in messages:
            self.objects.append({
                'author': message.author,
                'title': message.title,
                'body': message.body})

Now register the views in your __init__.py:

config.add_route('api-message', '/api/message')
config.add_view('your_app.api.resources.MessageResource',
                route_name='api-message',
                renderer='string',
                permission='view',  # whatever permission you like
                check_csrf=True)

It’s better to secure your views agains CSRF attacs, look at the pyramid’s documentation.

Contacts

The project is maintained by Cyril Panshine (@CyrilPanshine). Bug reports and pull requests are very much welcomed!

0.1.0

Initial version

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

pyramid_skue-0.1.0.tar.gz (13.4 kB view details)

Uploaded Source

File details

Details for the file pyramid_skue-0.1.0.tar.gz.

File metadata

File hashes

Hashes for pyramid_skue-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a6e80d05cef2f668e621ffa880b62f7d1aa8d2ac602dc9ce0c6b657ff5320e8a
MD5 27405098f0376f3d19c8cefa36ec6724
BLAKE2b-256 db30056e08c2bf7bf416f959d1468e26db4bf6cc9d95bf94512e8de97ceb3c60

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