| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  | __filename__ = "daemon_get_collections.py" | 
					
						
							|  |  |  | __author__ = "Bob Mottram" | 
					
						
							|  |  |  | __license__ = "AGPL3+" | 
					
						
							|  |  |  | __version__ = "1.5.0" | 
					
						
							|  |  |  | __maintainer__ = "Bob Mottram" | 
					
						
							|  |  |  | __email__ = "bob@libreserver.org" | 
					
						
							|  |  |  | __status__ = "Production" | 
					
						
							| 
									
										
										
										
											2024-03-23 15:11:05 +00:00
										 |  |  | __module_group__ = "Core GET" | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | import json | 
					
						
							|  |  |  | from context import get_individual_post_context | 
					
						
							|  |  |  | from httpcodes import write2 | 
					
						
							|  |  |  | from httpcodes import http_404 | 
					
						
							|  |  |  | from httpheaders import set_headers | 
					
						
							|  |  |  | from posts import json_pin_post | 
					
						
							|  |  |  | from utils import convert_domains | 
					
						
							|  |  |  | from utils import get_json_content_from_accept | 
					
						
							|  |  |  | from follow import get_following_feed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def get_featured_collection(self, calling_domain: str, | 
					
						
							|  |  |  |                             referer_domain: str, | 
					
						
							|  |  |  |                             base_dir: str, | 
					
						
							|  |  |  |                             http_prefix: str, | 
					
						
							|  |  |  |                             nickname: str, domain: str, | 
					
						
							|  |  |  |                             domain_full: str, | 
					
						
							| 
									
										
										
										
											2024-04-12 10:31:08 +00:00
										 |  |  |                             system_language: str, | 
					
						
							|  |  |  |                             onion_domain: str, | 
					
						
							|  |  |  |                             i2p_domain: str) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  |     """Returns the featured posts collections in
 | 
					
						
							|  |  |  |     actor/collections/featured | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     featured_collection = \ | 
					
						
							|  |  |  |         json_pin_post(base_dir, http_prefix, | 
					
						
							|  |  |  |                       nickname, domain, domain_full, system_language) | 
					
						
							|  |  |  |     msg_str = json.dumps(featured_collection, | 
					
						
							|  |  |  |                          ensure_ascii=False) | 
					
						
							| 
									
										
										
										
											2024-04-12 10:31:08 +00:00
										 |  |  |     msg_str = convert_domains(calling_domain, referer_domain, | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  |                               msg_str, http_prefix, | 
					
						
							| 
									
										
										
										
											2024-04-12 10:31:08 +00:00
										 |  |  |                               domain, onion_domain, i2p_domain) | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  |     msg = msg_str.encode('utf-8') | 
					
						
							|  |  |  |     msglen = len(msg) | 
					
						
							|  |  |  |     accept_str = self.headers['Accept'] | 
					
						
							|  |  |  |     protocol_str = \ | 
					
						
							|  |  |  |         get_json_content_from_accept(accept_str) | 
					
						
							|  |  |  |     set_headers(self, protocol_str, msglen, | 
					
						
							|  |  |  |                 None, calling_domain, False) | 
					
						
							|  |  |  |     write2(self, msg) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def get_featured_tags_collection(self, calling_domain: str, | 
					
						
							|  |  |  |                                  referer_domain: str, | 
					
						
							| 
									
										
										
										
											2024-04-12 10:31:08 +00:00
										 |  |  |                                  path: str, http_prefix: str, | 
					
						
							|  |  |  |                                  domain_full: str, domain: str, | 
					
						
							|  |  |  |                                  onion_domain: str, i2p_domain: str) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  |     """Returns the featured tags collections in
 | 
					
						
							|  |  |  |     actor/collections/featuredTags | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     post_context = get_individual_post_context() | 
					
						
							|  |  |  |     featured_tags_collection = { | 
					
						
							|  |  |  |         '@context': post_context, | 
					
						
							|  |  |  |         'id': http_prefix + '://' + domain_full + path, | 
					
						
							|  |  |  |         'orderedItems': [], | 
					
						
							|  |  |  |         'totalItems': 0, | 
					
						
							|  |  |  |         'type': 'OrderedCollection' | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     msg_str = json.dumps(featured_tags_collection, | 
					
						
							|  |  |  |                          ensure_ascii=False) | 
					
						
							|  |  |  |     msg_str = convert_domains(calling_domain, | 
					
						
							|  |  |  |                               referer_domain, | 
					
						
							|  |  |  |                               msg_str, http_prefix, | 
					
						
							|  |  |  |                               domain, | 
					
						
							| 
									
										
										
										
											2024-04-12 10:31:08 +00:00
										 |  |  |                               onion_domain, | 
					
						
							|  |  |  |                               i2p_domain) | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  |     msg = msg_str.encode('utf-8') | 
					
						
							|  |  |  |     msglen = len(msg) | 
					
						
							|  |  |  |     accept_str = self.headers['Accept'] | 
					
						
							|  |  |  |     protocol_str = \ | 
					
						
							|  |  |  |         get_json_content_from_accept(accept_str) | 
					
						
							|  |  |  |     set_headers(self, protocol_str, msglen, | 
					
						
							|  |  |  |                 None, calling_domain, False) | 
					
						
							|  |  |  |     write2(self, msg) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def get_following_json(self, base_dir: str, path: str, | 
					
						
							|  |  |  |                        calling_domain: str, referer_domain: str, | 
					
						
							|  |  |  |                        http_prefix: str, | 
					
						
							|  |  |  |                        domain: str, port: int, | 
					
						
							|  |  |  |                        following_items_per_page: int, | 
					
						
							| 
									
										
										
										
											2024-04-12 10:31:08 +00:00
										 |  |  |                        debug: bool, list_name: str, | 
					
						
							|  |  |  |                        onion_domain: str, i2p_domain: str) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  |     """Returns json collection for following.txt
 | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     following_json = \ | 
					
						
							|  |  |  |         get_following_feed(base_dir, domain, port, path, http_prefix, | 
					
						
							|  |  |  |                            True, following_items_per_page, list_name) | 
					
						
							|  |  |  |     if not following_json: | 
					
						
							|  |  |  |         if debug: | 
					
						
							|  |  |  |             print(list_name + ' json feed not found for ' + path) | 
					
						
							|  |  |  |         http_404(self, 109) | 
					
						
							|  |  |  |         return | 
					
						
							|  |  |  |     msg_str = json.dumps(following_json, | 
					
						
							|  |  |  |                          ensure_ascii=False) | 
					
						
							|  |  |  |     msg_str = convert_domains(calling_domain, | 
					
						
							|  |  |  |                               referer_domain, | 
					
						
							|  |  |  |                               msg_str, http_prefix, | 
					
						
							|  |  |  |                               domain, | 
					
						
							| 
									
										
										
										
											2024-04-12 10:31:08 +00:00
										 |  |  |                               onion_domain, | 
					
						
							|  |  |  |                               i2p_domain) | 
					
						
							| 
									
										
										
										
											2024-03-03 11:54:32 +00:00
										 |  |  |     msg = msg_str.encode('utf-8') | 
					
						
							|  |  |  |     msglen = len(msg) | 
					
						
							|  |  |  |     accept_str = self.headers['Accept'] | 
					
						
							|  |  |  |     protocol_str = \ | 
					
						
							|  |  |  |         get_json_content_from_accept(accept_str) | 
					
						
							|  |  |  |     set_headers(self, protocol_str, msglen, | 
					
						
							|  |  |  |                 None, calling_domain, False) | 
					
						
							|  |  |  |     write2(self, msg) |