lib/parser/autonomous_transfer_complete.ex

defmodule CWMP.Protocol.Parser.Messages.AutonomousTransferComplete do

  use CWMP.Protocol.ParserHelpers
  alias CWMP.Protocol.Messages.AutonomousTransferComplete

  def initial_acc do
    %AutonomousTransferComplete{}
  end

  def start_element(state, ['FaultStruct'], _attribs, _uri) do
    push_handler(state, FaultStruct)
  end

  def end_element(state, ['FaultStruct']) do
    update_acc(state, fn acc -> %AutonomousTransferComplete{acc | fault_struct: state.last_acc} end)
  end

  def end_element(state, ['StartTime']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | start_time: datetimeStructure(state.last_text)} end)
  end

  def end_element(state, ['CompleteTime']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | complete_time: datetimeStructure(state.last_text)} end)
  end

  def end_element(state, ['AnnounceURL']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | announce_url: state.last_text} end)
  end

  def end_element(state, ['TransferURL']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | transfer_url: state.last_text} end)
  end

  def end_element(state, ['FileType']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | filetype: state.last_text} end)
  end

  def end_element(state, ['FileSize']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | filesize: integerValue(state.last_text, fn(x) -> x >= 0 end)} end)
  end

  def end_element(state, ['TargetFileName']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | target_filename: state.last_text} end)
  end

  def end_element(state, ['IsDownload']) do
    update_acc(state, fn cur -> %AutonomousTransferComplete{cur | is_download: boolValue(state.last_text)} end)
  end
end