Exemplo n.º 1
0
    def post(self, **kw):
        helper = RequestHelper(self)
        results = {}
        source_q = ArtifactSource.all()
        for s in source_q:
            artifact_q = ArtifactInfo.find_by_source(s)
            count = len([a for a in artifact_q])
            counter = Counters.source_counter(s.name)
            old_count = counter.count()
            counter.set(count)
            
            source_result = { 'old': old_count }
            
            # if source is linked to a feed, I can't delete it
            feed = Feed.get_by_source(s, return_none=True)
            if feed:
                source_result['feed'] = feed.url

            if not count and not feed:
                s.delete()
                source_result['deleted'] = True
            
            if count:
                source_result['new'] = count
                
            results[s.name] = source_result
        helper.write_json(results)
Exemplo n.º 2
0
 def get(self, name, **kw):
     helper = RequestHelper(self)
     source = ArtifactSourceAccessor.get_by_name(name, return_none=True)
     if not source:
         helper.error(404)
         return
     helper.write_json(source_hash(source))
Exemplo n.º 3
0
 def get(self, name, **kw):
     helper = RequestHelper(self)
     source = ArtifactSourceAccessor.get_by_name(name, return_none=True)
     if not source:
         helper.error(404)
         return
     helper.write_json(source_hash(source))
Exemplo n.º 4
0
    def post(self, **kw):
        helper = RequestHelper(self)
        results = {}
        source_q = ArtifactSource.all()
        for s in source_q:
            artifact_q = ArtifactInfo.find_by_source(s)
            count = len([a for a in artifact_q])
            counter = Counters.source_counter(s.name)
            old_count = counter.count()
            counter.set(count)

            source_result = {'old': old_count}

            # if source is linked to a feed, I can't delete it
            feed = Feed.get_by_source(s, return_none=True)
            if feed:
                source_result['feed'] = feed.url

            if not count and not feed:
                s.delete()
                source_result['deleted'] = True

            if count:
                source_result['new'] = count

            results[s.name] = source_result
        helper.write_json(results)
Exemplo n.º 5
0
    def get(self, **kw):
        helper = RequestHelper(self)
        q = self.request.get("q", None)
        output = self.request.get("o", None)
        max_results = int(self.request.get("max", -1))
        
        if not q:
            helper.error(400, "q not provided.")
            return

        q_results = ArtifactContent.all().search(q)

        json_results = None
        if output == "short":
            json_results = {}
            json_results["count"] = q_results.count()
        elif output == "id":
            json_results = {}
            count = q_results.count()
            if max_results > 0 and max_results < q_results.count():
                count = max_results
                
            json_results["count"] = count
            ids = []
            json_results["ids"] = ids
            results = q_results.fetch(1000) if max_results == -1 else q_results.fetch(max_results)
            for c in results:
                ids.append(c.guid)
        else:
            json_results = []
            if q_results.count():
                for content in q_results.fetch(10):
                    info = ArtifactInfo.get_by_guid(content.guid)
                    json_results.append(ArtifactsHelper.artifact_to_hash(info, content))
        helper.write_json(json_results)
Exemplo n.º 6
0
 def get(self):
     helper = RequestHelper(self)
     results = []
     for s in db.stats.KindStat.all():
         results.append({'kind': s.kind_name,
             'count': s.count,
             'bytes': s.bytes})
     helper.write_json(results)
Exemplo n.º 7
0
 def get(self, page):
     page = int(page) if page else 0
     
     helper = RequestHelper(self)
     results = []
     for u in UrlResource.all().fetch(self.BATCH_SIZE, page * self.BATCH_SIZE):
         results.append(resource_hash(u))
     helper.write_json(results)
Exemplo n.º 8
0
    def get(self, **kw):
        helper = RequestHelper(self)

        # read actions from queue; return as json
        q = get_activity_queue()
        items = q.items()

        helper.write_json(items)
Exemplo n.º 9
0
 def get(self, source_name):
     helper = RequestHelper(self)
     source_name = urllib.unquote(source_name)
     f = Feed.get_by_source_name(source_name, return_none=True)
     if not f:
         helper.error(404)
         return
     helper.write_json(build_feed_hash(f))
Exemplo n.º 10
0
 def get(self, path):
     helper = RequestHelper(self)
     t_api = TwitterConnector.new_api()
     try:
         result_hash = t_api.FetchResource("%s" % path)
         logging.debug("result_hash: %s" % result_hash)
         helper.write_json(result_hash)
     except twitter.TwitterError, e:
         helper.write(e)
Exemplo n.º 11
0
 def delete(self):
     helper = RequestHelper(self)
     search_results = self.__search(helper)
     if search_results:
         keys = [u.key() for u in search_results]
         db.delete(keys)
         helper.write_json([k.name() for k in keys])
     else:
         helper.set_status(204)
Exemplo n.º 12
0
 def get(self):
     helper = RequestHelper(self)
     
     # calculates random number of minutes
     minute = random.choice(self._minutes)
     
     taskqueue.add(url=SafeTwitterActorHandler.PATH, countdown=minute * 60)
     msg = 'scheduled %d minutes in the future' % minute
     logging.debug(msg)
     helper.write_json({'msg': msg})
Exemplo n.º 13
0
 def get(cls, rhandler, guid, **kw):
     helper = RequestHelper(rhandler)
     
     artifact_info = ArtifactInfo.get_by_guid(guid)
     artifact_content = ArtifactContent.get_by_guid(guid)
     if artifact_info and artifact_content:
         artifact_hash = ArtifactsHelper.artifact_to_hash(artifact_info, artifact_content)
         helper.write_json(artifact_hash)
     else:
         helper.error(404)
Exemplo n.º 14
0
 def get(self):
     helper = RequestHelper(self)
     results = []
     for s in db.stats.KindStat.all():
         results.append({
             'kind': s.kind_name,
             'count': s.count,
             'bytes': s.bytes
         })
     helper.write_json(results)
Exemplo n.º 15
0
 def get(self, feed_url):
     feed_url = "http://%s" % feed_url
     helper = RequestHelper(self)
     entries = [
         dict(title=e.title,
              link=e.link,
              content=e.stripped_content,
              modified=str(e.modified))
         for e in generate_feed_entries(feed_url)
     ]
     helper.write_json(entries)
Exemplo n.º 16
0
 def respond(cls, handler):
     helper = RequestHelper(handler)
     directs, publics = TwitterActor().respond()
     
     if not directs:
         directs = 0
     if not publics:
         publics = 0
         
     result = dict(directs=directs, publics=publics)
     helper.write_json(result)        
Exemplo n.º 17
0
 def post(self):
     helper = RequestHelper(self)
     
     if not len(self.request.body):
         helper.error(400, "body required")
         return
         
     decoded_body = urllib.unquote(self.request.body)
     t_api = TwitterConnector.new_api()
     status = t_api.PostUpdate(decoded_body)
     helper.write_json(status.asDict())
Exemplo n.º 18
0
 def __default(self):
     helper = RequestHelper(self)
     m = self.request.method
     if m in ("DELETE", "PUT"):
         sleep = random.randint(0, 10) / 2
         logging.debug("sleeping for %ds" % sleep)
         time.sleep(sleep)
     elif m == "GET":
         helper.write_json({'msg': 'hack success'})
     else:
         pass
Exemplo n.º 19
0
 def get(self, username):
     helper = RequestHelper(self)
     t_api = TwitterConnector.new_api()
     friends = t_api.GetFriends()
     found = None
     for f in friends:
         if f.screen_name == username:
             found = f
             break
     result = {}
     result['friend'] = True if found else False
     helper.write_json(result)
Exemplo n.º 20
0
 def get(self, **kw):
     helper = RequestHelper(self)
     start = int(self.request.get("start", 0))
     count = int(self.request.get("count", 10))
     
     q = ArtifactInfo.all().order("-modified")
     json_results = []
     if q.count():
         for a_info in q.fetch(count, start):
             a_content = ArtifactAccessor.get_content_by_guid(a_info.guid)
             json_results.append(ArtifactsHelper.artifact_to_hash(a_info, a_content))
     helper.write_json(json_results)
Exemplo n.º 21
0
 def get(self, page):
     helper = RequestHelper(self)
     page = int(page)
     t_api = TwitterConnector.new_api()
     raw_mentions = t_api.getReplies(page=page)
     pretty_mentions = []
     for m in raw_mentions:
         d = dict(id=m.id, 
             created=m.created_at,
             user=m.user.screen_name,
             text=m.text)
         pretty_mentions.append(d)
     helper.write_json(pretty_mentions)
Exemplo n.º 22
0
 def get(self):
     # friend to follower ratio, used to find non-spam followers
     ff_ratio = self.request.get("ratio")
     
     helper = RequestHelper(self)
     t_api = TwitterConnector.new_api()
     
     filtered_followers = ([user_hash(u) for u in t_api.GetFollowers()])
     if ff_ratio:
         filtered_followers = filter(lambda u: u['follower-to-friend-ratio'] > float(ff_ratio), 
             filtered_followers)
         
     followers = sorted_user_list(filtered_followers)
     helper.write_json(followers)
Exemplo n.º 23
0
 def get(self, **kw):
     helper = RequestHelper(self)
     message = self.request.get("q", None)
     if not message:
         helper.error(400, "q must be provided")
         return
     message = urllib.unquote(message)
     try:
         sources, response = Mixer(new_speaker()).mix_response(message)
         logging.debug("sources:%s, response:%s" % (sources, response))
         result = dict(response=response)
         helper.write_json(result)
     except DataException, ex:
         helper.error(503, Exceptions.format(ex))
         logging.error(ex)
Exemplo n.º 24
0
 def get(self, **kw):
     helper = RequestHelper(self)
     message = self.request.get("q", None)
     if not message:
         helper.error(400, "q must be provided")
         return
     message = urllib.unquote(message)
     try:
         sources, response = Mixer(new_speaker()).mix_response(message)
         logging.debug("sources:%s, response:%s" % (sources, response))
         result = dict(response=response)
         helper.write_json(result)
     except DataException, ex:
         helper.error(503, Exceptions.format(ex))
         logging.error(ex)
Exemplo n.º 25
0
 def get(self, key):
     helper = RequestHelper(self)
     config = ConfigurationAccessor.get_or_create()
     result = None
     if config:
         if key:
             if entity_has_property(config, key):
                 result = getattr(config, key)
             else:
                 helper.error(400, "invalid key")
                 return
         else:
             result = entity_to_hash(config)
     else:
         result = {}
     helper.write_json(result)
Exemplo n.º 26
0
 def get(self, key):
     helper = RequestHelper(self)
     config = ConfigurationAccessor.get_or_create()
     result = None
     if config:
         if key:
             if entity_has_property(config, key):
                 result = getattr(config, key)
             else:
                 helper.error(400, "invalid key")
                 return
         else:
             result = entity_to_hash(config)
     else:
         result = {}
     helper.write_json(result)
Exemplo n.º 27
0
    def get(self, source_name, **kw):
        helper = RequestHelper(self)

        try:
            speaker_name = self.request.get("s", None)
            if speaker_name:
                speaker = new_speaker(speaker_name)[1]
                mixer = Mixer.new(speaker)
            else:
                speaker_name, speaker = new_random_speaker()
                logging.debug("speaker: %s" % str(speaker))
                mixer = Mixer(speaker)

            # direct message
            message = self.request.get("q", None)
            if message:
                message = urllib.unquote(message)
                sources, content = mixer.mix_response(message)
            else:
                if not source_name:
                    sources, content = mixer.mix_random_limit_sources(
                        2, degrade=True)
                else:
                    source_name = urllib.unquote(source_name)
                    logging.debug("get source_name: %s" % source_name)
                    if ";" in source_name:
                        # multiple sources
                        sources_split = set(source_name.split(";"))
                        sources, content = mixer.mix_sources(*sources_split)
                    else:
                        # single source
                        sources, content = mixer.mix_sources(source_name)
            logging.debug("sources: %s" % str(sources))
            source_hash_list = [s.name for s in sources]
            mix_hash = {
                "sources": source_hash_list,
                "speaker": {
                    "name": speaker_name,
                    "id": hash(speaker),
                    "details": str(speaker)
                },
                "body": content
            }
            helper.write_json(mix_hash)
        except NotFoundException, ex:
            helper.error(404, Exceptions.format(ex))
            logging.error(ex)
Exemplo n.º 28
0
 def get(self):
     helper = RequestHelper(self)
     count = int(self.request.get("count", 10))
     start_idx = int(self.request.get("start", 1))
     
     q = TwitterResponse.find_latest()
     q_results = q.fetch(count, start_idx) if start_idx > 1 else q.fetch(count)
     
     processed_results = []
     for r in q_results:
         r_hash = {"type": r.tweet_type, 
             "timestamp": r.timestamp.isoformat(),
             "message-id": r.message_id,
             "response-id": r.response_id,
             "user": r.user}
         processed_results.append(r_hash)
     helper.write_json(processed_results)
Exemplo n.º 29
0
 def act(cls, handler):
     helper = RequestHelper(handler)
     if handler.request.get("mock", False):
         actor = TwitterActor(twitter_api=MockTwitterApi())
     else:
         actor = TwitterActor()
         
     force_act = handler.request.get("force", False)
     action = handler.request.get("action")
     skip_responses = handler.request.get("skip_responses", False)
     act_response = actor.act(force_act=force_act, action=action, skip_responses=skip_responses)
     logging.debug("act_response: %s" % str(act_response))
     action = act_response[0]
     
     result = dict(action=action)
     if len(act_response) > 1:
         result['detailed_action'] = act_response
     helper.write_json(result)
Exemplo n.º 30
0
    def get(self, source_name, **kw):
        helper = RequestHelper(self)

        try:
            speaker_name = self.request.get("s", None)
            if speaker_name:
                speaker = new_speaker(speaker_name)[1]
                mixer = Mixer.new(speaker)
            else:
                speaker_name, speaker = new_random_speaker()
                logging.debug("speaker: %s" % str(speaker))
                mixer = Mixer(speaker)
        
            # direct message
            message = self.request.get("q", None)
            if message:
                message = urllib.unquote(message)
                sources, content = mixer.mix_response(message)
            else:
                if not source_name:
                    sources, content = mixer.mix_random_limit_sources(2, degrade=True)
                else:
                    source_name = urllib.unquote(source_name)
                    logging.debug("get source_name: %s" % source_name)
                    if ";" in source_name:
                        # multiple sources
                        sources_split = set(source_name.split(";"))
                        sources, content = mixer.mix_sources(*sources_split)
                    else:
                        # single source
                        sources, content = mixer.mix_sources(source_name)
            logging.debug("sources: %s" % str(sources))
            source_hash_list = [s.name for s in sources]
            mix_hash = {"sources": source_hash_list,
                "speaker": {"name": speaker_name, "id": hash(speaker), "details": str(speaker)},
                "body": content}
            helper.write_json(mix_hash)
        except NotFoundException, ex:
            helper.error(404, Exceptions.format(ex))
            logging.error(ex)
Exemplo n.º 31
0
    def get(self, url):
        helper = RequestHelper(self)
        resource = UrlResource.get_by_url(url, return_none=True)
        if not resource:
            helper.error(404)
            return
        helper.write_json(resource_hash(resource))


# application = webapp.WSGIApplication([
#     ('/api/resources/-/search', ResourcesSearchHandler),
#     ('/api/resources/?(\d+)?', ResourcesHandler),
#     ('/api/resources/(.+)', ResourceHandler)
#     ])
# 
# 
# def main():
#   log.config()
#   run_wsgi_app(application)
# 
# if __name__ == "__main__":
#   main()
Exemplo n.º 32
0
 def __default(self):
     helper = RequestHelper(self)
     helper.write_json({'msg': 'hack success'})
Exemplo n.º 33
0
 def get(self, **kw):
     helper = RequestHelper(self)
     results = []
     for s in ArtifactSource.all().fetch(100, 0):
         results.append(source_hash(s))
     helper.write_json(results)
Exemplo n.º 34
0
 def get(self):
     helper = RequestHelper(self)
     results = []
     for f in Feed.all().order('url').fetch(50):
         results.append(build_feed_hash(f))
     helper.write_json(results)
Exemplo n.º 35
0
 def get(self):
     helper = RequestHelper(self)
     helper.write_json(memcache.get_stats())
Exemplo n.º 36
0
 def get(self):
     helper = RequestHelper(self)
     search_results = self.__search(helper)
     if search_results is not None:
         helper.write_json([resource_hash(u) for u in search_results])
Exemplo n.º 37
0
 def __send_count(self, keys):
     helper = RequestHelper(self)
     count = len(keys)
     result = {'count': count}
     helper.write_json(result)
Exemplo n.º 38
0
 def get(self):
     helper = RequestHelper(self)
     result = dict(twitter_api=get_full_class_name(TwitterConnector.new_api()))
     result["sys.getdefaultencoding"] = sys.getdefaultencoding()
     helper.write_json(result)
Exemplo n.º 39
0
 def get(self):
     helper = RequestHelper(self)
     result = dict(
         twitter_api=get_full_class_name(TwitterConnector.new_api()))
     result["sys.getdefaultencoding"] = sys.getdefaultencoding()
     helper.write_json(result)
Exemplo n.º 40
0
 def get(self, **kw):
     helper = RequestHelper(self)
     results = []
     for s in ArtifactSource.all().fetch(100, 0):
         results.append(source_hash(s))
     helper.write_json(results)