2
0
Эх сурвалжийг харах

Rename imapId -> id, id -> contentId
Add findById, hasAttachment

Pascal Peridont 19 жил өмнө
parent
commit
a8d510ecde

+ 18 - 5
std/mtwin/mail/imap/BodyStructure.hx

@@ -31,7 +31,8 @@ class BodyStructure {
 	public var parts(default,null): List<BodyStructure>;
 
 	// single-part specific
-	public var id(default,null): String;
+	public var id(default,null) : String;
+	public var contentId(default,null): String;
 	public var description(default,null) : String;
 	public var encoding(default,null) : String;
 	public var size(default,null) : Int;
@@ -40,7 +41,6 @@ class BodyStructure {
 
 	//
 	public var __length : Int;
-	public var imapId : String;
 
 	public function new(){
 		parts = new List();
@@ -103,13 +103,26 @@ class BodyStructure {
 		return ret;
 	}
 
+	public function hasAttachment(){
+		return listAttachment().length > 0;
+	}
+
+	public function findById( contentId : String ) : BodyStructure {
+		if( this.contentId == contentId ) return this;
+		for( part in parts ){
+			var r = part.findById( contentId );
+			if( r != null ) return r;
+		}
+		return null;
+	}
+
 	public static function parse( s : String, ?id : String ) : BodyStructure{
 		if( id == null ) id = "";
 		var len = s.length;
 		var parCount = 0;
 		var p = 0;
 		var ret = new BodyStructure();
-		ret.imapId = id;
+		ret.id = id;
 		var addPart = function( p ){
 			ret.parts.add( p );
 		};
@@ -144,7 +157,7 @@ class BodyStructure {
 								tmp.pName = null;
 							}
 						case 2:
-							ret.id = e;
+							ret.contentId = e;
 						case 3:
 							ret.description = e;
 						case 4:
@@ -200,7 +213,7 @@ class BodyStructure {
 						b.add( c2 );
 						prev = c2;
 					}
-					addElement( b.toString() );
+					addElement( b.toString().split("\\\"").join("\"").split("\\\\").join("\\") );
 				case " ":
 					if( parCount == 0 ){
 						tmp.argPos++;