forked from indymedia/epicyon
				
			Creating the outbox feed
							parent
							
								
									162d3944e4
								
							
						
					
					
						commit
						255d498cf7
					
				|  | @ -13,6 +13,7 @@ from webfinger import webfingerHandle | |||
| from posts import getUserPosts | ||||
| from posts import createPublicPost | ||||
| from posts import deleteAllPosts | ||||
| from posts import createOutbox | ||||
| from session import createSession | ||||
| import json | ||||
| import sys | ||||
|  | @ -32,10 +33,14 @@ useTor=False | |||
| session = createSession(useTor) | ||||
| 
 | ||||
| privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,https,True) | ||||
| deleteAllPosts(username,domain) | ||||
| #deleteAllPosts(username,domain) | ||||
| setPreferredUsername(username,domain,'badger') | ||||
| setBio(username,domain,'Some personal info') | ||||
| createPublicPost(username, domain, https, "G'day world!", False, True, None, None, 'Not suitable for Vogons') | ||||
| #createPublicPost(username, domain, https, "G'day world!", False, True, None, None, 'Not suitable for Vogons') | ||||
| outboxHeader,outboxJson=createOutbox(username,domain,https,3,None) | ||||
| pprint(outboxHeader) | ||||
| print('\n') | ||||
| pprint(outboxJson) | ||||
| 
 | ||||
| #runDaemon(domain,port,federationList,useTor) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										60
									
								
								posts.py
								
								
								
								
							
							
						
						
									
										60
									
								
								posts.py
								
								
								
								
							|  | @ -249,25 +249,71 @@ def createPublicPost(username: str, domain: str, https: bool, content: str, foll | |||
|         # TODO update output feed | ||||
|     return newPost | ||||
| 
 | ||||
| def createOutbox(username: str,domain: str,https: bool,noOfItems: int): | ||||
| def createOutbox(username: str,domain: str,https: bool,noOfItems: int,startMessageId=None) -> ({},{}): | ||||
|     """Constructs the outbox feed | ||||
|     """ | ||||
|     prefix='https' | ||||
|     if not https: | ||||
|         prefix='http' | ||||
|     outboxJsonFilename,outboxDir = createOutboxDir(username,domain) | ||||
|     outboxItems=0 | ||||
|     outboxHeader = {'@context': 'https://www.w3.org/ns/activitystreams', | ||||
|                     'first': prefix+'://'+domain+'/users/'+username+'/outbox?page=true', | ||||
|                     'id': prefix+'://'+domain+'/users/'+username+'/outbox', | ||||
|                     'last': prefix+'://'+domain+'/users/'+username+'/outbox?min_id=0&page=true', | ||||
|                     'totalItems': str(outboxItems), | ||||
|                     'totalItems': 0, | ||||
|                     'type': 'OrderedCollection'} | ||||
|     maxMessageId=100000000000000000 | ||||
|     minMessageId=100000000000000000 | ||||
|     outboxItems = {'@context': 'https://www.w3.org/ns/activitystreams', | ||||
|                    'id': prefix+'://'+domain+'/users/'+username+'/outbox?page=true', | ||||
|                    'next': prefix+'://'+domain+'/users/'+username+'/outbox?max_id='+str(maxMessageId)+'&page=true', | ||||
|                    'orderedItems': [ | ||||
|                    ], | ||||
|                    'partOf': prefix+'://'+domain+'/users/'+username+'/outbox', | ||||
|                    'prev': prefix+'://'+domain+'/users/'+username+'/outbox?min_id='+str(minMessageId)+'&page=true', | ||||
|                    'type': 'OrderedCollectionPage'} | ||||
| 
 | ||||
|     # counter for posts loop | ||||
|     postCtr=0 | ||||
| 
 | ||||
|     # post filenames sorted in descending order | ||||
|     postsInOutbox=sorted(os.listdir(outboxDir), reverse=True) | ||||
| 
 | ||||
|     # number of posts in outbox | ||||
|     outboxHeader['totalItems']=len(postsInOutbox) | ||||
|     prevPostFilename=None | ||||
| 
 | ||||
|     # Generate first and last entries within header | ||||
|     if len(postsInOutbox)>0: | ||||
|         postId = postsInOutbox[len(postsInOutbox)-1].split('#statuses#')[1].replace('#activity','') | ||||
|         outboxHeader['last']= \ | ||||
|             prefix+'://'+domain+'/users/'+username+'/outbox?min_id='+postId+'&page=true' | ||||
|         postId = postsInOutbox[0].split('#statuses#')[1].replace('#activity','') | ||||
|         outboxHeader['first']= \ | ||||
|             prefix+'://'+domain+'/users/'+username+'/outbox?max_id='+postId+'&page=true' | ||||
| 
 | ||||
|     # Insert posts | ||||
|     for postFilename in postsInOutbox: | ||||
|         if startMessageId and prevPostFilename: | ||||
|             if '#statuses#'+startMessageId in postFilename: | ||||
|                 postId = prevPostFilename.split('#statuses#')[1].replace('#activity','') | ||||
|                 outboxHeader['prev']= \ | ||||
|                     prefix+'://'+domain+'/users/'+username+'/outbox?min_id='+postId+'&page=true' | ||||
|         filePath = os.path.join(outboxDir, postFilename) | ||||
|         try: | ||||
|             if os.path.isfile(filePath): | ||||
|                 if postCtr <= noOfItems: | ||||
|                     with open(filePath, 'r') as fp: | ||||
|                         p=commentjson.load(fp) | ||||
|                         if postCtr < noOfItems: | ||||
|                             outboxItems['orderedItems'].append(p) | ||||
|                         elif postCtr == noOfItems: | ||||
|                             if '/statuses/' in p['id']: | ||||
|                                 postId = p['id'].split('/statuses/')[1].replace('/activity','') | ||||
|                                 outboxHeader['next']= \ | ||||
|                                     prefix+'://'+domain+'/users/'+ \ | ||||
|                                     username+'/outbox?max_id='+ \ | ||||
|                                     postId+'&page=true' | ||||
|                         postCtr += 1 | ||||
|                 prevPostFilename = postFilename | ||||
|                 if postCtr > noOfItems: | ||||
|                     break | ||||
|         except Exception as e: | ||||
|             print(e) | ||||
|     return outboxHeader,outboxItems | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue