def _url_to_json(state_url): """Convert urlencoded state serial to JSON state serial.""" state = parse_qs(state_url) for name, value in state.iteritems(): if isinstance(value, (list, tuple)): for item in value: state[name] = xml_unescape(item) else: state[name] = xml_unescape(value) return json.dumps(state, separators=(',', ':'))
def from_string(s): """ Returns a token from something like: oauth_token_secret=xxx&oauth_token=xxx """ params = parse_qs(s, keep_blank_values=False) key = params['oauth_token'][0] secret = params['oauth_token_secret'][0] token = OAuthToken(key, secret) try: token.callback_confirmed = params[b'oauth_callback_confirmed'][0] except KeyError: pass # 1.0, no callback confirmed. return token
def gen_pager(current, count, pagesize, baseurl, seperator="page"): """ current: current page index, shoule always bigger than 0 return { "current": xxx, "previous": xxx, "next": xxx "total_page": xxx } """ if current <= 0: raise Exception("current page should always bigger than 0!") total_page = count // pagesize + 1 if count % pagesize == 0: total_page -= 1 if total_page == 0: total_page = 1 pager = {} pager["current"] = current pager["previous"] = current - 1 if current - 1 > 0 else None pager["next"] = current + 1 if current + 1 <= total_page else None pager["total_page"] = total_page pager["seperator"] = seperator # this is to make sure baseurl + "page=<int: page>" always make a valid url frag = urlparse(baseurl) args = parse_qs(frag.query) # rebuild the query string, but ignore "page" query = "&".join( ["=".join((k, args[k][0])) for k in args if k != seperator]) baseurl = frag.path if query: baseurl += "?" + query + "&" else: baseurl += "?" pager["baseurl"] = baseurl return pager
def gen_pager(current, count, pagesize, baseurl, seperator="page"): """ current: current page index, shoule always bigger than 0 return { "current": xxx, "previous": xxx, "next": xxx "total_page": xxx } """ if current <= 0: raise Exception("current page should always bigger than 0!") total_page = count // pagesize + 1 if count % pagesize == 0: total_page -= 1 if total_page == 0: total_page = 1 pager = {} pager["current"] = current pager["previous"] = current - 1 if current - 1 > 0 else None pager["next"] = current + 1 if current + 1 <= total_page else None pager["total_page"] = total_page pager["seperator"] = seperator # this is to make sure baseurl + "page=<int: page>" always make a valid url frag = urlparse(baseurl) args = parse_qs(frag.query) # rebuild the query string, but ignore "page" query = "&".join(["=".join((k, args[k][0])) for k in args if k != seperator]) baseurl = frag.path if query: baseurl += "?" + query + "&" else: baseurl += "?" pager["baseurl"] = baseurl return pager
def _split_url_string(param_str): """Turn URL string into parameters.""" parameters = parse_qs(param_str, keep_blank_values=False) for k, v in parameters.items(): parameters[k] = unquote(v[0]) return parameters