Example #1
0
 def __call__(self, *args, **kwargs):
     if 'handler' in kwargs: handler = kwargs['handler']; del kwargs['handler']
     else: handler = None
     if 'binding' in kwargs: binding = kwargs['binding']; del kwargs['binding']
     else: binding = None
     if REF in self.schema and self.schema[REF] == "#":
         self.schema = binding._schema
     if REF in self.target_schema and self.target_schema[REF] == "#":
         self.target_schema = binding._schema
     url = self.generate_url(binding, self.route)
     params = utils.dictionary_to_params(kwargs)
     args = self._process_args(args)
     data = loads(dumps(args, cls=utils.JSONEncoder))
     res = requests.request(self.method, url=url, json=data, params=params, **self.request_kwargs)
     utils.validate_response_status(res)
     return handler(res)
Example #2
0
    def __init__(self, base_url="http://localhost", schema_path="/schema", **requests_kwargs):
        self._resources = {}
        self.base_url = base_url
        self._schema_cache = {}

        response = requests.get(base_url+schema_path, **requests_kwargs)
        utils.validate_response_status(response)
        self._schema = response.json()
        self._schema_cache[schema_path+"#"] = self._schema

        for name, desc in self._schema[PROPERTIES].items():
            response = requests.get(self.base_url + desc[REF], **requests_kwargs)
            utils.validate_response_status(response)
            class_schema = response.json()
            resource = Resource.factory(desc.get(DOC, ""), name, class_schema, requests_kwargs, self)
            setattr(self, resource.__name__, resource)
            self._resources[name] = resource
            self._schema_cache[desc[REF]] = class_schema
            self._schema[PROPERTIES][name] = class_schema