mirror of https://gitlab.com/bashrc2/epicyon
Undo bookmark request via c2s
parent
f4c4e240a5
commit
6f196d5fc3
82
bookmarks.py
82
bookmarks.py
|
@ -535,3 +535,85 @@ def sendBookmarkViaServer(baseDir: str, session,
|
||||||
print('DEBUG: c2s POST bookmark success')
|
print('DEBUG: c2s POST bookmark success')
|
||||||
|
|
||||||
return newBookmarkJson
|
return newBookmarkJson
|
||||||
|
|
||||||
|
|
||||||
|
def sendUndoBookmarkViaServer(baseDir: str, session,
|
||||||
|
nickname: str, password: str,
|
||||||
|
domain: str, fromPort: int,
|
||||||
|
httpPrefix: str, bookmarkUrl: str,
|
||||||
|
cachedWebfingers: {}, personCache: {},
|
||||||
|
debug: bool, projectVersion: str) -> {}:
|
||||||
|
"""Removes a bookmark via c2s
|
||||||
|
"""
|
||||||
|
if not session:
|
||||||
|
print('WARN: No session for sendUndoBookmarkViaServer')
|
||||||
|
return 6
|
||||||
|
|
||||||
|
domainFull = getFullDomain(domain, fromPort)
|
||||||
|
|
||||||
|
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||||
|
|
||||||
|
newBookmarkJson = {
|
||||||
|
"@context": "https://www.w3.org/ns/activitystreams",
|
||||||
|
"type": "Remove",
|
||||||
|
"actor": actor,
|
||||||
|
"object": {
|
||||||
|
"type": "Document",
|
||||||
|
"url": bookmarkUrl
|
||||||
|
},
|
||||||
|
"target": actor + "/tlbookmarks"
|
||||||
|
}
|
||||||
|
|
||||||
|
handle = httpPrefix + '://' + domainFull + '/@' + nickname
|
||||||
|
|
||||||
|
# lookup the inbox for the To handle
|
||||||
|
wfRequest = webfingerHandle(session, handle, httpPrefix,
|
||||||
|
cachedWebfingers,
|
||||||
|
domain, projectVersion, debug)
|
||||||
|
if not wfRequest:
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: unbookmark webfinger failed for ' + handle)
|
||||||
|
return 1
|
||||||
|
if not isinstance(wfRequest, dict):
|
||||||
|
print('WARN: unbookmark webfinger for ' + handle +
|
||||||
|
' did not return a dict. ' + str(wfRequest))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
postToBox = 'outbox'
|
||||||
|
|
||||||
|
# get the actor inbox for the To handle
|
||||||
|
(inboxUrl, pubKeyId, pubKey, fromPersonId, sharedInbox,
|
||||||
|
avatarUrl, displayName) = getPersonBox(baseDir, session, wfRequest,
|
||||||
|
personCache,
|
||||||
|
projectVersion, httpPrefix,
|
||||||
|
nickname, domain,
|
||||||
|
postToBox, 52594)
|
||||||
|
|
||||||
|
if not inboxUrl:
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: unbookmark no ' + postToBox +
|
||||||
|
' was found for ' + handle)
|
||||||
|
return 3
|
||||||
|
if not fromPersonId:
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: unbookmark no actor was found for ' + handle)
|
||||||
|
return 4
|
||||||
|
|
||||||
|
authHeader = createBasicAuthHeader(nickname, password)
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'host': domain,
|
||||||
|
'Content-type': 'application/json',
|
||||||
|
'Authorization': authHeader
|
||||||
|
}
|
||||||
|
postResult = postJson(session, newBookmarkJson, [], inboxUrl,
|
||||||
|
headers, 30, True)
|
||||||
|
if not postResult:
|
||||||
|
if debug:
|
||||||
|
print('WARN: POST unbookmark failed for c2s to ' + inboxUrl)
|
||||||
|
return 5
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: c2s POST unbookmark success')
|
||||||
|
|
||||||
|
return newBookmarkJson
|
||||||
|
|
|
@ -40,6 +40,7 @@ from pgp import pgpEncryptToActor
|
||||||
from pgp import pgpPublicKeyUpload
|
from pgp import pgpPublicKeyUpload
|
||||||
from like import noOfLikes
|
from like import noOfLikes
|
||||||
from bookmarks import sendBookmarkViaServer
|
from bookmarks import sendBookmarkViaServer
|
||||||
|
from bookmarks import sendUndoBookmarkViaServer
|
||||||
|
|
||||||
|
|
||||||
def _desktopHelp() -> None:
|
def _desktopHelp() -> None:
|
||||||
|
@ -1207,6 +1208,37 @@ def runDesktopClient(baseDir: str, proxyType: str, httpPrefix: str,
|
||||||
cachedWebfingers, personCache,
|
cachedWebfingers, personCache,
|
||||||
False, __version__)
|
False, __version__)
|
||||||
print('')
|
print('')
|
||||||
|
elif (commandStr == 'undo bookmark' or
|
||||||
|
commandStr == 'undo bm' or
|
||||||
|
commandStr == 'unbookmark' or
|
||||||
|
commandStr == 'unbm' or
|
||||||
|
commandStr.startswith('unbookmark ') or
|
||||||
|
commandStr.startswith('unbm ')):
|
||||||
|
currIndex = 0
|
||||||
|
if ' ' in commandStr:
|
||||||
|
postIndex = commandStr.split(' ')[-1].strip()
|
||||||
|
if postIndex.isdigit():
|
||||||
|
currIndex = int(postIndex)
|
||||||
|
if currIndex > 0 and boxJson:
|
||||||
|
postJsonObject = \
|
||||||
|
_desktopGetBoxPostObject(boxJson, currIndex)
|
||||||
|
if postJsonObject:
|
||||||
|
if postJsonObject.get('id'):
|
||||||
|
likeActor = postJsonObject['object']['attributedTo']
|
||||||
|
sayStr = 'Unbookmarking post by ' + \
|
||||||
|
getNicknameFromActor(likeActor)
|
||||||
|
_sayCommand(sayStr, sayStr,
|
||||||
|
screenreader,
|
||||||
|
systemLanguage, espeak)
|
||||||
|
sessionLike = createSession(proxyType)
|
||||||
|
sendUndoBookmarkViaServer(baseDir, sessionLike,
|
||||||
|
nickname, password,
|
||||||
|
domain, port, httpPrefix,
|
||||||
|
postJsonObject['id'],
|
||||||
|
cachedWebfingers,
|
||||||
|
personCache,
|
||||||
|
False, __version__)
|
||||||
|
print('')
|
||||||
elif commandStr == 'unlike' or commandStr == 'undo like':
|
elif commandStr == 'unlike' or commandStr == 'undo like':
|
||||||
currIndex = 0
|
currIndex = 0
|
||||||
if ' ' in commandStr:
|
if ' ' in commandStr:
|
||||||
|
|
Loading…
Reference in New Issue