Esempio n. 1
0
    def locateChild(self, ctx, segments):
        def check_album(result):
            if result[0] != 0:
                request = inevow.IRequest(ctx)
                self.log.warning("got non-success from albums call: %s" %
                                 result[1])
                return redirectTo("/%s/albums/" % self.username, request), []
            self.log.debug("Got gallery ID [%s] back from aztk call" %
                           result[1])

            album_url = url.URL(netloc="www.%s" %
                                self.app.servers.httpserver._cfg_site_domain,
                                pathsegs=[self.username, "albums", result[1]])
            return album_url, []

        def handle_fail(fail):
            self.log.warning("Failed to check gallery name: %s" %
                             fail.getErrorMessage())
            return rend.NotFound

        if len(segments) and segments[0]:
            gallery_name = segments[0]
            self.log.debug("checking gallery name: %s" % gallery_name)
            d = self.app.api.albums.get_album_from_gallery_name(
                self.username, gallery_name)
            d.addCallback(check_album)
            d.addErrback(handle_fail)
            return d
        else:
            self.log.debug("not enough segments")
            album_url = url.URL(netloc="www.%s" %
                                self.app.servers.httpserver._cfg_site_domain,
                                pathsegs=[self.username, "albums"])
            return album_url, []
Esempio n. 2
0
 def locateChild(self, ctx, segments):
     if len(segments) > 0 and segments[0]:
         if segments[0] == "auth":
             ## Step1.  Authenticate with Flickr.
             request = inevow.IRequest(ctx)
             sig = md5.md5("%sapi_key%spermswrite" %
                           (SECRET, API_KEY)).hexdigest()
             api_url = url.URL(scheme="http",
                               netloc="www.flickr.com",
                               pathsegs=["services", "auth"],
                               querysegs=[["api_key", API_KEY],
                                          ["perms", "write"],
                                          ["api_sig", sig]])
             return api_url, []
         elif segments[0] == "auth-response":
             request = inevow.IRequest(ctx)
             if request.args.has_key("frob"):
                 frob = request.args['frob'][0]
                 token_getter = flickr_token_getter(frob, self.log)
                 d = token_getter.get_token()
                 d.addCallback(self.handle_perm_token)
                 d.addErrback(self.handle_failure)
                 return d
             else:
                 self.frob = None
             return self, []
Esempio n. 3
0
    def testQuoting(self):
        context = None
        scheme = 'http'
        loc = 'localhost'
        path = ('baz', 'buz', '/fuzz/')
        query = [("foo", "bar"), ("baz", "=quux"), ("foobar", "?")]
        fragment = 'futz'
        u = url.URL(scheme, loc, path, query, fragment)
        s = flatten(url.URL(scheme, loc, path, query, fragment))

        parsedScheme, parsedLoc, parsedPath, parsedQuery, parsedFragment = urlsplit(s)

        self.assertEqual(scheme, parsedScheme)
        self.assertEqual(loc, parsedLoc)
        self.assertEqual('/' + '/'.join([quote(p,safe='') for p in path]), parsedPath)
        self.assertEqual(query, url.unquerify(parsedQuery))
        self.assertEqual(fragment, parsedFragment)
Esempio n. 4
0
 def test_add_noquery(self):
     # fromString is a different code path, test them both
     self.assertEqual(
         "http://www.foo.com:80/a/nice/path/?foo=bar",
         str(url.URL.fromString("http://www.foo.com:80/a/nice/path/")
             .add("foo", "bar")))
     self.assertEqual(
         "http://www.foo.com/?foo=bar",
         str(url.URL(netloc="www.foo.com").add("foo", "bar")))
Esempio n. 5
0
    def __init__(self, graph, user, uriOrQuery):
        """
        uriOrQuery is like /set?tag=foo&star=only
        """
        self.graph = graph
        
        if '?' not in uriOrQuery:
            # sometimes a single image uri comes in, and it wasn't getting handled right
            uriOrQuery = str(url.URL().add('current', uriOrQuery))
            
        # shouldn't these removes be handled by paramsAffectingSet or something?
        self.parsedUrl = url.URL.fromString(uriOrQuery).remove('jsonUpdate').remove('setList')
        params = dict(self.parsedUrl.queryList())
        self._isVideo = {}

        topicDict = self.determineTopic(graph, params)
        
        if topicDict['topic'] == PHO.randomSet:
            self._photos = [r['pic'] for r in
                            randomSet(graph, int(params.get('random', '10')),
                                      user,
                                      year=params.get('year', None),
                                      tags=params.get('tags', 'without'),
                                      seed=int(params['seed'])
                                        if 'seed' in params else None)]
            self.setLabel = 'random choices'
            if params.get('year'):
                self.setLabel += " from the year %s" % params['year']
        elif topicDict.get('alternates', False):
            self._photos = findCompleteAltTree(graph, topicDict['topic'])
        else:
            self._photos = photosWithTopic(graph, topicDict, self._isVideo)
        self._currentPhoto = None
        if params.get('current') is not None:
            self._currentPhoto = URIRef(params['current'])          

        if not self._photos and self._currentPhoto:
            log.info("featuring one pic")
            self._photos = [self._currentPhoto]

        self._photos = starFilter(graph, params.get('star'), user, self._photos)
        if params.get('recent', '').strip():
            # recent=10 shows the last 10
            self._photos = self._photos[-int(params['recent'].strip()):]

        if self._currentPhoto not in self._photos:
            if len(self._photos) == 0:
                self._currentPhoto = None
            else:
                self._currentPhoto = self._photos[0]

        self.topicDict = topicDict
Esempio n. 6
0
        def check_album(result):
            if result[0] != 0:
                request = inevow.IRequest(ctx)
                self.log.warning("got non-success from albums call: %s" %
                                 result[1])
                return redirectTo("/%s/albums/" % self.username, request), []
            self.log.debug("Got gallery ID [%s] back from aztk call" %
                           result[1])

            album_url = url.URL(netloc="www.%s" %
                                self.app.servers.httpserver._cfg_site_domain,
                                pathsegs=[self.username, "albums", result[1]])
            return album_url, []
Esempio n. 7
0
    def handle_export_list(self, result, ctx):
        if result[0] == 0:
            for export in result[1]:
                if export['service_id'] == 2:
                    ##
                    ## They already have a google/blogger token
                    ##
                    self.perm_token = export['password']
                    return self, []

        ##
        ## If we're here, they didn't have a token, or something went wrong.  Just get one.
        ##
        request = inevow.IRequest(ctx)
        next = "http://www.%s/publish/beta-blogger/auth-response/?user=%s" % (
            aztk_config.setup.get('site', "domain"), self.username)
        scope = "http://www.blogger.com/feeds"
        api_url = url.URL(scheme="https",
                          netloc="www.google.com",
                          pathsegs=["accounts", "AuthSubRequest"],
                          querysegs=[("next", next), ("scope", scope),
                                     ('secure', "0"), ('session', "1")])
        return api_url, []
Esempio n. 8
0
 def test_child_init_root(self):
     self.assertEqual(
         "http://www.foo.com/c",
         str(url.URL(netloc="www.foo.com").child("c")))
Esempio n. 9
0
 def test_child_init_tuple(self):
     self.assertEqual(
         "http://www.foo.com/a/b/c",
         str(url.URL(netloc="www.foo.com",
                     pathsegs=['a', 'b']).child("c")))
Esempio n. 10
0
 def test_fragmentEquality(self):
     """
     An URL created with the empty string for a fragment compares equal
     to an URL created with C{None} for a fragment.
     """
     self.assertEqual(url.URL(fragment=''), url.URL(fragment=None))
Esempio n. 11
0
 def renderHTTP(self, ctx):
     album_url = url.URL(netloc="www.%s" %
                         self.app.servers.httpserver._cfg_site_domain,
                         pathsegs=[self.username, "albums"])
     return album_url