2727 gpg_keyring: none (defaults to user's GPG keyring) or string (path to keyring file)
2828"""
2929from datetime import datetime , timedelta
30+ from typing import Optional
31+ from io import BytesIO
3032
3133from intelmq .lib .bot import CollectorBot
3234from intelmq .lib .mixins import HttpMixin
3335from intelmq .lib .utils import unzip
3436from intelmq .lib .exceptions import MissingDependencyError
37+ from intelmq .lib .splitreports import generate_reports
3538
3639try :
3740 import gnupg
@@ -64,6 +67,9 @@ class HTTPCollectorBot(CollectorBot, HttpMixin):
6467 signature_url_formatting : bool = False
6568 ssl_client_certificate : str = None # TODO: pathlib.Path
6669 verify_pgp_signatures : bool = False
70+ # splitreports
71+ chunk_replicate_header : bool = True
72+ chunk_size : Optional [int ] = None
6773
6874 def init (self ):
6975 self .use_gpg = self .verify_pgp_signatures
@@ -119,7 +125,7 @@ def process(self):
119125 try_tar = False , logger = self .logger ,
120126 return_names = True ))
121127 except ValueError :
122- raw_reports .append ((None , resp .text ))
128+ raw_reports .append ((None , resp .content ))
123129 else :
124130 self .logger .info ('Extracting files: '
125131 "'%s'." , "', '" .join ([file_name
@@ -130,12 +136,14 @@ def process(self):
130136 return_names = True , logger = self .logger )
131137
132138 for file_name , raw_report in raw_reports :
133- report = self .new_report ()
134- report .add ("raw" , raw_report )
135- report .add ("feed.url" , http_url )
139+ template = self .new_report ()
140+ template .add ("feed.url" , http_url )
136141 if file_name :
137- report .add ("extra.file_name" , file_name )
138- self .send_message (report )
142+ template .add ("extra.file_name" , file_name )
143+ for report in generate_reports (template , BytesIO (raw_report ),
144+ self .chunk_size ,
145+ self .chunk_replicate_header ):
146+ self .send_message (report )
139147
140148 def format_url (self , url : str , formatting ) -> str :
141149 try :
0 commit comments