Files
NKC/NKC_SDK/NKC.cs
T
2019-11-07 08:59:53 +01:00

198 lines
4.8 KiB
C#

using Newtonsoft.Json;
using System;
using System.Net;
namespace NKC_SDK
{
public class NKC
{
#region utils comunicazione HTTP
/// <summary>
/// Effettua chiamata URL e restituisce risultato
/// </summary>
/// <param name="URL"></param>
/// <returns></returns>
public static string callUrl(string URL)
{
string answ = "";
var client = new WebClientWT();
//var client = new WebClient();
client.Headers.Add("user-agent", "NKC_SDK");
try
{
answ = client.DownloadString(URL);
}
catch
{ }
// restituisco valore!
return answ;
}
/// <summary>
/// Effettua chiamata URL e restituisce risultato
/// </summary>
/// <param name="URL"></param>
/// <param name="payload"></param>
/// <returns></returns>
public static string callUrl(string URL, string payload)
{
string answ = "";
var client = new WebClientWT();
client.Headers.Add("user-agent", "NKC_SDK");
try
{
answ = client.UploadString(URL, payload);
}
catch
{ }
// restituisco valore!
return answ;
}
/// <summary>
/// Effettua chiamata PUT
/// </summary>
/// <param name="URL"></param>
/// <param name="payload"></param>
/// <returns></returns>
public static string putData(string URL, string payload)
{
string answ = "";
var client = new WebClientWT();
client.Headers.Add("user-agent", "NKC_SDK");
// importante x evitare errore 415 di dataType non ammesso
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
try
{
// va messo "PUT" e va configurato IIS per accettare PUT
answ = client.UploadString(URL, "PUT", payload);
answ = "ok";
}
catch (Exception exc)
{ }
// restituisco valore!
return answ;
}
#endregion
#region URL di base
protected string urlCurrBunk
{
get
{
return $"{_baseUrl}api/Bunk";
}
}
protected string urlGetBunk(int currBunkId)
{
return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=false";
}
protected string urlNextBunk(int currBunkId)
{
return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=true";
}
protected string urlPutBunk(int currBunkId)
{
return $"{_baseUrl}api/Bunk/{currBunkId}";
}
#endregion
/// <summary>
/// URL di base per la comunicazione
///
/// PROD: http://seriate.steamware.net:8083/NKC/
/// DEV: https://localhost:44388/
/// </summary>
protected string _baseUrl { get; set; } = @"http://seriate.steamware.net:8083/NKC/";
/// <summary>
/// Classe per effettuare comunicazioni con NKC
/// </summary>
/// <param name="baseUrl"></param>
public NKC(string baseUrl)
{
_baseUrl = baseUrl;
}
/// <summary>
/// Recupera il PRIMO BUNK
/// - effettua chaimata tramite REST API HTTP
/// - il risutlato viene deserializzato nell'oggetto richiesto
/// </summary>
/// <returns></returns>
public ProdBunk getFirstBunk()
{
ProdBunk answ = null;
// chiamo metodo x recupero WBunk...
try
{
string rawdata = callUrl(urlCurrBunk);
answ = JsonConvert.DeserializeObject<ProdBunk>(rawdata);
}
catch
{ }
return answ;
}
/// <summary>
/// Recupera il BUNK SUCCESSIVO
/// - effettua chaimata tramite REST API HTTP
/// - il risutlato viene deserializzato nell'oggetto richiesto
/// </summary>
/// <returns></returns>
public ProdBunk getNextBunk(int currBunkId)
{
ProdBunk answ = null;
// chiamo metodo x recupero WBunk...
try
{
string rawdata = callUrl(urlNextBunk(currBunkId));
answ = JsonConvert.DeserializeObject<ProdBunk>(rawdata);
}
catch
{ }
return answ;
}
/// <summary>
/// Recupera UN BUNK esatto
/// - effettua chaimata tramite REST API HTTP
/// - il risutlato viene deserializzato nell'oggetto richiesto
/// </summary>
/// <returns></returns>
public ProdBunk getBunk(int currBunkId)
{
ProdBunk answ = null;
// chiamo metodo x recupero WBunk...
try
{
string rawdata = callUrl(urlGetBunk(currBunkId));
answ = JsonConvert.DeserializeObject<ProdBunk>(rawdata);
}
catch
{ }
return answ;
}
/// <summary>
/// Effettua salvataggio del BUNK corrente su NKC
/// </summary>
/// <param name="currBunk"></param>
public void saveBunk(ProdBunk currBunk)
{
try
{
// serializzo oggetto
string rawdata = JsonConvert.SerializeObject(currBunk);
// invio con metodo put!
putData(urlPutBunk(currBunk.BunkId), rawdata);
}
catch
{ }
}
}
}