uamobile : uamobile/context.py

気になったので、

import re
CARRIER = [
[‘docomo’, re.compile(r’^DoCoMo/\d\.\d[ /]’)  ,None],
[‘softbank’,re.compile(r’^(?:(?:SoftBank|Vodafone|J-PHONE)/\d\.\d|MOT-)’),None],
[‘ezweb’,re.compile(r’^(?:KDDI-[A-Z]+\d+[A-Z]? )?UP\.Browser\/’),None],
[‘willcom’,re.compile(r’^Mozilla/3\.0\((?:DDIPOCKET|WILLCOM);|^Mozilla/4\.0 \(compatible; MSIE (?:6\.0|4\.01); Windows CE; SHARP/WS\d+SH; PPC; \d+x\d+\)’),None],
[‘nonmobile’,re.compile(r’.+’),None],
]

class NonMobileFactory:
    def __init__(self):
        pass
    def create(self,environ,context):
        from uamobile.nonmobile import NonMobileUserAgent as NonMobile
        return NonMobile(environ, context)

class Context(object):
    def __init__(self, proxy_ips=None,
                 extra_docomo_ips=None, extra_ezweb_ips=None, extra_softbank_ips=None, extra_willcom_ips=None,
                 extra_crawler_ips=None,
                 docomo_factory=None, ezweb_factory=None, softbank_factory=None, willcom_factory=None):
        #(省略)
        #
        CARRIER[0][2] = docomo_factory or DoCoMoUserAgentFactory
        CARRIER[1][2] = softbank_factory or SoftBankUserAgentFactory
        CARRIER[2][2] = ezweb_factory or EZwebUserAgentFactory
        CARRIER[3][2] = willcom_factory or WillcomUserAgentFactory
        CARRIER[4][2] = NonMobileFactory
        #(省略)

    def detect(self,environ,useragent):
        for c in CARRIER:
            if c[1].match(useragent):
                return c[2]().create(environ,useragent)

 

とやってみて、uamobile/__init__.py でこうやって見た。

def detect(environ, context=None):
    context = context or Context()
    return context.detect(environ,environ[‘HTTP_USER_AGENT’])

それだけだが気になったのであった。

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中