Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Untersuchung des Microsof.Live.Desktop Beispiels

Ein sehr effektives Beispiel zum Aufbau eines Desktop Programms für Windows 7 und später Windows 10 in der Desktop Version oder als Background Vorgang findet man in dem zuvor gezeigt beispiel.
Allerdings sollte man sich die Ausführung zum Lesen eines Ordners oder einer Datei genauer anschauen.
Nachdem der Sign in / Authorize stattgefunden hat, kann man einen einfach GET Befehl mit dem Ordner absenden und bekommt in der Textform eine Antwort über REST, Jason.




Beim Drücken des Execute Button wird die Function private async void ExecuteButton_Click aufgerufen, die die asynchronen REST Aufrufe durchführt

private async void ExecuteButton_Click(object sender, EventArgs e)

{

if (string.IsNullOrWhiteSpace(this.pathTextBox.Text))

{

this.LogOutput("Path cannot be empty.");

return;

}

try

{

LiveOperationResult result = null;

switch (this.methodComboBox.Text)

{

case "GET":

result = await this.liveConnectClient.GetAsync(this.pathTextBox.Text);

break;

case "PUT":

result = await this.liveConnectClient.PutAsync(this.pathTextBox.Text, this.requestBodyTextBox.Text);

break;

case "POST":

result = await this.liveConnectClient.PostAsync(this.pathTextBox.Text, this.requestBodyTextBox.Text);

break;

case "DELETE":

result = await this.liveConnectClient.DeleteAsync(this.pathTextBox.Text);

break;

case "MOVE":

result = await this.liveConnectClient.MoveAsync(this.pathTextBox.Text, this.destPathTextBox.Text);

break;

case "COPY":

result = await this.liveConnectClient.CopyAsync(this.pathTextBox.Text, this.destPathTextBox.Text);

break;

case "UPLOAD":

result = await this.UploadFile(this.pathTextBox.Text);

break;

case "DOWNLOAD":

await this.DownloadFile(this.pathTextBox.Text);

this.LogOutput("The download operation is completed.");

break;

}

if (result != null)

{

this.LogOutput(this.methodComboBox.Text + "\t" + this.pathTextBox.Text);

this.LogOutput(JsonHelper.FormatJson(result.RawResult));

this.LogOutput(string.Empty);

}

}

catch (Exception ex)

{

this.LogOutput("Received an error. " + ex.Message);

}

}



Beim Aufruf, lese den Basisordner meiner OneDrive-Dokumente wird zum Beispiel ein ganz einfacher Aufruf der folgenden Function durchgeführt
Ergebnis=GetAsync("/me/skydrive/my_documents")

Code:

/me/skydrive/my_documents
..
case "GET":

result = await this.liveConnectClient.GetAsync(this.pathTextBox.Text);

break;

..



Und der Server gibt den Text als REST oder JSON zurück

GET /me/skydrive/my_documents

{

"id": "folder.1234567890. 1234567890!2757",

"from": {"name": "Raimund Popp","id": "1234567890" },

"name": "Documents", "description": "", "parent_id": "folder. 1234567890",

"size": 0,

"upload_location": "https://apis.live.net/v5.0/folder. 1234567890. 1234567890!2757/files/",

"comments_count": 0,

"comments_enabled": false,

"is_embeddable": true,

"count": 0,

"link": "https://onedrive.live.com/redir.aspx?cid=1234567890&page=browse&resid=1234567890!2757&parId=1234567890!304",

"type": "folder", "shared_with": {"access": "Just me"},

"created_time": "2015-02-21T22:06:39+0000",

"updated_time": "2015-02-21T22:06:39+0000",

"client_updated_time": "2015-02-21T22:06:39+0000"

}




Der Code kann im Debugger in einzelsteps untersucht werden


Beim Aufruf der GetAsync werden die public functionen des Beispiels angewendet, die auch in andere Projecte als Code untersucht und übernommen werden können

Beim Ausführen des Hauptprogramms werden die schon eingebauten Unterfunktionen aus dem Microsoft.Live.Desktop Projekt aktiv.
Hier sind einige Hauptklassen super angelegt
Zunächst wird der LiveConnectClient aufgerufen..

public partial class LiveConnectClient

{

#region Public Methods

/// <summary>

/// Makes a GET call to Api service

/// </summary>

/// <param name="path">relative path to the resource.</param>

/// <returns>A Task object representing the asynchronous operation.</returns>

public Task<LiveOperationResult> GetAsync(string path)

{

return this.Api(path, ApiMethod.Get, null, new CancellationToken(false));

}




Diese ruft die passende asynchrone Function in LiveConnectClientTaskAsync.cs auf

private Task<LiveOperationResult> Api(string path, ApiMethod method, string body, CancellationToken ct)

{

ApiOperation op = this.GetApiOperation(path, method, body);

return this.ExecuteApiOperation(op, ct);



Und dieser führt dann den eigentlichen gekapselten ApiAufruf zum Server aus mit op.OperationCompletedCallback

private Task<LiveOperationResult> ExecuteApiOperation(ApiOperation op, CancellationToken ct)

{

if (this.Session == null)

{

throw new LiveConnectException(ApiOperation.ApiClientErrorCode, ResourceHelper.GetString("UserNotLoggedIn"));

}

var tcs = new TaskCompletionSource<LiveOperationResult>();

op.OperationCompletedCallback = (LiveOperationResult opResult) =>

{

if (opResult.IsCancelled)

{

tcs.TrySetCanceled();

}

else if (opResult.Error != null)

{

tcs.TrySetException(opResult.Error);

}

else

{

tcs.TrySetResult(opResult);

}

};

ct.Register(op.Cancel);

op.Execute();

return tcs.Task;

}




Das CodeBeipiel zum Download findet man in GitHUb unter
https://github.com/liveservices/LiveSDK-for-Windows/blob/master/src/Desktop/Source/Public/LiveAuthClient.cs

Ein passendes Beispiel online findet man unter:
http://isdk.dev.live.com/dev/isdk/ISDK.aspx?category=scenarioGroup_skyDrive&index=1
Mobile
»
Aufruf Beispiele von OneDrive Ordnern und Dateien
»
Microsoft.Live.LiveAuthClient enthält keinen Konstruktor
»
Untersuchung des REST Beispiels zum Ermitteln eines Ordners in LiveSDK OneDrive
»
Funktionsweise des LiveSDK Demos online testen
»
Code-Example für das Schreiben einer LiveSDK Anwendung
»
C# Await Fehlermeldung kann nur innerhalb einer Async Methode verwendet werden
»
Anleitung: Entwicklung von SDK Live
»
Einbinden des LiveSDK in Windows 7 und Windows 8 Anwendungen

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de