def feed_push_update(feed_key): feed = ndb.Key(urlsafe=feed_key).get() if not feed: raise ndb.Return(("No feed", 404)) data = request.stream.read() logger.info('Got PuSH body: %s', data) logger.info('Got PuSH headers: %s', request.headers) if feed.hub_secret: server_signature = request.headers.get('X-Hub-Signature', None) signature = hmac.new(feed.hub_secret, data).hexdigest() if server_signature != signature: logger.warn('Got PuSH subscribe POST for feed key=%s w/o valid signature: sent=%s != expected=%s', feed_key, server_signature, signature) raise ndb.Return('') # I want to turn these off for a bit because they seem to be causing double posts raise ndb.Return('') yield feed.clear_error() parsed_feed = feedparser.parse(data) new_guids, old_guids = yield Entry.process_parsed_feed(parsed_feed, feed, overflow=False) yield Entry.publish_for_feed(feed, skip_queue=False) raise ndb.Return('')
def feed_push_update(feed_key): feed = ndb.Key(urlsafe=feed_key).get() if not feed: raise ndb.Return(("No feed", 404)) data = request.stream.read() logger.info("Got PuSH body: %s", data) logger.info("Got PuSH headers: %s", request.headers) if feed.hub_secret: server_signature = request.headers.get("X-Hub-Signature", None) signature = hmac.new(feed.hub_secret, data).hexdigest() if server_signature != signature: logger.warn( "Got PuSH subscribe POST for feed key=%s w/o valid signature: sent=%s != expected=%s", feed_key, server_signature, signature, ) raise ndb.Return("") # I want to turn these off for a bit because they seem to be causing double posts raise ndb.Return("") yield feed.clear_error() parsed_feed = feedparser.parse(data) new_guids, old_guids = yield Entry.process_parsed_feed(parsed_feed, feed, overflow=False) yield Entry.publish_for_feed(feed, skip_queue=False) raise ndb.Return("")