"""Ledger Entry Queue.""" from owsrequest import request import simplejson as json from commit_royalty.config import APPLICATION_NAME from commit_royalty.config import ENVIRONMENT from commit_royalty.logging import app_logger class LedgerEntryQueue: """A queue to manage batching queue entries.""" def __init__(self): """Create empty list.""" self._entries = [] def append(self, entry): """Add an entry to the list.""" self._entries.append(entry) def flush_entries(self): """Flush entries to ows-ledger.""" response = request.process( APPLICATION_NAME, ENVIRONMENT, 'POST', 'ows-ledger', '/ledger/bulk', data=json.dumps(self._entries)) if response.status_code != 201: app_logger.error('ledger service error: ', response.json()) app_logger.error('ledger entries: ', self._entries) raise Exception('Call to ledger service failed') self._entries = [] @property def length(self): """Return list size.""" return len(self._entries)