From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- addons/hw_drivers/http.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 addons/hw_drivers/http.py (limited to 'addons/hw_drivers/http.py') diff --git a/addons/hw_drivers/http.py b/addons/hw_drivers/http.py new file mode 100644 index 00000000..b0ea9bee --- /dev/null +++ b/addons/hw_drivers/http.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import http + + +class IoTBoxHttpRequest(http.HttpRequest): + def dispatch(self): + if self._is_cors_preflight(http.request.endpoint): + # Using the PoS in debug mode in v12, the call to '/hw_proxy/handshake' contains the + # 'X-Debug-Mode' header, which was removed from 'Access-Control-Allow-Headers' in v13. + # When the code of http.py is not checked out to v12 (i.e. in Community), the connection + # fails as the header is rejected and none of the devices can be used. + headers = { + 'Access-Control-Max-Age': 60 * 60 * 24, + 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Debug-Mode' + } + return http.Response(status=200, headers=headers) + return super(IoTBoxHttpRequest, self).dispatch() + + +class IoTBoxRoot(http.Root): + def setup_db(self, httprequest): + # No database on the IoT Box + pass + + def get_request(self, httprequest): + # Override HttpRequestwith IoTBoxHttpRequest + if httprequest.mimetype not in ("application/json", "application/json-rpc"): + return IoTBoxHttpRequest(httprequest) + return super(IoTBoxRoot, self).get_request(httprequest) + +http.Root = IoTBoxRoot +http.root = IoTBoxRoot() -- cgit v1.2.3