Compare commits

..

6 Commits

6 changed files with 35 additions and 24 deletions

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
venv/*
mine_data/*
mariadb_data/*
*.pem
*__pycache__*
*.swp

6
cli.py
View File

@ -263,8 +263,10 @@ def opt_view_deck():
msg_array[0] = "You have no cards to view";
return;
for i, card in enumerate(cards):
print(f"{i+1}. Card ID: {card['cardId']}, Page ID: {card['pageId']}");
msg = "Successfully listed deck.\n"
for card in cards:
msg += f"Card ID: {card['cardId']}, Page ID: {card['pageId']}\n"
msg_array[0] = msg
except Exception as e:
msg_array[0] = f"Error fetching cards: {str(e)}";

3
client-requirements.txt Normal file
View File

@ -0,0 +1,3 @@
cryptography
dotenv
wikipedia

View File

@ -13,6 +13,7 @@ services:
MINE_DB_HOST: mariadb-mine
MINE_DB_USER: mine
MINE_DB_PASSWORD: 123abc
MINE_LOG_FILE: /tmp/mine.log
depends_on:
- mariadb-mine
ports:

View File

@ -1,5 +1,6 @@
import base64
import datetime
import logging
import mariadb
import os
import time
@ -181,6 +182,8 @@ class Database():
"""
def __init__(self):
logging.basicConfig(filename=os.getenv('MINE_LOG_FILE', '/var/log/mine.log'), level=logging.INFO)
self.logger = logging.getLogger(__name__)
delay = 2
while True:
try:
@ -195,6 +198,7 @@ class Database():
for each in self.SQL_CREATE_TABLES:
self.conn.cursor().execute(each)
except mariadb.Error as e:
self.logger.error(e)
time.sleep(delay := delay**2)
continue
break
@ -239,28 +243,23 @@ class Database():
def get_blocks(self):
cur = self.conn.cursor()
cur.execute(self.SQL_GET_LAST_BLOCK)
cur.execute(self.SQL_GET_BLOCKS)
blocks = cur.fetchall()
if blocks:
blockCard = self.get_card_by_block_id(lastBlock[0])
blockTransactions = self.get_transactions_by_block_id(lastBlock[0])
return [
Block(
blockId = uuid.UUID(block[0]),
previousHash = block[1],
timestamp = datetime.datetime.strptime(
block[2],
"%Y-%m-%d %H:%M:%S.%f%z"
),
height = block[3],
difficulty = block[4],
nonce = block[5],
card = blockCard,
transactions = blockTransactions
)
]
else:
return None
return [
Block(
blockId = uuid.UUID(block[0]),
previousHash = block[1],
timestamp = datetime.datetime.strptime(
block[2],
"%Y-%m-%d %H:%M:%S.%f%z"
),
height = block[3],
difficulty = block[4],
nonce = block[5],
card = self.get_card_by_block_id(block[0]),
transactions = self.get_transactions_by_block_id(block[0])
) for block in blocks
] if blocks else []
def get_last_block(self):
cur = self.conn.cursor()

View File

@ -50,7 +50,8 @@ def generate_origin_block():
@mine.get('/')
def index_get():
try:
return jsonify([each.as_dict() for each in db.get_blocks()])
blocks = db.get_blocks()
return flask.jsonify([block.as_dict() for block in blocks]) if blocks else flask.jsonify({})
except Exception as e:
return flask.jsonify(
{'Error': str(e)}
@ -171,6 +172,8 @@ def cards_get():
)
)
return flask.jsonify([card.as_dict() for card in deck] if deck else [])
else:
return flask.jsonify({'Error': "No public key."}), 400
except Exception as e:
return flask.jsonify(
{'Error': str(e)}