python에서 user agent로 앱 버전 비교

x·2023년 12월 19일
0

python

목록 보기
2/4

request를 데코레이터에 인수로 넘기고 데코레이터는 유저 에이전트 값에서 '(', ')', '/', ' ' 제거하고 필요한 것들만 구함

parse메서드로 버전 비교함

특정 버전 미만이면 업데이트 응답, 이상이면 fn(*args, **kwargs)로 post메서드 호출

from packaging import version


def app_version_checker(request):
    def _app_version_checker(fn):
        @wraps(fn)
        def __app_version_checker(*args, **kwargs):
            user_agent = str(request.user_agent)
            pattern = re.compile(r"\(|\)|/| ")
            result = re.split(pattern, user_agent)

            app_version = result[1]
            _os = result[3]

            if (
                _os == "ios" and version.parse(app_version) < version.parse("2.2.2")
            ) or (
                _os == "android"
                and version.parse(app_version) < version.parse("1.1.1")
            ):
                return ApiData(426, "앱 업데이트 필요")

            return fn(*args, **kwargs)

        return __app_version_checker

    return _app_version_checker

class API
    @app_version_checker(request)
    def post(self):
    	pass

0개의 댓글