/// <summary> /// Try to parse the given XML representation of an OICP push EVSE status request. /// </summary> /// <param name="PushEVSEStatusXML">The XML to parse.</param> /// <param name="PushEVSEStatus">The parsed push EVSE status request.</param> /// <param name="CustomOperatorEVSEStatusParser">A delegate to parse custom OperatorEVSEStatus XML elements.</param> /// <param name="CustomEVSEStatusRecordParser">A delegate to parse custom EVSEStatusRecord XML elements.</param> /// <param name="OnException">An optional delegate called whenever an exception occured.</param> /// /// <param name="Timestamp">The optional timestamp of the request.</param> /// <param name="CancellationToken">An optional token to cancel this request.</param> /// <param name="EventTrackingId">An optional event tracking identification for correlating this request with other events.</param> /// <param name="RequestTimeout">An optional timeout for this request.</param> public static Boolean TryParse(XElement PushEVSEStatusXML, out PushEVSEStatusRequest PushEVSEStatus, CustomXMLParserDelegate <OperatorEVSEStatus> CustomOperatorEVSEStatusParser = null, CustomXMLParserDelegate <EVSEStatusRecord> CustomEVSEStatusRecordParser = null, OnExceptionDelegate OnException = null, DateTime?Timestamp = null, CancellationToken?CancellationToken = null, EventTracking_Id EventTrackingId = null, TimeSpan?RequestTimeout = null) { try { if (PushEVSEStatusXML.Name != OICPNS.EVSEStatus + "eRoamingPushEvseStatus") { PushEVSEStatus = null; return(false); } PushEVSEStatus = new PushEVSEStatusRequest( OperatorEVSEStatus.Parse(PushEVSEStatusXML.ElementOrFail(OICPNS.EVSEStatus + "OperatorEvseStatus"), CustomOperatorEVSEStatusParser, CustomEVSEStatusRecordParser, OnException), PushEVSEStatusXML.MapValueOrFail(OICPNS.EVSEStatus + "ActionType", ActionTypesExtentions.Parse), Timestamp, CancellationToken, EventTrackingId, RequestTimeout ); return(true); } catch (Exception e) { OnException?.Invoke(DateTime.UtcNow, PushEVSEStatusXML, e); PushEVSEStatus = null; return(false); } }
/// <summary> /// Create an OICP PushEVSEStatus XML/SOAP request. /// </summary> /// <param name="OperatorEVSEStatus">An operator EVSE status.</param> /// <param name="Action">The server-side data management operation.</param> /// /// <param name="Timestamp">The optional timestamp of the request.</param> /// <param name="CancellationToken">An optional token to cancel this request.</param> /// <param name="EventTrackingId">An optional event tracking identification for correlating this request with other events.</param> /// <param name="RequestTimeout">An optional timeout for this request.</param> public PushEVSEStatusRequest(OperatorEVSEStatus OperatorEVSEStatus, ActionTypes Action = ActionTypes.update, DateTime?Timestamp = null, CancellationToken?CancellationToken = null, EventTracking_Id EventTrackingId = null, TimeSpan?RequestTimeout = null) : base(Timestamp, CancellationToken, EventTrackingId, RequestTimeout) { this.OperatorEVSEStatus = OperatorEVSEStatus ?? throw new ArgumentNullException(nameof(OperatorEVSEStatus), "The given OperatorEVSEStatus must not be null!"); this.Action = Action; }
PushEVSEStatus(this ICPOClient ICPOClient, OperatorEVSEStatus OperatorEVSEStatus, ActionTypes Action = ActionTypes.update, DateTime?Timestamp = null, CancellationToken?CancellationToken = null, EventTracking_Id EventTrackingId = null, TimeSpan?RequestTimeout = null) => ICPOClient.PushEVSEStatus(new PushEVSEStatusRequest(OperatorEVSEStatus, Action, Timestamp, CancellationToken, EventTrackingId, RequestTimeout ?? ICPOClient.RequestTimeout));
/// <summary> /// Return a XML representation of this object. /// </summary> /// <param name="CustomPushEVSEStatusRequestSerializer">A delegate to customize the serialization of PushEVSEStatus requests.</param> /// <param name="OperatorEVSEStatusXName">The OperatorEVSEStatus XML name to use.</param> /// <param name="CustomOperatorEVSEStatusSerializer">A delegate to serialize custom OperatorEVSEStatus XML elements.</param> /// <param name="EVSEStatusRecordXName">The EVSEStatusRecord XML name to use.</param> /// <param name="CustomEVSEStatusRecordSerializer">A delegate to serialize custom EVSEStatusRecord XML elements.</param> public XElement ToXML(CustomXMLSerializerDelegate <PushEVSEStatusRequest> CustomPushEVSEStatusRequestSerializer = null, XName OperatorEVSEStatusXName = null, CustomXMLSerializerDelegate <OperatorEVSEStatus> CustomOperatorEVSEStatusSerializer = null, XName EVSEStatusRecordXName = null, CustomXMLSerializerDelegate <EVSEStatusRecord> CustomEVSEStatusRecordSerializer = null) { var XML = new XElement(OICPNS.EVSEStatus + "eRoamingPushEvseStatus", new XElement(OICPNS.EVSEStatus + "ActionType", Action.AsString()), OperatorEVSEStatus.ToXML(OperatorEVSEStatusXName, CustomOperatorEVSEStatusSerializer, EVSEStatusRecordXName, CustomEVSEStatusRecordSerializer) ); return(CustomPushEVSEStatusRequestSerializer != null ? CustomPushEVSEStatusRequestSerializer(this, XML) : XML); }