using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using ETSI.ARF.OpenAPI;
using ETSI.ARF.OpenAPI.WorldStorage;
using ETSI.ARF.WorldStorage;
using ETSI.ARF.WorldStorage.REST;
public class OpenAPITest : MonoBehaviour
{
public WorldStorageServer server;
public TMP_Text servername;
public TMP_Text output;
private string serverState = "-";
private string msg = null;
private Queue handleResponseQ = new Queue();
private Guid lastUUID = Guid.Empty;
// Start is called before the first frame update
void Start()
{
if (servername) servername.text = "ARF Server: " + server.basePath + "";
}
// Update is called once per frame
void Update()
{
if (msg != null)
{
output.text = msg;
msg = null;
}
if (handleResponseQ.Count > 0)
{
object o = handleResponseQ.Dequeue();
if (o is ResponseObject)
{
ResponseObject response = o as ResponseObject;
output.text = $"Server State:\n\n{ serverState }";
}
else if (o is ResponseObject)
{
ResponseObject response = o as ResponseObject;
output.text = $"Request Time: { response.requestTime.ToLongTimeString() } / Total Time: { response.DeltaTime.TotalMilliseconds }ms\n\nContent:\nUUID={ response.result.UUID}\nName={ response.result.Name }\nType={ response.result.TrackableType }";
}
else if (o is ResponseObject>)
{
ResponseObject> response = o as ResponseObject>;
output.text = $"Request Time: { response.requestTime.ToLongTimeString() } / Total Time: { response.DeltaTime.TotalMilliseconds }ms\n\nContent:\nNum of trackable objects={ response.result.Count }";
int i = 0;
foreach (var t in response.result)
{
output.text += $"\n{ i++ }: UUID={ t.UUID }";
lastUUID = t.UUID;
}
}
}
}
public void OnButtonClick_ServerTest()
{
if (server == null)
{
output.text = "Error: No server defined!";
return;
}
serverState = $"Requesting server state @ time: { DateTime.Now.ToLongTimeString() }...\n";
AdminRequest.PingAsync(server, (response1) =>
{
serverState += $"\nSending: Ping\n Receiving: { response1.result }\n Req time: { response1.requestTime.ToLongTimeString() } Tot time: { response1.DeltaTime.TotalMilliseconds }";
handleResponseQ.Enqueue(response1);
});
AdminRequest.AdminAsync(server, (response2) =>
{
serverState += $"\nSending: Admin\n Receiving: { response2.result }\n Req time: { response2.requestTime.ToLongTimeString() } Tot time: { response2.DeltaTime.TotalMilliseconds }";
handleResponseQ.Enqueue(response2);
});
AdminRequest.VersionAsync(server, (response3) =>
{
serverState += $"\nSending: Version\n Receiving: { response3.result }\n Req time: { response3.requestTime.ToLongTimeString() } Tot time: { response3.DeltaTime.TotalMilliseconds }";
handleResponseQ.Enqueue(response3);
});
}
public void OnButtonClick_GetLastTrackable()
{
if (server == null)
{
output.text = "Error: No server defined!";
return;
}
if (lastUUID == Guid.Empty)
{
output.text = "Error: Please, load first a list!";
return;
}
ResponseObject token = TrackableRequest.GetTrackableAsync(server, lastUUID, (response) =>
{
handleResponseQ.Enqueue(response);
});
output.text = "Starting request @ time: " + token.requestTime.ToLongTimeString() + "...";
}
public void OnButtonClick_GetAllTrackables()
{
if (server == null)
{
output.text = "Error: No server defined!";
return;
}
ResponseObject> token = TrackableRequest.GetTrackablesAsync(server, (response) =>
{
handleResponseQ.Enqueue(response);
});
output.text = "Starting request @ time: " + token.requestTime.ToLongTimeString() + "...";
}
public void OnButtonClick_CreateTrackable()
{
if (server == null)
{
output.text = "Error: No server defined!";
return;
}
Trackable tr = new Trackable(DateTime.Now.ToFileTime().ToString());
tr.TrackableType = TrackableType.OTHER;
ResponseObject token = TrackableRequest.CreateTrackableAsync(server, tr, (response) =>
{
lastUUID = Guid.Parse(response.result);
handleResponseQ.Enqueue(response);
});
lastUUID = Guid.Empty;
}
public void OnButtonClick_UpdateLastTrackable()
{
if (server == null)
{
output.text = "Error: No server defined!";
return;
}
if (lastUUID == Guid.Empty)
{
output.text = "Error: Please, load first a list!";
return;
}
ResponseObject token = TrackableRequest.GetTrackableAsync(server, lastUUID, (response) =>
{
response.result.Name += "'";
ResponseObject token = TrackableRequest.UpdateTrackableAsync(server, response.result, (response) =>
{
handleResponseQ.Enqueue(response);
});
});
}
public void OnButtonClick_DeleteLastTrackable()
{
if (server == null)
{
output.text = "Error: No server defined!";
return;
}
if (lastUUID == Guid.Empty)
{
output.text = "Error: Please, load first a list!";
return;
}
ResponseObject token = TrackableRequest.DeleteTrackableAsync(server, lastUUID, (response) =>
{
handleResponseQ.Enqueue(response);
lastUUID = Guid.Empty;
});
}
}