On 2023/02/24 02:14, Daniel Dickman wrote:
> py-httpbin hasn't had an update since 2018 and appears abandoned upstream.
> 
> However it is still widely used in the ports tree.

Not all that widely really (fortunately :) just a few ports which use
it for doing tests locally rather than interbet-based httpbin.org. (If
someone wants a similar thing for non-Python-related purposes go-httpbin
seems the best option).

> In order to update werkzeug, something like the below is needed in 
> py-httpbin.
> 
> We don't need to add support for werkzeug older than 2.0 since we're 
> already at 2.0.3 in the ports tree, just need to stop using BaseResponse 
> and switch to using Response.
> 
> ok?

ok. I did look at updating werkzeug before but got scared by odoo and
tryton :)

> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/www/py-httpbin/Makefile,v
> retrieving revision 1.14
> diff -u -p -u -r1.14 Makefile
> --- Makefile  1 Dec 2022 16:53:19 -0000       1.14
> +++ Makefile  24 Feb 2023 07:10:22 -0000
> @@ -3,6 +3,7 @@ COMMENT =             HTTP request and response ser
>  MODPY_EGG_VERSION =  0.7.0
>  DISTNAME =           httpbin-${MODPY_EGG_VERSION}
>  PKGNAME =            py-${DISTNAME}
> +REVISION =           0
>  
>  CATEGORIES =         www
>  
> Index: patches/patch-httpbin_core_py
> ===================================================================
> RCS file: /cvs/ports/www/py-httpbin/patches/patch-httpbin_core_py,v
> retrieving revision 1.1
> diff -u -p -u -r1.1 patch-httpbin_core_py
> --- patches/patch-httpbin_core_py     1 Dec 2022 16:53:19 -0000       1.1
> +++ patches/patch-httpbin_core_py     24 Feb 2023 07:10:22 -0000
> @@ -1,15 +1,30 @@
> +BaseResponse -> Response as of werkzeug 2.0
> +
> +see: https://github.com/postmanlabs/httpbin/pull/674
> +
>  Index: httpbin/core.py
>  --- httpbin/core.py.orig
>  +++ httpbin/core.py
> -@@ -21,7 +21,6 @@ from werkzeug.datastructures import WWWAuthenticate, M
> +@@ -19,9 +19,8 @@ from flask import Flask, Response, request, render_tem
> + from six.moves import range as xrange
> + from werkzeug.datastructures import WWWAuthenticate, MultiDict
>   from werkzeug.http import http_date
> - from werkzeug.wrappers import BaseResponse
> +-from werkzeug.wrappers import BaseResponse
> ++from werkzeug.wrappers import Response as WzResponse
>   from werkzeug.http import parse_authorization_header
>  -from raven.contrib.flask import Sentry
>   
>   from . import filters
>   from .helpers import get_headers, status_code, get_dict, get_request_range, 
> check_basic_auth, check_digest_auth, \
> -@@ -55,10 +54,6 @@ tmpl_dir = os.path.join(os.path.dirname(os.path.abspat
> +@@ -48,17 +47,13 @@ def jsonify(*args, **kwargs):
> +     return response
> + 
> + # Prevent WSGI from correcting the casing of the Location header
> +-BaseResponse.autocorrect_location_header = False
> ++WzResponse.autocorrect_location_header = False
> + 
> + # Find the correct template folder when running from a different location
> + tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 
> 'templates')
>   
>   app = Flask(__name__, template_folder=tmpl_dir)
>   app.debug = bool(os.environ.get('DEBUG'))
> 

Reply via email to