.NET-REST-API-Client – Beispiel
Beispiel für einen REST-API-Client, der auf .NET basiert
Das Projekt und der Quellcode können
hier heruntergeladen werden.
Die ausführbare Anwendung kann
hier heruntergeladen werden.
Mindestanforderung: .NET-Framework Version 3.5.
Diese Anwendung wurde unter Windows 7 und 8.1 getestet.
Verwendung
Usage:
>CodeBeamerUnresolvedIssues.exe -e [enpoint] -u [username] -p [password] -a [user account] -t [type] -f [file name]
-c [converter] -n [encoding] -o -d
-u [Username]: login user account name, default is current Windows user
-p [Password]: login user password, if no value specified then Windows session authentication is used
-e [Endpoint]: the codeBeamer endpoint server address (eg. https://codebeamer.com/cb)
-a [user Account]: (optional) List the specified user's work items, by default the login user's work items are listed
-t [Type]: (optional) Result file format. Possible values: tsv, csv, json, xml. Default: tsv
-f [File name]: (optional) Generate the result into the specified file
-c [Converter]: (optional) Use special item converter (ext is implemented for now)
-n [eNcoding]: (optional) Output encoding (the list of usable encoding could be found in msdn,
eg.:http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx )
-o [Only directly assigned]: (optional) Show only the directly related work items to the user (not related via the user's role
-d [Debug]: (optional) debug mode on
Example 1:
CodeBeamerUnresolvedIssues.exe -e https://codebeamer.com/cb -u cbprojectadmin -p cbpass -a cbdeveloper -t json -f result.json -c ext -n windows-1250 -o -d
This will fetch unresolved issues which directly assigned (-o) to user "cbdeveloper" (-a) using codeBeamer REST API. The request authenticate with "cbprojectadmin",
"cbpass" pair (-u,-p), the type will be JSON (-t), and the result will be generated into (-f) a file called "result.json",
and an extended item converted will be used (-c). The result encoding will be windows-1250. Extra information about the execution will be printed (-d).
Example 2:
CodeBeamerUnresolvedIssues.exe -e https://codebeamer.com/cb -u cbprojectadmin -p cbpass
This will fetch all unresolved issues for user "cbprojectadmin" (-a not specified),
and it will print out the result in tsv format (-t not specified, tsv is the default) to console output (-f not specified, default is the console)
in UTF8 encoding (-n not specified, UTF8 is the default output encoding)
Ausgabeanbieter
Der Ausgabeanbieter generiert die Ausgabe von den konvertierten (vereinfachten) Objekten in ein endgültiges Antwortobjekt. Alle Anbieter müssen die IOutputProvider-Schnittstelle implementieren, die nur eine Methode namens "GenerateOutput" hat. Diese Methode verfügt über zwei Eingabeparameter: eine Liste der Vorgänge, bei denen es sich um konvertierte Objekte aus der REST-API handelt, und einen Ausgabe-Stream-Writer.
Während der Implementierung eines neuen Anbieters sollte das neue Objekt die IOutputProvider-Schnittstelle darstellen. Das folgende Beispiel ist ein einfacher Anbieter, der alle Vorgangsnamen als einfachen Text ausgibt:
class FooProvider : IOutputProvider
{
public void GenerateOutput(List<WorkItem> workItems, System.IO.StreamWriter writer)
{
foreach (WorkItem workItem in workItems)
{
writer.WriteLine(workItem.Name);
}
}
}
Der neue Anbieter sollte unter "OutputProviderFactory" registriert werden:
static class OutputProviderFactory
{
public static IOutputProvider GetProvider(ProgramArguments arguments)
{
switch (arguments.Type.ToLower())
{
case "csv":
return new CsvProvider(";");
case "json":
return new JsonProvider();
case "xml":
return new XmlProvider();
// !!! new case inserted:
case "foo":
return new FooProvider();
default:
// default is tsv
return new CsvProvider("\t");
}
}
}
Danach kann die Anwendung mit dem neuen Anbieter ausgeführt werden:
CodeBeamerUnresolvedIssues.exe -e https://codebeamer.com/cb -u cbprojectadmin -p cbpass -t foo
Konverter
Vorgangs-Konverter können verwendet werden, um das geparste Vorgangsobjekt von Codebeamer (Vorgang) in ein vereinfachtes Objekt "WorkItem" zu konvertieren, was die endgültige Anwendungsausgabe darstellt. Das folgende Beispiel zeigt, wie Sie den aktuellen DefaultItemConverter um zwei neue Eigenschaften erweitern und diese automatisch im Ergebnis verwenden können. Der neue Konverter erweitert die DefaultItemConverter-Klasse (die die IItemConverter-Schnittstelle implementiert) und fügt zwei Eigenschaften hinzu:
class ExtendedItemConverter : DefaultItemConverter
{
public override WorkItem Convert(Item item)
{
ExtendedWorkItem result = new ExtendedWorkItem();
if (item != null)
{
result.WorkItemId = Int32.Parse(base.getIdFromUri(item.uri));
result.Name = item.name;
result.Modifier = item.modifier != null ? item.modifier.name : "";
result.Modified = item.modifiedAt;
result.Submitter = item.submitter != null ? item.submitter.name : "";
result.Submitted = item.submittedAt;
result.Status = item.status != null ? item.status.name : "";
result.Priority = item.priority != null ? item.priority.name : "";
}
return result;
}
}
public class ExtendedWorkItem : WorkItem
{
public string Status { get; set; }
public string Priority { get; set; }
}
Der neue Anbieter sollte in "Program.cs" registriert werden:
private static IItemConverter getItemConverter(ProgramArguments arguments)
{
if (arguments.Converter != null)
{
switch (arguments.Converter)
{
case "ext":
return new ExtendedItemConverter();
}
}
return new DefaultItemConverter();
}
Danach kann die Anwendung mit dem neuen Konverter ausgeführt werden:
CodeBeamerUnresolvedIssues.exe -e https://codebeamer.com/cb -u cbprojectadmin -p cbpass -c ext