using System;
namespace Deploymentcenter.Client
{
///
/// Auskunft ueber die eingebundene SDK-Fassung.
///
/// Wozu das gut ist: Wer eine Anbindung aktualisiert, will nicht die
/// gesamte Historie lesen, sondern nur wissen, was sich seit der eigenen
/// Fassung geaendert hat. Dafuer muss die Anwendung festhalten, gegen
/// welche Fassung sie gebaut wurde - und genau das ist
/// .
///
/// Der Wert wandert automatisch in die Update-Pruefung und den Heartbeat,
/// sodass im Deploymentcenter sichtbar wird, welche Installation auf
/// welchem Stand haengt. Ohne diese Angabe bliebe nur Nachfragen.
///
/// Abfragen laesst sich der Unterschied so:
///
/// GET /api/updateservice/v1/changelog?since=2.2.0
///
/// Die Antwort nennt nur die neueren Fassungen, dazu die Anzahl der
/// Punkte mit Handlungsbedarf und der brechenden Aenderungen.
///
public static class DeploymentcenterSdk
{
///
/// Fassung dieses SDK. Bei jeder Auslieferung mitzufuehren - sie ist
/// der Bezugspunkt fuer den Changelog.
///
public const string Version = "2.5.0";
///
/// Adresse, unter der sich der Unterschied zur eigenen Fassung
/// abfragen laesst.
///
public static string ChangelogUrl(string baseUrl, string? since = null)
{
string clean = (baseUrl ?? string.Empty).TrimEnd('/');
string url = clean + "/api/updateservice/v1/changelog";
string from = string.IsNullOrWhiteSpace(since) ? Version : since!;
return url + "?since=" + Uri.EscapeDataString(from);
}
///
/// Kurzer Vermerk fuer Protokolle und Fehlerberichte. Taucht ein
/// Problem auf, ist damit sofort ersichtlich, gegen welche Fassung die
/// Anbindung gebaut wurde.
///
public static string Describe(string? appVersion = null)
{
return string.IsNullOrWhiteSpace(appVersion)
? $"Deploymentcenter-SDK {Version}"
: $"{appVersion} (Deploymentcenter-SDK {Version})";
}
}
}