cic-cli/cic/attachment.py

67 lines
1.6 KiB
Python

# standard imports
import os
import logging
# local imports
from .base import *
logg = logging.getLogger(__name__)
class Attachment(Data):
def __init__(self, path='.', writer=None):
super(Attachment, self).__init__()
self.contents = {}
self.path = path
self.writer = writer
self.attachment_path = os.path.join(self.path, 'attachments')
def load(self):
for s in os.listdir(self.attachment_path):
fp = os.path.realpath(os.path.join(self.attachment_path, s))
f = open(fp, 'rb')
r = f.read()
f.close()
z = self.hash(r).hex()
self.contents[z] = fp
logg.debug('loaded attachment file {} digest {}'.format(fp, z))
def start(self):
super(Attachment, self).start()
os.makedirs(self.attachment_path)
def get(self, k):
return self.contents[k]
def asdict(self):
return self.contents
def process(self, token_address=None, writer=None):
if writer == None:
writer = self.writer
for k in self.contents.keys():
fp = os.path.join(self.attachment_path, self.contents[k])
f = open(fp, 'rb')
v = f.read()
f.close()
logg.debug('writing attachment {}'.format(k))
writer.write(k, v)
def __str__(self):
s = ''
#for i in range(len(self.contents)):
for k in self.contents.keys():
s += '{} = {}\n'.format(k, self.contents[k]) #self.digests[i].hex(), self.contents[i])
return s