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, []
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, []
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)
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")))
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
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_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, []
def test_child_init_root(self): self.assertEqual( "http://www.foo.com/c", str(url.URL(netloc="www.foo.com").child("c")))
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")))
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))
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