@context headers

master
Bob Mottram 2019-08-18 12:07:06 +01:00
parent 1997f9ee1b
commit 325672208f
9 changed files with 33 additions and 5 deletions

View File

@ -40,6 +40,7 @@ def createAcceptReject(baseDir: str,federationList: [], \
domain=domain+':'+str(port) domain=domain+':'+str(port)
newAccept = { newAccept = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': acceptType, 'type': acceptType,
'actor': httpPrefix+'://'+domain+'/users/'+nickname, 'actor': httpPrefix+'://'+domain+'/users/'+nickname,
'to': [toUrl], 'to': [toUrl],

View File

@ -119,6 +119,7 @@ def updateAnnounceCollection(postFilename: str,actor: str,debug: bool) -> None:
if debug: if debug:
print('DEBUG: Adding initial shares (announcements) to '+postUrl) print('DEBUG: Adding initial shares (announcements) to '+postUrl)
announcementsJson = { announcementsJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'id': postUrl, 'id': postUrl,
'type': 'Collection', 'type': 'Collection',
"totalItems": 1, "totalItems": 1,
@ -195,6 +196,7 @@ def createAnnounce(session,baseDir: str,federationList: [], \
newAnnounceId= \ newAnnounceId= \
httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber
newAnnounce = { newAnnounce = {
"@context": "https://www.w3.org/ns/activitystreams",
'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname, 'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname,
'atomUri': httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber, 'atomUri': httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber,
'cc': [], 'cc': [],
@ -307,6 +309,7 @@ def undoAnnounce(session,baseDir: str,federationList: [], \
fullDomain=domain+':'+str(port) fullDomain=domain+':'+str(port)
newUndoAnnounce = { newUndoAnnounce = {
"@context": "https://www.w3.org/ns/activitystreams",
'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname, 'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname,
'type': 'Undo', 'type': 'Undo',
'cc': [], 'cc': [],
@ -416,6 +419,7 @@ def sendAnnounceViaServer(session,fromNickname: str,password: str,
newAnnounceId= \ newAnnounceId= \
httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/statuses/'+statusNumber httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/statuses/'+statusNumber
newAnnounceJson = { newAnnounceJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname, 'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname,
'atomUri': newAnnounceId, 'atomUri': newAnnounceId,
'cc': [ccUrl], 'cc': [ccUrl],

View File

@ -158,6 +158,7 @@ def sendBlockViaServer(session,fromNickname: str,password: str,
blockActor=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname blockActor=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname
newBlockJson = { newBlockJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Block', 'type': 'Block',
'actor': blockActor, 'actor': blockActor,
'object': blockedUrl, 'object': blockedUrl,
@ -230,6 +231,7 @@ def sendUndoBlockViaServer(session,fromNickname: str,password: str,
blockActor=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname blockActor=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname
newBlockJson = { newBlockJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Undo', 'type': 'Undo',
'actor': blockActor, 'actor': blockActor,
'object': { 'object': {

View File

@ -875,6 +875,7 @@ class PubServer(BaseHTTPRequestHandler):
createSession(self.server.domain,self.server.port,self.server.useTor) createSession(self.server.domain,self.server.port,self.server.useTor)
undoAnnounceActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname undoAnnounceActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname
newUndoAnnounce = { newUndoAnnounce = {
"@context": "https://www.w3.org/ns/activitystreams",
'actor': undoAnnounceActor, 'actor': undoAnnounceActor,
'type': 'Undo', 'type': 'Undo',
'cc': [undoAnnounceActor+'/followers'], 'cc': [undoAnnounceActor+'/followers'],
@ -942,6 +943,7 @@ class PubServer(BaseHTTPRequestHandler):
likeActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname likeActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname
actorLiked=likeUrl.split('/statuses/')[0] actorLiked=likeUrl.split('/statuses/')[0]
likeJson= { likeJson= {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Like', 'type': 'Like',
'actor': likeActor, 'actor': likeActor,
'object': likeUrl, 'object': likeUrl,
@ -964,6 +966,7 @@ class PubServer(BaseHTTPRequestHandler):
undoActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname undoActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname
actorLiked=likeUrl.split('/statuses/')[0] actorLiked=likeUrl.split('/statuses/')[0]
undoLikeJson= { undoLikeJson= {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Undo', 'type': 'Undo',
'actor': undoActor, 'actor': undoActor,
'object': { 'object': {
@ -1001,6 +1004,7 @@ class PubServer(BaseHTTPRequestHandler):
createSession(self.server.domain,self.server.port,self.server.useTor) createSession(self.server.domain,self.server.port,self.server.useTor)
deleteActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname deleteActor=self.server.httpPrefix+'://'+self.server.domainFull+'/users/'+self.postToNickname
deleteJson= { deleteJson= {
"@context": "https://www.w3.org/ns/activitystreams",
'actor': actor, 'actor': actor,
'object': deleteUrl, 'object': deleteUrl,
'to': ['https://www.w3.org/ns/activitystreams#Public',actor], 'to': ['https://www.w3.org/ns/activitystreams#Public',actor],

View File

@ -51,6 +51,7 @@ def createDelete(session,baseDir: str,federationList: [], \
newDeleteId= \ newDeleteId= \
httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber
newDelete = { newDelete = {
"@context": "https://www.w3.org/ns/activitystreams",
'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname, 'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname,
'atomUri': httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber, 'atomUri': httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber,
'cc': [], 'cc': [],
@ -102,6 +103,7 @@ def sendDeleteViaServer(session,fromNickname: str,password: str,
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers' ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
newDeleteJson = { newDeleteJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname, 'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname,
'cc': [ccUrl], 'cc': [ccUrl],
'object': deleteObjectUrl, 'object': deleteObjectUrl,

View File

@ -92,6 +92,7 @@ def updateLikesCollection(postFilename: str,objectUrl: str, actor: str,debug: bo
if debug: if debug:
print('DEBUG: Adding initial likes to '+objectUrl) print('DEBUG: Adding initial likes to '+objectUrl)
likesJson = { likesJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'id': objectUrl, 'id': objectUrl,
'type': 'Collection', 'type': 'Collection',
"totalItems": 1, "totalItems": 1,
@ -147,6 +148,7 @@ def like(session,baseDir: str,federationList: [],nickname: str,domain: str,port:
likeTo=[objectUrl.split('/statuses/')[0]] likeTo=[objectUrl.split('/statuses/')[0]]
newLikeJson = { newLikeJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Like', 'type': 'Like',
'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname, 'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname,
'object': objectUrl, 'object': objectUrl,
@ -240,6 +242,7 @@ def undolike(session,baseDir: str,federationList: [],nickname: str,domain: str,p
likeTo=[objectUrl.split('/statuses/')[0]] likeTo=[objectUrl.split('/statuses/')[0]]
newUndoLikeJson = { newUndoLikeJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Undo', 'type': 'Undo',
'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname, 'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname,
'object': { 'object': {
@ -338,6 +341,7 @@ def sendLikeViaServer(session,fromNickname: str,password: str,
toUrl=[likeUrl.split('/statuses/')[0]] toUrl=[likeUrl.split('/statuses/')[0]]
newLikeJson = { newLikeJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Like', 'type': 'Like',
'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname, 'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname,
'object': likeUrl, 'object': likeUrl,
@ -412,6 +416,7 @@ def sendUndoLikeViaServer(session,fromNickname: str,password: str,
toUrl=[likeUrl.split('/statuses/')[0]] toUrl=[likeUrl.split('/statuses/')[0]]
newUndoLikeJson = { newUndoLikeJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Undo', 'type': 'Undo',
'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname, 'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname,
'object': { 'object': {

View File

@ -494,6 +494,7 @@ def createPostBase(baseDir: str,nickname: str, domain: str, port: int, \
capabilityIdList=[oc['id']] capabilityIdList=[oc['id']]
newPost = { newPost = {
"@context": "https://www.w3.org/ns/activitystreams",
'id': newPostId+'/activity', 'id': newPostId+'/activity',
'capability': capabilityIdList, 'capability': capabilityIdList,
'type': 'Create', 'type': 'Create',
@ -539,6 +540,7 @@ def createPostBase(baseDir: str,nickname: str, domain: str, port: int, \
imageDescription,useBlurhash) imageDescription,useBlurhash)
else: else:
newPost = { newPost = {
"@context": "https://www.w3.org/ns/activitystreams",
'id': newPostId, 'id': newPostId,
'type': 'Note', 'type': 'Note',
'summary': summary, 'summary': summary,
@ -619,6 +621,7 @@ def outboxMessageCreateWrap(httpPrefix: str, \
# TODO # TODO
capabilityUrl=[] capabilityUrl=[]
newPost = { newPost = {
"@context": "https://www.w3.org/ns/activitystreams",
'id': newPostId+'/activity', 'id': newPostId+'/activity',
'capability': capabilityUrl, 'capability': capabilityUrl,
'type': 'Create', 'type': 'Create',
@ -889,8 +892,8 @@ def threadSendPost(session,postJsonStr: str,federationList: [],\
for attempt in range(20): for attempt in range(20):
postResult = \ postResult = \
postJsonString(session,postJsonStr,federationList, \ postJsonString(session,postJsonStr,federationList, \
inboxUrl,signatureHeaderJson, \ inboxUrl,signatureHeaderJson, \
"inbox:write") "inbox:write",debug)
if postResult: if postResult:
if debug: if debug:
print('DEBUG: json post to '+inboxUrl+' succeeded') print('DEBUG: json post to '+inboxUrl+' succeeded')
@ -1102,7 +1105,7 @@ def sendPostViaServer(projectVersion: str, \
'Content-type': 'application/json', \ 'Content-type': 'application/json', \
'Authorization': authHeader} 'Authorization': authHeader}
postResult = \ postResult = \
postJsonString(session,json.dumps(postJsonObject),[],inboxUrl,headers,"inbox:write") postJsonString(session,json.dumps(postJsonObject),[],inboxUrl,headers,"inbox:write",debug)
#if not postResult: #if not postResult:
# if debug: # if debug:
# print('DEBUG: POST failed for c2s to '+inboxUrl) # print('DEBUG: POST failed for c2s to '+inboxUrl)

View File

@ -65,7 +65,12 @@ def postJson(session,postJsonObject: {},federationList: [],inboxUrl: str,headers
postResult = session.post(url = inboxUrl, data = json.dumps(postJsonObject), headers=headers) postResult = session.post(url = inboxUrl, data = json.dumps(postJsonObject), headers=headers)
return postResult.text return postResult.text
def postJsonString(session,postJsonStr: str,federationList: [],inboxUrl: str,headers: {},capability: str) -> str: def postJsonString(session,postJsonStr: str, \
federationList: [], \
inboxUrl: str, \
headers: {}, \
capability: str, \
debug: bool) -> str:
"""Post a json message string to the inbox of another person """Post a json message string to the inbox of another person
Supplying a capability, such as "inbox:write" Supplying a capability, such as "inbox:write"
NOTE: Here we post a string rather than the original json so that NOTE: Here we post a string rather than the original json so that
@ -77,7 +82,7 @@ def postJsonString(session,postJsonStr: str,federationList: [],inboxUrl: str,hea
if not capability.startswith('cap'): if not capability.startswith('cap'):
# check that we are posting to a permitted domain # check that we are posting to a permitted domain
if not urlPermitted(inboxUrl,federationList,capability): if not urlPermitted(inboxUrl,federationList,capability):
print('postJson: '+inboxUrl+' not permitted') print('postJson: '+inboxUrl+' not permitted by capabilities')
return None return None
postResult = session.post(url = inboxUrl, data = postJsonStr, headers=headers) postResult = session.post(url = inboxUrl, data = postJsonStr, headers=headers)

View File

@ -296,6 +296,7 @@ def sendShareViaServer(session,fromNickname: str,password: str,
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers' ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
newShareJson = { newShareJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Add', 'type': 'Add',
'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname, 'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname,
'target': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/shares', 'target': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/shares',
@ -385,6 +386,7 @@ def sendUndoShareViaServer(session,fromNickname: str,password: str,
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers' ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
undoShareJson = { undoShareJson = {
"@context": "https://www.w3.org/ns/activitystreams",
'type': 'Remove', 'type': 'Remove',
'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname, 'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname,
'target': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/shares', 'target': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/shares',