using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Best.HTTP;
using System;
using Newtonsoft.Json;
using System.Text;
using WI;
using System.Linq;
///
/// Option.ini
///
/// --httpSetting--
/// apiKey=""
/// httpServer=""
/// kpiAPI=""
/// predictionTimeAPI=""
///
/// --mqttClientSetting--
/// brokerAddress=""
/// brokerPort=""
/// topics="a","b","c"...
/// --mqttBrokerSetting--
/// address=""
/// port=""
/// topics="a","b","c"...
///
/// --defaultInfo--
/// machineInfoPath=""
///
/// --controllerOption--
/// forward=""
/// backward=""
/// left=""
/// right=""
/// zoomSpeed=""
/// moveSpeed=""
/// sprintSpeed=""
/// rotateSpeed=""
///
/// --graphicOption--
/// shadow=true
/// uiEffect=true
/// uiAnimation=true
/// uiResolution=1.0
/// machineEffect=true
/// machineAnimation=true
/// graphicQuality=1
///
namespace CHN
{
public class HTTPRequester : Protocol, ISingle, IOptionable
{
public Action onMachineKPIData;
[OptionSection]
string httpSetting;
[OptionKey]
string apiKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiZW1haWwiOiJjaHVuaWxlbmdAdXZjLmNvLmtyIiwiZ3JvdXBJZCI6MiwiZ3JvdXBDb2RlIjoiY2h1bmlsZW5nIiwicm9sZSI6IlRlbmFudEFkbWluIiwibmFtZSI6IuyynOydvOyXlOyngOuLiOyWtOungSIsImxpY2Vuc2UiOiJidXNpbmVzcyIsInBob25lIjoiMDEwMDAwMDAwMDAiLCJpYXQiOjE3MTgxNjI2MjksImV4cCI6MjAzMzUyMjYyOX0.zdlNswh_88M44oxs1HuaoA-rFdUoS50tHQ1-xNqWzIc";
[OptionKey]
string httpServer = "http://106.247.236.204:8863";
[OptionKey]
string kpiAPI = "/api/usp_ppmr020/list/facilityKpi";
public void Start()
{
HTTPConnect();
}
public void HTTPConnect()
{
var path = httpServer + kpiAPI;
var yesterday = DateTime.Now.AddDays(-1);
var yesterdayTime = yesterday.ToString("yyyyMMdd");
var todayTime = DateTime.Now.ToString("yyyyMMdd");
var query = $"?&p_frdt={yesterdayTime}&p_todt={todayTime}&limit={100}";
var request = HTTPRequest.CreateGet(path + query, RequestFinishedCallback);
request.AddHeader("access-token", apiKey);
request.Send();
}
private void RequestFinishedCallback(HTTPRequest req, HTTPResponse resp)
{
switch (req.State)
{
case HTTPRequestStates.Finished:
if (resp.IsSuccess)
{
isSuccess = true;
errorMessage = "Connected";
var payload = Encoding.UTF8.GetString(resp.Data);
var response = JsonConvert.DeserializeObject(payload);
onMachineKPIData?.Invoke(response);
}
else
{
isSuccess = false;
errorMessage = $"Server sent an error: {resp.StatusCode}-{resp.Message}";
}
break;
default:
isSuccess = false;
errorMessage = $"Request state: {req.State}";
break;
}
}
}
}