Source code for controllers.rest_services_controller

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from twisted.web import http

from rest import json_response
from rest import CORS_DEFAULT_ALLOW_ORIGIN, RESTControllerSkeleton
from service import ServiceController
from utilities import add_expires_header


[docs]class RESTServicesController(RESTControllerSkeleton): """ RESTful Controller for ``/services/`` endpoint """ def __init__(self, *args, **kwargs): RESTControllerSkeleton.__init__(self, *args, **kwargs) self.sc_instance = ServiceController()
[docs] def render_GET(self, request): """ HTTP GET implementation. Args: request (twisted.web.server.Request): HTTP request object Returns: HTTP response with headers .. http:get:: /services/ :statuscode 200: no error :statuscode 500: error(s) .. http:get:: /services/tv :statuscode 200: no error :statuscode 500: error(s) .. http:get:: /services/radio :statuscode 200: no error :statuscode 500: error(s) .. http:get:: /services/(int:service_type) :statuscode 200: no error :statuscode 500: error(s) """ request.setHeader( 'Access-Control-Allow-Origin', CORS_DEFAULT_ALLOW_ORIGIN) data = { "errors": [], "len": 0, # "postpath": request.postpath } service_types = None if len(request.postpath) == 0 or request.postpath[0] == '': service_types = None elif len(request.postpath) == 1: service_types = request.postpath[0] try: data['items'] = list(self.sc_instance.get_services_set( service_types)) data['result'] = True data['len'] = len(data['items']) except Exception as exc: data['errors'].append(repr(exc)) request.setResponseCode(http.INTERNAL_SERVER_ERROR) add_expires_header(request, expires=14 * 24 * 3600) return json_response(request, data)