lib/parser/du_state_change_complete.ex

defmodule CWMP.Protocol.Parser.Messages.DUStateChangeComplete do

  use CWMP.Protocol.ParserHelpers
  alias CWMP.Protocol.Messages.DUStateChangeComplete

  def initial_acc do
    %DUStateChangeComplete{}
  end

  def start_element(state, ['OpResultStruct', 'Results'], _attribs, _uri) do
    push_handler(state, CWMP.Protocol.Parser.Messages.OpResultStruct)
  end

  def end_element(state, ['OpResultStruct', 'Results']) do
    update_acc(state, fn acc -> %DUStateChangeComplete{acc | results: acc.results ++ [state.last_acc]} end)
  end

  def end_element(state, ['CommandKey']) do
    update_acc(state, fn cur -> %DUStateChangeComplete{cur | commandkey: state.last_text} end)
  end

end