מה תרצה/י לחפש?
תאריכים
השוואת תאריכים
על מנת להשוות תאריכים ב WSO2 יש להוסיף קוד JS פשוט שיקבל את נתוני המשתנים שמחזיקים את התאריכים אותם צריך להשוות.
בנוסף, יש צורך במשתנה שיכיל את תוצאת ההשוואה בין התאריכים
<?xml version="1.0" encoding="UTF-8"?>
<api context="/getSamplePayload" name="getSamplePayload" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="GET">
<inSequence>
<log level="full"/>
<property name="date1" scope="default" type="STRING" value="2022-11-06 13:23:44.000"/>
<property name="date2" scope="default" type="STRING" value="2022-11-04 13:23:44.000"/>
<property name="dateDiff" scope="default" type="STRING" value=""/>
<script language="nashornJs"><![CDATA[var date1 = new Date(mc.getProperty('date1'));
var date2 = new Date(mc.getProperty('date2'));
var second=1000, minute=second*60, hour=minute*60, day=hour*24, week=day*7;
var difference = 0;
difference = (date2 - date1) / day;
mc.setProperty('dateDiff',difference);]]></script>
<payloadFactory media-type="json">
<format>{"Result":"$1"}</format>
<args>
<arg evaluator="xml" expression="get-property('dateDiff')"/>
</args>
</payloadFactory>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
בדוגמה זו ביצענו השוואה בין שני תאריכים עם הצגה של הבדל בימים.
במידה ונרצה לקבל את התוצאה בשבועות/שעות/שניות, יש צורך להחליף את הערך הרלוונטי בחישוב difference (שורה 13)
שימוש בתאריך של היום
ניתן להשתמש בתאריך הנוכחי באמצעות יצירת Property מסוג SYSTEM-DATE.
להלן דוגמת קוד השותלת את התאריך הנוכחי בפרמטר 'To':
<?xml version="1.0" encoding="UTF-8"?>
<api context="/getSamplePayload" name="getSamplePayload" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="GET">
<inSequence>
<property expression="get-property('SYSTEM_DATE', 'yyyy-MM-dd')" name="currentDate" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format>
{"from": "2023-03-19", "to": "$1"}
</format>
<args>
<arg expression="get-property('currentDate')"/>
</args>
</payloadFactory>
<call>
<endpoint>
<http method="post" uri-template="https://exampleservice.com/example">
</http>
</endpoint>
</call>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>