-------------------------------------------------------------------------------- -- Title: MIMEMultipart.lua -- Description: Like a square peg in a round hole -- Author: Raphaël Szwarc http://alt.textdrive.com/lua/ -- Creation Date: February 1, 2005 -- Legal: Copyright (C) 2005 Raphaël Szwarc -------------------------------------------------------------------------------- -- import dependencies local MIME = require( "MIME" ) local LUList = require( "LUList" ) -- define the class local super = MIME local self = super() function self:headers() return self:parent():headers() end function self:boundary() local someHeaders = self:headers() local anHeader = someHeaders:getHeader( "content-type" ) local someParameters = anHeader:parameters() return someParameters:get( "boundary" ) end function self:content() if self._content == nil then local someParts = LUList() local aRawContent = self:rawContent() local aBoundary = "\r\n--" .. self:boundary() local aLength = aBoundary:len() local aStart = self:startIndex() local anEnd = self:endIndex() while true do aStart = aRawContent:find( aBoundary, aStart, true ) if aStart ~= nil then aStart = aStart + aLength anEnd = aRawContent:find( aBoundary, aStart, true ) if anEnd ~= nil then aStart = aRawContent:find( "\r\n", aStart, true ) + 2 someParts:add( MIME( aRawContent, aStart, anEnd - 1, self ) ) aStart = anEnd else break end else break end end self._content = someParts end return self._content end return self