(
self, method, url, url_params=empty.dict, headers=empty.dict, timeout=None, **params
)
| 148 | self.headers = headers |
| 149 | |
| 150 | def request( |
| 151 | self, method, url, url_params=empty.dict, headers=empty.dict, timeout=None, **params |
| 152 | ): |
| 153 | function = self.api.http.versioned.get(self.version, {}).get(url, None) |
| 154 | if not function: |
| 155 | function = self.api.http.versioned.get(None, {}).get(url, None) |
| 156 | |
| 157 | if not function: |
| 158 | if 404 in self.raise_on: |
| 159 | raise requests.HTTPError("404 Not Found occured for url: {0}".format(url)) |
| 160 | return Response("Not Found", 404, {"content-type", "application/json"}) |
| 161 | |
| 162 | interface = function.interface.http |
| 163 | response = falcon.Response() |
| 164 | request = Request(None, None, empty.dict) |
| 165 | context = self.api.context_factory( |
| 166 | api=self.api, api_version=self.version, interface=interface |
| 167 | ) |
| 168 | interface.set_response_defaults(response) |
| 169 | |
| 170 | params.update(url_params) |
| 171 | params = interface.gather_parameters( |
| 172 | request, response, context, api_version=self.version, **params |
| 173 | ) |
| 174 | errors = interface.validate(params, context) |
| 175 | if errors: |
| 176 | interface.render_errors(errors, request, response) |
| 177 | else: |
| 178 | interface.render_content(interface.call_function(params), context, request, response) |
| 179 | |
| 180 | data = BytesIO(response.data) |
| 181 | content_type, content_params = parse_content_type(response._headers.get("content-type", "")) |
| 182 | if content_type in input_format: |
| 183 | data = input_format[content_type](data, **content_params) |
| 184 | |
| 185 | status_code = int("".join(re.findall("\d+", response.status))) |
| 186 | if status_code in self.raise_on: |
| 187 | raise requests.HTTPError("{0} occured for url: {1}".format(response.status, url)) |
| 188 | |
| 189 | return Response(data, status_code, response._headers) |
| 190 | |
| 191 | |
| 192 | class Socket(Service): |
nothing calls this directly
no test coverage detected