class ProjectSyncInboun
{
public static void InboundProject()
{
ProjectSyncInbound::jsonRead(ProjectSyncInbound::ProcessAuthorization("API_URL","Authorization_Detail", "User_Name","APIPassword"));
}
public static str ProcessAuthorization(str _projectAPI, str _authorization, str _userName, str _password)
{
str apiURL = _projectAPI;
str requestJson,responseJson;
System.Net.HttpWebRequest request;
System.Net.HttpWebResponse response = new System.Net.HttpWebResponse();
CLRObject clrObject;
System.Byte[] bytes;
System.Text.Encoding utf8;
System.IO.Stream requestStream,responseStream;
System.IO.StreamReader streamReader;
System.Net.WebHeaderCollection httpHeader;
System.Net.ServicePoint servicePt;
str byteStr;
System.Byte[] byteArray;
System.IO.Stream stream;
System.IO.Stream dataStream;
str returnValue;
System.String jsonResponse;
Newtonsoft.Json.Linq.JObject jobject;
requestJson =@'{
"CustomerKey":"Customer_Key_Detail",
"ModifiedFrom":"%1",
"ModifiedTo":"%2"
}';
requestJson = strFmt(requestJson,fromDate, today());
httpHeader = new System.Net.WebHeaderCollection();
httpHeader.Add("Authorization", strFmt("%1",_authorization));
httpHeader.Add("Username", strFmt("%1",_userName));
httpHeader.Add("Password",strFmt("%1",_password));
httpHeader.Add("Customerkey","Customer_Key_Detail");
httpHeader.Add("name","application/json");
System.Net.ServicePointManager::set_Expect100Continue(false);
clrObject = System.Net.WebRequest::Create(apiURL);
request = clrObject;
request.set_Method("POST");
request.set_KeepAlive(false);
request.set_Headers(httpHeader);
utf8 = System.Text.Encoding::get_UTF8();
bytes = utf8.GetBytes(requestJson);
request.set_ContentType("application/json");
request.set_ContentLength(bytes.get_Length());
requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.get_Length());
response = request.GetResponse();
stream = response.GetResponseStream();
streamReader = new System.IO.StreamReader(stream);
jsonResponse = streamReader.ReadToEnd().ToString();
return jsonResponse;
}
/// <summary>
/// Parse JSON and insert into staging table
/// </summary>
/// <param name = "Json"></param>
public static void jsonRead(System.String Json)
{
List paramAsList;
ListEnumerator le;
str jsonbreak,jsonRep;
container paramAsCon;
System.Exception ex;
int i;
boolean Success;
;
try
{
paramAsList = strSplit(Json, ",");
le = paramAsList.getEnumerator();
while(le.moveNext())
{
jsonRep = strReplace(strReplace(strReplace(strReplace(strReplace(le.current(),'"',''),'{',''),'}',''),']',''),'[','');
paramAsCon = str2con(jsonRep,":");
for (i=1;i<=conLen(paramAsCon);i++)
{
if(conPeek(paramAsCon, i) == 'ClientName')
{
projectSyncInboundStg.ClientName = (conPeek(paramAsCon, i+1));
}
else if(conPeek(paramAsCon, i) == 'ClientCode')
{
projectSyncInboundStg.ClientCode = (conPeek(paramAsCon, i+1));
}
else if(conPeek(paramAsCon, i) == 'ExpectedEndDate')
{
projectSyncInboundStg.ExpectedEndDate = str2Date(subStr(conPeek(paramAsCon, i+1),1, 10),321);
}
else if(strrem(conPeek(paramAsCon, i),'"') == 'CustomerKey')
{
Success = true;
}
}
if(Success)
{
projectSyncInboundStg.insert();
Success = false;
}
}
}
catch (Exception::CLRError)
{
ex = ClrInterop::getLastException();
if (ex != null)
{
ex = ex.get_InnerException();
if (ex != null)
{
ErrorMessage = ex.ToString();
}
}
}
info("Sync completed and data inserted to D365 staging");
}
}
No comments:
Post a Comment