From 0cd533db6040a57d19216a54db865251dc861865 Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Wed, 15 Jan 2020 00:24:42 -0600 Subject: [PATCH] remove block hashes from board cache if they 404 --- static-data/default-plugins/flow/flowapi.py | 45 +++++++++++++------ static-data/www/board/board.js | 48 +++++++++++++++------ 2 files changed, 66 insertions(+), 27 deletions(-) diff --git a/static-data/default-plugins/flow/flowapi.py b/static-data/default-plugins/flow/flowapi.py index 3d97abba..ef27a39f 100755 --- a/static-data/default-plugins/flow/flowapi.py +++ b/static-data/default-plugins/flow/flowapi.py @@ -1,9 +1,15 @@ -''' - Onionr - Private P2P Communication +"""Onionr - Private P2P Communication. - This file primarily serves to allow specific fetching of flow board messages -''' -''' +This file primarily serves to allow specific fetching of flow board messages +""" +import json +import os + +from flask import Response, Blueprint +from deadsimplekv import DeadSimpleKV + +from utils import identifyhome +""" This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or @@ -16,13 +22,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -''' -import json -import os +""" -from flask import Response, request, redirect, Blueprint, abort -from utils import identifyhome -import deadsimplekv as simplekv flask_blueprint = Blueprint('flow', __name__) with open(os.path.dirname(os.path.realpath(__file__)) + '/info.json', 'r') as info_file: @@ -31,7 +32,9 @@ with open(os.path.dirname(os.path.realpath(__file__)) + '/info.json', 'r') as in @flask_blueprint.route('/flow/getpostsbyboard/') def get_post_by_board(board): - board_cache = simplekv.DeadSimpleKV(identifyhome.identify_home() + '/board-index.cache.json', flush_on_exit=False) + board_cache = DeadSimpleKV( + identifyhome.identify_home() + '/board-index.cache.json', + flush_on_exit=False) board_cache.refresh() posts = board_cache.get(board) if posts is None: @@ -44,7 +47,9 @@ def get_post_by_board(board): def get_post_by_board_with_offset(board, offset): offset = int(offset) OFFSET_COUNT = 10 - board_cache = simplekv.DeadSimpleKV(identifyhome.identify_home() + '/board-index.cache.json', flush_on_exit=False) + board_cache = DeadSimpleKV( + identifyhome.identify_home() + '/board-index.cache.json', + flush_on_exit=False) board_cache.refresh() posts = board_cache.get(board) if posts is None: @@ -57,3 +62,17 @@ def get_post_by_board_with_offset(board, offset): @flask_blueprint.route('/flow/version') def get_version(): return Response(version) + +@flask_blueprint.route('/flow/removefromcache//', methods=['POST']) +def remove_from_cache(board, name): + board_cache = DeadSimpleKV(identifyhome.identify_home() + + '/board-index.cache.json', + flush_on_exit=False) + board_cache.refresh() + posts = board_cache.get(board) + try: + posts.remove(name) + except ValueError: + pass + board_cache.put(board, posts) + return Response('success') diff --git a/static-data/www/board/board.js b/static-data/www/board/board.js index c70510ae..821a549b 100755 --- a/static-data/www/board/board.js +++ b/static-data/www/board/board.js @@ -171,22 +171,40 @@ function loadMessage(blockHash, blockList, count, channel){ method: 'GET', headers: { "token": webpass - }}) - .then((resp) => resp.json()) - .then(function(data) { - let before = blockList[count - 1] - let delay = 2000 - if (typeof before == "undefined"){ - before = null - } else { - let existing = document.getElementsByClassName('cMsgBox') - for (x = 0; x < existing.length; x++){ - if (existing[x].getAttribute('data-bl') === before){ - delay = 0 + }}).then(function(response) { + if (!response.ok) { + let on404 = function() { + if (response.status == 404){ + fetch('/flow/removefromcache/' + channel + '/' + blockHash, { + method: 'POST', + headers: { + "content-type": "application/json", + "token": webpass + } + }) + } + else{ + console.log(error) + } + }() + return + } + response.json().then(function(data){ + let before = blockList[count - 1] + let delay = 2000 + if (typeof before == "undefined"){ + before = null + } else { + let existing = document.getElementsByClassName('cMsgBox') + for (x = 0; x < existing.length; x++){ + if (existing[x].getAttribute('data-bl') === before){ + delay = 0 + } } } - } - setTimeout(function(){appendMessages(data, blockHash, before, channel)}, delay) + setTimeout(function(){appendMessages(data, blockHash, before, channel)}, delay) + }) + return response; }) } @@ -226,3 +244,5 @@ newPostForm.onsubmit = function(){ }) return false } + +