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)
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))
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))
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)
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)
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)
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)
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)
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))
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)
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)
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})
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)
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)
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)
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)
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())
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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()
def __default(self): helper = RequestHelper(self) helper.write_json({'msg': 'hack success'})
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)
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)
def get(self): helper = RequestHelper(self) helper.write_json(memcache.get_stats())
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])
def __send_count(self, keys): helper = RequestHelper(self) count = len(keys) result = {'count': count} helper.write_json(result)
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)
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)
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)