예제 #1
0
파일: flickr.py 프로젝트: SMIDEC/gwibber-lc
 def _get(self, method, parse="message", post=False, **args):
     args.update({"api_key": API_KEY, "method": method})
     data = network.Download(REST_SERVER, args, post).get_json()
     if parse == "message":
         return [self._message(m) for m in data["photos"]["photo"]]
     else:
         return data
예제 #2
0
파일: qaiku.py 프로젝트: SMIDEC/gwibber-lc
    def _get(self, path, parse="message", post=False, single=False, **args):
        url = "/".join((URL_PREFIX, "api", path))
        url += ("&" if "?" in url else
                "?") + "apikey=%s" % self.account["password"]
        data = network.Download(url,
                                util.compact(args) or None, post).get_json()

        if single: return [getattr(self, "_%s" % parse)(data)]
        if parse: return [getattr(self, "_%s" % parse)(m) for m in data]
        else: return []
예제 #3
0
    def _get(self, path, parse="message", post=False, single=False, **args):
        url = "/".join((API_PREFIX, path))

        request = oauth.OAuthRequest.from_consumer_and_token(
            self.consumer,
            self.token,
            http_method=post and "POST" or "GET",
            http_url=url,
            parameters=util.compact(args))
        request.sign_request(self.sigmethod, self.consumer, self.token)

        if post:
            data = network.Download(request.to_url(), util.compact(args),
                                    post).get_json()
        else:
            data = network.Download(request.to_url(), None, post).get_json()

        if isinstance(data, dict) and data.get("errors", 0):
            if "authenticate" in data["errors"][0]["message"]:
                raise exceptions.GwibberServiceError(
                    "auth", self.account["service"], self.account["username"],
                    data["errors"][0]["message"])
            else:
                for error in data["errors"]:
                    log.logger.info("Twitter failure - %s", error["message"])
                return []
        elif isinstance(data, dict) and data.get("error", 0):
            log.logger.error("%s failure - %s", PROTOCOL_INFO["name"],
                             data["error"])
            if "Incorrect signature" in data["error"]:
                print data
                raise exceptions.GwibberServiceError("keyring")
            return []
        elif isinstance(data, str):
            log.logger.error("%s unexpected result - %s",
                             PROTOCOL_INFO["name"], data)
            return []

        if parse == "list":
            return [self._list(l) for l in data["lists"]]
        if single: return [getattr(self, "_%s" % parse)(data)]
        if parse: return [getattr(self, "_%s" % parse)(m) for m in data]
        else: return []
예제 #4
0
파일: pingfm.py 프로젝트: SMIDEC/gwibber-lc
    def send(self, message):
        args = {
            "post_method": "microblog",
            "user_app_key": self.account["secret_key"],
            "api_key": API_KEY,
            "body": message
        }

        data = network.Download("http://api.ping.fm/v1/user.post",
                                util.compact(args),
                                post=True)
        return []
예제 #5
0
    def Translate(self, text, srclang, dstlang):
        url = "http://ajax.googleapis.com/ajax/services/language/translate"
        params = {
            "v": "1.0",
            "q": text,
            "langpair": "|".join((srclang, dstlang))
        }
        data = network.Download(url, params).get_json()

        if data["responseStatus"] == 200:
            return data.get("responseData", {}).get("translatedText", "")
        else:
            return ""
예제 #6
0
파일: digg.py 프로젝트: SMIDEC/gwibber-lc
  def _get(self, path, parse="story", post=False, single=False, **args):
    url = "/".join((URL_PREFIX, path)) + "?appkey=http://gwibber.com&type=json"
    
    data = network.Download(url, util.compact(args) or None, post).get_json()

    if not data: return []

    if "stories" in data:
        if single: return [getattr(self, "_%s" % parse)(data["stories"])]
        if parse: return [getattr(self, "_%s" % parse)(m) for m in data["stories"]]
        else: return []
    else:
        if ("status" in data) and ("message" in data):
            print "Digg: got message with status %s and message %s" % (data["status"], data["message"])
        return []
예제 #7
0
  def _get(self, path, post=False, parse="message", kind="entries", single=False, **args):
    url = "/".join((URL_PREFIX, path))
    data = network.Download(url, util.compact(args), post,
        self.account["username"], self.account["secret_key"]).get_json()

    if isinstance(data, dict) and data.get("errorCode", 0):
      if "unauthorized" in data["errorCode"]:
        raise exceptions.GwibberServiceError("auth", self.account["service"], self.account["username"], data["errorCode"])
   
    if single: return [getattr(self, "_%s" % parse)(data)]
    if parse: return [getattr(self, "_%s" % parse)(m) for m in data["entries"]]
    else: return []

    if parse:
      data = data[kind][0] if single else data[kind]
      return [getattr(self, "_%s" % parse)(m) for m in data]
예제 #8
0
파일: buzz.py 프로젝트: SMIDEC/gwibber-lc
  def _get(self, path, collection="items", parse="message", post=False, single=False, body=None, **args):
    url = "/".join((URL_PREFIX, path))
    args.update({"alt": "json"})
    
    request = oauth.OAuthRequest.from_consumer_and_token(self.consumer, self.token,
        http_method=post and "POST" or "GET", http_url=url, parameters=util.compact(args))
    request.sign_request(self.sigmethod, self.consumer, self.token)

    data = network.Download(request.to_url(), None, post,
        header=["Content-Type: application/json"] if body else None, body=body)
    
    data = data.get_json()

    if single: return [getattr(self, "_%s" % parse)(data["data"])]
    if parse: return [getattr(self, "_%s" % parse)(m) for m in data["data"][collection]]
    else: return []
예제 #9
0
  def _get(self, operation, post=False, single=False, **args):
    args.update({
      "v": "1.0",
      "format": "json",
      "method": "facebook." + operation,
      "api_key": FB_APP_KEY,
      "session_key": self.account["session_key"],
      "call_id": str(int(time.time()) * 1000),
    })

    sig = "".join("%s=%s" % (k, v) for k, v in sorted(args.items()))
    args["sig"] = hashlib.md5(sig + self.account["secret_key"]).hexdigest()
    data = network.Download(URL_PREFIX, args, post).get_json()

    if isinstance(data, dict) and data.get("error_msg", 0):
      if "permission" in data["error_msg"]:
        raise exceptions.GwibberServiceError("auth", self.account["service"], self.account["username"], data["error_msg"])

    return data
예제 #10
0
    def _get(self, path, parse="message", post=False, single=False, **args):
        url = "/".join((URL_PREFIX, "api", path))
        data = network.Download(url, util.compact(args), post,
                                self.account["username"],
                                self.account["password"]).get_json()

        if isinstance(data, dict) and data.get("error", 0):
            if "authenticate" in data["error"]:
                raise exceptions.GwibberServiceError("auth",
                                                     self.account["service"],
                                                     self.account["username"],
                                                     data["error"])
        elif isinstance(data, dict) and data.get("error", 0):
            log.logger.error("%s failure - %s", PROTOCOL_INFO["name"],
                             data["error"])
            return []
        elif isinstance(data, str):
            log.logger.error("%s unexpected result - %s",
                             PROTOCOL_INFO["name"], data)
            return []

        if single: return [getattr(self, "_%s" % parse)(data)]
        if parse: return [getattr(self, "_%s" % parse)(m) for m in data]
        else: return []
예제 #11
0
    def _search(self, **args):
        data = network.Download("%s/api/search.json" % URL_PREFIX,
                                util.compact(args))
        data = data.get_json()

        return [self._result(m) for m in data["results"]]
예제 #12
0
    def _search(self, **args):
        data = network.Download("http://search.twitter.com/search.json",
                                util.compact(args))
        data = data.get_json()["results"]

        return [self._result(m) for m in data]
예제 #13
0
 def _search(self, **args):
     data = network.Download("%s/api/search.json" % self.url_prefix,
                             util.compact(args))
     data = data.get_json()["results"]
     return [self._result(m) for m in data]