forked from indymedia/epicyon
				
			
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
| __filename__ = "metadata.py"
 | |
| __author__ = "Bob Mottram"
 | |
| __license__ = "AGPL3+"
 | |
| __version__ = "1.1.0"
 | |
| __maintainer__ = "Bob Mottram"
 | |
| __email__ = "bob@freedombone.net"
 | |
| __status__ = "Production"
 | |
| 
 | |
| import os
 | |
| from utils import loadJson
 | |
| from utils import noOfAccounts
 | |
| from utils import noOfActiveAccountsMonthly
 | |
| 
 | |
| 
 | |
| def metaDataNodeInfo(baseDir: str, registration: bool, version: str) -> {}:
 | |
|     """ /nodeinfo/2.0 endpoint
 | |
|     """
 | |
|     activeAccounts = noOfAccounts(baseDir)
 | |
|     activeAccountsMonthly = noOfActiveAccountsMonthly(baseDir, 1)
 | |
|     activeAccountsHalfYear = noOfActiveAccountsMonthly(baseDir, 6)
 | |
|     nodeinfo = {
 | |
|         'openRegistrations': registration,
 | |
|         'protocols': ['activitypub'],
 | |
|         'software': {
 | |
|             'name': 'epicyon',
 | |
|             'version': version
 | |
|         },
 | |
|         'usage': {
 | |
|             'localPosts': 1,
 | |
|             'users': {
 | |
|                 'activeHalfyear': activeAccountsHalfYear,
 | |
|                 'activeMonth': activeAccountsMonthly,
 | |
|                 'total': activeAccounts
 | |
|             }
 | |
|         },
 | |
|         'version': '2.0'
 | |
|     }
 | |
|     return nodeinfo
 | |
| 
 | |
| 
 | |
| def metaDataInstance(instanceTitle: str,
 | |
|                      instanceDescriptionShort: str,
 | |
|                      instanceDescription: str,
 | |
|                      httpPrefix: str, baseDir: str,
 | |
|                      adminNickname: str, domain: str, domainFull: str,
 | |
|                      registration: bool, systemLanguage: str,
 | |
|                      version: str) -> {}:
 | |
|     """ /api/v1/instance endpoint
 | |
|     """
 | |
|     adminActorFilename = \
 | |
|         baseDir + '/accounts/' + adminNickname + '@' + domain + '.json'
 | |
|     if not os.path.isfile(adminActorFilename):
 | |
|         return {}
 | |
| 
 | |
|     adminActor = loadJson(adminActorFilename, 0)
 | |
|     if not adminActor:
 | |
|         print('WARN: json load exception metaDataInstance')
 | |
|         return {}
 | |
| 
 | |
|     isBot = False
 | |
|     if adminActor['type'] != 'Person':
 | |
|         isBot = True
 | |
| 
 | |
|     url = \
 | |
|         httpPrefix + '://' + domainFull + '/@' + \
 | |
|         adminActor['preferredUsername']
 | |
| 
 | |
|     instance = {
 | |
|         'approval_required': False,
 | |
|         'contact_account': {
 | |
|             'acct': adminActor['preferredUsername'],
 | |
|             'avatar': adminActor['icon']['url'],
 | |
|             'avatar_static': adminActor['icon']['url'],
 | |
|             'bot': isBot,
 | |
|             'created_at': '2019-07-01T10:30:00Z',
 | |
|             'display_name': adminActor['name'],
 | |
|             'emojis': [],
 | |
|             'fields': [],
 | |
|             'followers_count': 1,
 | |
|             'following_count': 1,
 | |
|             'header': adminActor['image']['url'],
 | |
|             'header_static': adminActor['image']['url'],
 | |
|             'id': '1',
 | |
|             'last_status_at': '2019-07-01T10:30:00Z',
 | |
|             'locked': adminActor['manuallyApprovesFollowers'],
 | |
|             'note': '<p>Admin of '+domain+'</p>',
 | |
|             'statuses_count': 1,
 | |
|             'url': url,
 | |
|             'username': adminActor['preferredUsername']
 | |
|         },
 | |
|         'description': instanceDescription,
 | |
|         'email': 'admin@'+domain,
 | |
|         'languages': [systemLanguage],
 | |
|         'registrations': registration,
 | |
|         'short_description': instanceDescriptionShort,
 | |
|         'stats': {
 | |
|             'domain_count': 2,
 | |
|             'status_count': 1,
 | |
|             'user_count': noOfAccounts(baseDir)
 | |
|         },
 | |
|         'thumbnail': httpPrefix+'://'+domainFull+'/login.png',
 | |
|         'title': instanceTitle,
 | |
|         'uri': domainFull,
 | |
|         'urls': {},
 | |
|         'version': version
 | |
|     }
 | |
| 
 | |
|     return instance
 |