class WcoEmail::Message

def churn_subpart part

"text/calendar; charset=utf-8; method=REQUEST"
"text/plain; charset=UTF-8"
"text/html; charset=utf-8"
"multipart/alternative; boundary=_000_BL0PR10MB2913C560ADE059F0AB3A6D11829A9BL0PR10MB2913namp_",
"image/png; name=image005.png"
"image/jpeg; name=TX_DL_2.jpg"
"application/pdf; name=\"Securities Forward Agreement -- HaulHub Inc -- Victor Pudeyev -- 2021-10-26.docx.pdf\""
# Content Types:

"inline; creation-date=\"Tue, 11 Apr 2023 19:39:42 GMT\"; filename=image005.png; modification-date=\"Tue, 11 Apr 2023 19:47:53 GMT\"; size=14916",
# Content dispositions:
# For recursive parts of type `related`.
def churn_subpart part
  if part.content_disposition&.include?('attachment')
    save_attachment( part, filename: "subpart-attachment" )
  else
    if part.content_type.include?("multipart")
      part.parts.each do |subpart|
        churn_subpart( subpart )
      end
    else
      if part.content_type.include?('text/html')
        self.part_html = strip_emoji( part.decoded )
      elsif part.content_type.include?("text/plain")
        self.part_txt = part.decoded
      elsif part.content_type.include?("text/calendar")
        save_attachment( part, filename: 'subpart-calendar.ics' )
      elsif part.content_type.include?("application/pdf")
        save_attachment( part, filename: 'subpart.pdf' )
      elsif part.content_type.include?("image/jpeg")
        save_attachment( part, filename: 'subpart.jpg' )
      elsif part.content_type.include?("image/png")
        save_attachment( part, filename: 'subpart.png' )
      else
        save_attachment( part, filename: 'subpart-unspecified' )
        self.logs.push "444 No action for a part with content_type #{part.content_type}"
      end
    end
  end
end