From 85e02a16b498c98bafc41fec2c4ba03834009fed Mon Sep 17 00:00:00 2001 From: Micke Nordin Date: Fri, 9 Aug 2024 11:46:24 +0200 Subject: [PATCH] Working share with nextcloud --- src/ocm_cli/__init__.py | 51 ++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/ocm_cli/__init__.py b/src/ocm_cli/__init__.py index cdd5468..08db120 100755 --- a/src/ocm_cli/__init__.py +++ b/src/ocm_cli/__init__.py @@ -10,7 +10,7 @@ import uuid from http.server import BaseHTTPRequestHandler, HTTPServer from os import environ as env from os import path, makedirs -from urllib.parse import urlparse +from urllib.parse import urlparse, quote_plus import pwd import requests @@ -61,7 +61,7 @@ class OCM: if self.legacy_mode: return { "name": self.config[self.user][provider_id]["name"], - "owner": self.user, + "owner": self.user + '@localhost.local', "permission": self.config[self.user][provider_id]["permission"], "protocol": { @@ -110,7 +110,7 @@ class OCM: def receive(self): self.server.serve_forever() - def create_share(self, receiver, resource_type, name) -> str: + def create_share(self, receiver, resource_type, name, share_endpoint) -> None: provider_id = uuid.uuid4().hex self.config[self.user][provider_id] = { "name": name, @@ -121,17 +121,33 @@ class OCM: "token": uuid.uuid4().hex, } self.write_config() + payload = self.get_share_payload(provider_id) + print(payload) - return provider_id + headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + } + share_req = requests.post( + share_endpoint, + headers=headers, + json=payload) + if share_req.status_code != 200: + print("Error: " + str(share_req.status_code)) + print(share_req.text) + sys.exit(1) + share_data = share_req.json() + + print(share_data) def share(self, file, directory, to): uparse = urlparse(to) - receiver = uparse.username - if not receiver: + cloudid = f'{uparse.username}@{uparse.hostname}' + if not cloudid: print("Username not specified") sys.exit(1) else: - print("Sharing with " + receiver) + print("Sharing with " + cloudid) discovery_endpoint = uparse.scheme + "://" + \ uparse.hostname + "/.well-known/ocm" req = requests.get(discovery_endpoint) @@ -174,25 +190,8 @@ class OCM: print("Resource type " + resource_type + " is not supported") sys.exit(1) - provider_id = self.create_share( - receiver, resource_type, file_or_folder) - payload = self.get_share_payload(provider_id) - - headers = { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - } - share_req = requests.post( - share_endpoint, - headers=headers, - json=payload) - if share_req.status_code != 200: - print("Error: " + str(share_req.status_code)) - print(share_req.text) - sys.exit(1) - share_data = share_req.json() - - print(share_data) + self.create_share( + cloudid, resource_type, file_or_folder, share_endpoint) if __name__ == "__main__":