OSDN Git Service

・スレ立てを実装。
authoryoffy <yoffy>
Mon, 17 Nov 2003 15:57:32 +0000 (15:57 +0000)
committeryoffy <yoffy>
Mon, 17 Nov 2003 15:57:32 +0000 (15:57 +0000)
res/ExternalBoardPlugIn/MachiBBSPlugIn.dpr
res/ExternalBoardPlugIn/ShitarabaPlugIn.dpr

index 33e2c4e..2b82c9d 100644 (file)
@@ -53,6 +53,7 @@ type
 
        private
                function        Download : TDownloadState;
+               function        CreateThread( inSubject : string; inName : string; inMail : string; inMessage : string ) : TDownloadState;
                function        ToThreadURL( inFileName : string ) : string;
                procedure       EnumThread( inCallBack : TBoardItemEnumThreadCallBack );
 
@@ -76,7 +77,7 @@ const
        MAJOR_VERSION                   = 1;
        MINOR_VERSION                   = 0;
        RELEASE_VERSION         = 'beta';
-       REVISION_VERSION        = 2;
+       REVISION_VERSION        = 3;
 
 // =========================================================================
 // \8eG\97p\8aÖ\90\94
@@ -734,6 +735,7 @@ begin
        inherited;
 
        OnDownload                                              := Download;
+       OnCreateThread                          := CreateThread;
        OnEnumThread                                    := EnumThread;
        OnFileName2ThreadURL    := ToThreadURL;
 
@@ -843,6 +845,52 @@ begin
 end;
 
 // *************************************************************************
+// \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
+// *************************************************************************
+function       TMachiBBSBoardItem.CreateThread(
+       inSubject                       : string;       // \83X\83\8c\83^\83C
+       inName                          : string;       // \96¼\91O(\83n\83\93\83h\83\8b)
+       inMail                          : string;       // \83\81\81[\83\8b\83A\83h\83\8c\83X
+       inMessage                       : string        // \96{\95
+) : TDownloadState;                            // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
+var
+       postURL                         : string;
+       postData                        : string;
+       postResult              : PChar;
+       uri                                             : TIdURI;
+       uriList                         : TStringList;
+begin
+
+       uri                     := TIdURI.Create( URL );
+       uriList := TStringList.Create;
+       try
+               ExtractHttpFields(
+                       ['&'], [],
+                       Copy( uri.Params, Pos( '?', uri.Params ) + 1, Length( uri.Params ) ), uriList );
+
+               postURL         := uri.Protocol + '://' + uri.Host + '/bbs/write.cgi';
+               postData        :=
+                       'SUBJECT='      + HttpEncode( inSubject ) +
+                       '&NAME='                + HttpEncode( inName ) +
+                       '&MAIL='                + HttpEncode( inMail ) +
+                       '&MESSAGE='     + HttpEncode( inMessage ) +
+                       '&BBS='                 + uriList[ 1 ] +
+                       '&TIME='                + IntToStr( DateTimeToUnix( Now ) ) +
+                       '&submit='      + HttpEncode( '\90V\8bK\8f\91\82«\8d\9e\82Ý' );
+
+               // \93Æ\8e©\82É\92Ê\90M\82µ\82È\82¢\8fê\8d\87\82Í InternalPost \82É\94C\82¹\82é\82±\82Æ\82ª\8fo\97\88\82é
+               InternalPost( PChar( postURL ), PChar( postData ), postResult );
+               DisposeResultString( postResult );
+
+               Result := dsComplete
+       finally
+               uri.Free;
+               uriList.Free;
+       end;
+
+end;
+
+// *************************************************************************
 // \83X\83\8c\88ê\97\97\82Ì URL \82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\93±\82«\8fo\82·
 // *************************************************************************
 function TMachiBBSBoardItem.ToThreadURL(
index cc86a5f..053fe25 100644 (file)
@@ -54,6 +54,7 @@ type
 
        private
                function        Download : TDownloadState;
+               function        CreateThread( inSubject : string; inName : string; inMail : string; inMessage : string ) : TDownloadState;
                function        ToThreadURL( inFileName : string ) : string;
                procedure       EnumThread( inCallBack : TBoardItemEnumThreadCallBack );
 
@@ -68,7 +69,7 @@ const
        MAJOR_VERSION                   = 1;
        MINOR_VERSION                   = 0;
        RELEASE_VERSION         = 'beta';
-       REVISION_VERSION        = 3;
+       REVISION_VERSION        = 4;
 
 // =========================================================================
 // \8eG\97p\8aÖ\90\94
@@ -733,6 +734,7 @@ begin
        inherited;
 
        OnDownload                                              := Download;
+       OnCreateThread                          := CreateThread;
        OnEnumThread                                    := EnumThread;
        OnFileName2ThreadURL    := ToThreadURL;
 
@@ -843,6 +845,55 @@ begin
 end;
 
 // *************************************************************************
+// \8f\91\82«\8d\9e\82Ý\82ð\8ew\8e¦\82³\82ê\82½
+// *************************************************************************
+function       TShitarabaBoardItem.CreateThread(
+       inSubject                       : string;       // \83X\83\8c\83^\83C
+       inName                          : string;       // \96¼\91O(\83n\83\93\83h\83\8b)
+       inMail                          : string;       // \83\81\81[\83\8b\83A\83h\83\8c\83X
+       inMessage                       : string        // \96{\95
+) : TDownloadState;                            // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
+var
+       postURL                         : string;
+       postData                        : string;
+       postResult              : PChar;
+       uri                                             : TIdURI;
+       uriList                         : TStringList;
+begin
+
+       uri                     := TIdURI.Create( URL );
+       uriList := TStringList.Create;
+       try
+               ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+
+               // http://jbbs.shitaraba.com/bbs/write.cgi/game/1578/new/
+               // http://jbbs.shitaraba.com/game/1000/subject.txt
+               postURL         :=
+                       uri.Protocol + '://' + uri.Host + '/bbs/write.cgi/' +
+                       uriList[ 1 ] + '/' + uriList[ 2 ] + '/new/';
+               postData        :=
+                       'SUBJECT='      + HttpEncode( SJIStoEUC( inSubject ) ) +
+                       '&NAME='                + HttpEncode( SJIStoEUC( inName ) ) +
+                       '&MAIL='                + HttpEncode( SJIStoEUC( inMail ) ) +
+                       '&MESSAGE='     + HttpEncode( SJIStoEUC( inMessage ) ) +
+                       '&BBS='                 + uriList[ 4 ] +
+                       '&DIR='                 + uriList[ 3 ] +
+                       '&TIME='                + IntToStr( DateTimeToUnix( Now ) ) +
+                       '&submit='      + HttpEncode( SJIStoEUC( '\90V\8bK\8f\91\82«\8d\9e\82Ý' ) );
+
+               // \93Æ\8e©\82É\92Ê\90M\82µ\82È\82¢\8fê\8d\87\82Í InternalPost \82É\94C\82¹\82é\82±\82Æ\82ª\8fo\97\88\82é
+               InternalPost( PChar( postURL ), PChar( postData ), postResult );
+               DisposeResultString( postResult );
+
+               Result := dsComplete
+       finally
+               uri.Free;
+               uriList.Free;
+       end;
+
+end;
+
+// *************************************************************************
 // \83X\83\8c\88ê\97\97\82Ì URL \82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\93±\82«\8fo\82·
 // *************************************************************************
 function TShitarabaBoardItem.ToThreadURL(