コード例 #1
0
ファイル: test_public.py プロジェクト: saskeroms/badgr-server
    def test_get_versioned_baked_images(self):
        test_user = self.setup_user(authenticate=False)
        test_issuer = self.setup_issuer(owner=test_user)
        test_badgeclass = self.setup_badgeclass(issuer=test_issuer)
        assertion = test_badgeclass.issue(recipient_id='*****@*****.**')

        response = self.client.get('/public/assertions/{}/image'.format(assertion.entity_id), follow=True)
        self.verify_baked_image_response(assertion, response, obi_version=UNVERSIONED_BAKED_VERSION)

        for obi_version in list(OBI_VERSION_CONTEXT_IRIS.keys()):
            response = self.client.get('/public/assertions/{assertion}/baked?v={version}'.format(
                assertion=assertion.entity_id,
                version=obi_version
            ), follow=True)

            if obi_version == UNVERSIONED_BAKED_VERSION:
                # current_obi_versions aren't re-baked expanded
                self.verify_baked_image_response(assertion, response, obi_version=obi_version)
            else:
                self.verify_baked_image_response(
                    assertion,
                    response,
                    obi_version=obi_version,
                    expand_badgeclass=True,
                    expand_issuer=True,
                    include_extra=True
                )
コード例 #2
0
ファイル: helpers.py プロジェクト: tissx/badgr-server
class OpenBadgesContextCache(BaseCache):
    OPEN_BADGES_CONTEXT_V2_URI = OBI_VERSION_CONTEXT_IRIS.get('2_0')
    OPEN_BADGE_CONTEXT_CACHE_KEY = 'OPEN_BADGE_CONTEXT_CACHE_KEY'
    FORTY_EIGHT_HOURS_IN_SECONDS = 60 * 60 * 24 * 2

    def __init__(self, *args, **kwargs):
        super(OpenBadgesContextCache, self).__init__(*args, **kwargs)

        cached_context = self._get_cached_content()

        if cached_context:
            self._intialize_instance_attributes(cached_context)
        else:
            self._set_cached_content()
            self._intialize_instance_attributes(self._get_cached_content())

    def _get_cached_content(self):
        return cache.get(self.OPEN_BADGE_CONTEXT_CACHE_KEY, None)

    def _set_cached_content(self):
        self.session = requests_cache.CachedSession(backend='memory',
                                                    expire_after=300)
        response = self.session.get(
            self.OPEN_BADGES_CONTEXT_V2_URI,
            headers={'Accept': 'application/ld+json, application/json'})
        if response.status_code == 200:
            cache.set(self.OPEN_BADGE_CONTEXT_CACHE_KEY, {
                'keys_map': self.session.cache.keys_map.copy(),
                'response': self.session.cache.responses.copy()
            },
                      timeout=self.FORTY_EIGHT_HOURS_IN_SECONDS)

    def _intialize_instance_attributes(self, cached):
        self.keys_map = cached.get('keys_map', None)
        self.responses = cached.get('response', None)