[Nextcloud] Dateien automatisch hochladen, veröffentlichen, Link mit Ablaufdatum generieren

8 Aug 2017
487
473
#1
Hi Leute,

Problembeschreibung ganz unten im Spoiler

kurz zu meiner Person: Was programmieren angeht bin ich ein Nullraffer... Ich habe Grundkenntnisse in C# und die sind wirklich mehr "Grund" als "Kenntnisse"
Ich bin allerdings willig zu lernen, wenn man mich etwas an die Hand nimmt und da hier wirklich fähige Leute unterwegs sind, probier ich mein Glück mal.

Meine größte Hürde ist, dass ich nicht weiß wie ich anfangen soll. Welche Sprache? Wie gehe ich es an? Wo starte ich? Ich kann nicht einmal die Informationen aus der Doku verwerten, weil ich nicht weiß was ich davor tun soll -_-

Zu dem Problem habe ich u.A das hier aus der Doku gefunden
https://docs.nextcloud.com/server/9/developer_manual/core/ocs-share-api.html

Außerdem gibt es auf GitHub einpaar Programme, bei denen man theoretisch spicken könnte wie zB.
https://github.com/nextcloud/files_retention
https://github.com/rullzer/dropit

Ich würde mich wirklich sehr freuen, wenn ihr mich und Mami nicht nur beleidigt sondern auch etwas Zeit für eine Lösung habt. Ich bin für jede Art der Antwort dankbar. Vom kleinen Tipp bis zum ellenlangen Tutorial bis zum komplett fertigen Code
Liebe Grüße
Kathaki

Ich erstelle mit einem anderen Programm Dateien (.pdf, .docx etc.). Diese Dateien sollen automatisch in die Cloud hochgeladen werden. Die Dateien sollen ebenfalls automatisch freigegeben werden mit einem Link. Und der Link benötigt einen Ablaufdatum.

Als Beispiel hat sich dieses Szenario bisher gut geeignet:
Ich bekomme jeden Monat Rechnungen (Miete, Strom, Auto usw.)
Mein Programm erstellt aus diesen Rechnungen eine Gesamtrechnung (GesamtRechnungJanuar.PDF)

GesamtRechnungJanuar.PDF soll nun automatisch hochgeladen werden (WebDAV/Windows Network drive?)

Die Datei soll nun automatisch mit einem Link freigegeben werden. Der Link soll ein Ablaufdatum haben(14 Tage)

(Im besten Fall müsste den Link nochmal abfangen, um ihn in eine Mail einzufügen)

Einen Monat später soll das Ganze natürlich von vorn beginnen mit GesamtRechnungFebruar.PDF

Das Problem kann ich nicht manuell lösen. Ich lege wert darauf, dass es automatisch passiert.
Ich kann auch nicht nur einen Ordner freigeben, da dann der Ablaufdatum auf den Dateien nicht funktioniert.

PS: Ich weiß, viele von euch werden Dinge sagen wie "Fang ganz vorne an mit Hello World! Dann lerne die Sprache, dann die, dann die, programmier einen Industrieroboter und dann kannst du dein Problem selber lösen"
Ich weiß ebenfalls, dass dieser Gedanke der richtige Weg ist. Allerdings habe wirklich nicht die Zeit dazu und bräuchte ein schnelles Ergebnis. Im Anschluss bin ich tatsächlich gewillt von ganz vorne anzufangen

PPS: Sollte sich wirklich Jemand meiner annehmen und mich durch das Projekt begleiten, so wird er als Dank auch entlohnt. Sicher kein neues Auto oder Urlaub auf Malle aber ein Gutschein, PSC oder Skins finde ich bestimmt noch irgendwo :wink:
 
Last edited:

ECB2

Advanced Member
15 May 2016
593
2,869
#2

Logxn

Honorable
22 Jul 2016
1,526
1,787
#5
Besten Dank Logxn Logxn das sieht ja richtig gut aus



Das ist glaub ich genau der Shit, den ich brauche. Jetzt müsste ich nur noch raffen wie ich das ganze für mich umsetze :grin:
Ich weiß ja nicht wie du das andere umsetzt aber im groben machste das mit Nextcloud so:

Code:
RestClient _client = new RestClient("deine_next_cloud_addresse_hier/ocs/v1.php/apps/files_sharing/api/v1 ");
RestRequest _request = new RestRequest("shares") // Erstes beispiel der Doc

IRestResponse response = _client.ExecuteAsGet(_request, "GET");
if(response.StatusCode == System.Net.HttpStatusCode.OK){
   // Erfolgreich
}
 
Likes: Kathaki
8 Aug 2017
487
473
#6
Ok cool... so ganz ganz langsam ergibt sich ein Bild wie ich das angehen muss.

Habe morgen frei und werde den Tag nutzen und versuchen ein File auf diese Weise hochzuladen. Denke wenn das erstmal geschafft ist, wird der Rest einfacher

Und riesen Lob an dich Logxn Logxn . Wirklich sehr nett
 
8 Aug 2017
487
473
#8
Wenns kein eigenes Programm sein muss lad dir ShareX runter und wähl als Uploadziel "seafile". Einfach Konto erstellen und einrichten, da kannste auch die Ablaufszeit und ein Passwort einstellen.
Alternativ kannst du auch "Plik" nehmen, kenn ich aber nicht.
Das ist ganz nett, kannte ich noch gar nicht.

In diesem Fall brauche ich allerdings ein schlankes, eigenes Tool mit Einbindung in die eigene Cloud. Allerdings habe ich schon eine Idee wie ich ShareX für was anderes verwenden kann :tongueclosed: Danke
 
Likes: Farid

Logxn

Honorable
22 Jul 2016
1,526
1,787
#9
Das ist ganz nett, kannte ich noch gar nicht.

In diesem Fall brauche ich allerdings ein schlankes, eigenes Tool mit Einbindung in die eigene Cloud. Allerdings habe ich schon eine Idee wie ich ShareX für was anderes verwenden kann :tongueclosed: Danke
Kannst mit ShareX auch eigene Uploadhoster einrichten.
Kenn mich damit aber nit aus
 
Likes: Kathaki
8 Aug 2017
487
473
#10
Kannst mit ShareX auch eigene Uploadhoster einrichten.
Kenn mich damit aber nit aus
Kann aber dem File keine weiteren Attribute mitgeben wie eben Ablaufdatum, automatisch mit Link sharen usw :frowning:

Bei dem script bin ich übrigens nicht wirklich weiter gekommen... allerdings glaube ich zu verstehen was die Befehle usw. bedeuten. Muss nur noch raffen wie ich sie genau verwenden muss
 

Logxn

Honorable
22 Jul 2016
1,526
1,787
#11
Kann aber dem File keine weiteren Attribute mitgeben wie eben Ablaufdatum, automatisch mit Link sharen usw :frowning:

Bei dem script bin ich übrigens nicht wirklich weiter gekommen... allerdings glaube ich zu verstehen was die Befehle usw. bedeuten. Muss nur noch raffen wie ich sie genau verwenden muss
PUT Arguments: expireDate - (string) set a expire date for public link shares. This argument expects a well formatted date string, e.g. ‘YYYY-MM-DD’

ist wahrscheinlich "xxxx.com/api/shares/<shareid>?expireDate=YYYY-MM-DD&....."
kannst mit .AddParameter hinzufügen

nutze das selbst so in meinem derzeitigen projekt

C#:
            if (!await emailExists(emailAddress))
                throw new EmailNotFoundException($"The email '{emailAddress}' could not be found at Adahealth.");

            restAuthClient.BaseUrl = new Uri(Constants.AUTH_BASE_URL);

            var cancellationTokenSource = new CancellationTokenSource();
            var request = new RestRequest(Constants.OAUTH_ENDPOINT, Method.POST);

            // This specific request needs UTF8 Encoding so we need to get a little bit fancy here.
            // This line of code will be our request
            var body = $"username={emailAddress}&password={password}&grant_type=password&language=en-US";

            // Transform this fancy piece into an UTF-8 encoded load of bytes
            var bytes = Encoding.UTF8.GetBytes(body);

            // Add it as request resource and viola it works.
            request.AddParameter(Constants.URL_ENCODED, body, ParameterType.RequestBody);
hier kanns sein, dass deine URL dann halt "<shareid>?permissions=<int>&password=<string>&publicUpload=<bool>&expireDate=YYYY-MM-DD"
 
Likes: Kathaki