[31m-- main is main file of main project written with Ada.[m
[31m-- Main is Copyright (C) 2025 Manuel De Girardi ; [m
[31m--[m
[31m--   This program is free software; you can redistribute it and/or modify[m
[31m--   it under the terms of the GNU General Public License as published by[m
[31m--   the Free Software Foundation; either version 2 of the License, or[m
[31m--   (at your option) any later version.[m
[31m--[m
[31m--   This program is distributed in the hope that it will be useful,[m
[31m--   but WITHOUT ANY WARRANTY; without even the implied warranty of[m
[31m--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the[m
[31m--   GNU General Public License for more details.[m
[31m--[m
[31m--   You should have received a copy of the GNU General Public License[m
[31m--   along with this program; if not, write to the Free Software[m
[31m--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA[m
[31m--[m
[31m-- Date := 2025-10-03 07:14:27 ; [m
[31m-- Version := 0.24.0a ; [m


[01;34mwith[m Aws[31m;[m
[01;34muse[m Aws[31m;[m

[01;34mwith[m Ada[31m.[mStrings[31m.[mUTF_Encoding[31m.[mStrings[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m.[mUTF_Encoding[31m.[mStrings[31m;[m
[01;34mwith[m Ada[31m.[mCharacters[31m.[mHandling[31m;[m
[01;34muse[m Ada[31m.[mCharacters[31m;[m

[01;34mwith[m AWS[31m.[mResponse[31m;[m
[01;34mwith[m AWS[31m.[mURL[31m;[m
[01;34mwith[m AWS[31m.[mUtils[31m;[m

[01;34mwith[m Aws[31m.[mClient[31m;[m
[01;34mwith[m AWS[31m.[mHeaders[31m;[m
[01;34mwith[m AWS[31m.[mHeaders[31m.[mSet[31m;[m
[01;34mpackage[m [01;34mbody[m M[31m.[mWeb [01;34mis[m
   
     [01;34mprocedure[m [01;30mWeb_Search[m[31m([mFrom_Domain_Name [31m:[m [01;34min[m     [32mString[m[31m;[m
		       With_Address     [31m:[m [01;34min[m     [32mString[m[31m;[m
		       Timeouts         [31m:[m [01;34min[m     [32mDuration[m[31m;[m
		       Result           [31m:[m    [01;34mout[m Search_Result_Type[31m)[m [01;34mis[m
     
      
      Data [31m:[m Response[31m.[mData[31m;[m
      Host_Header [31m:[m AWS[31m.[mClient[31m.[mHeader_List[31m;[m
      
      

  [01;34mbegin[m     
     AWS[31m.[mHeaders[31m.[mSet[31m.[m[01;30mAdd[m[31m([mHost_Header[31m,[m [31m"Host"[m[31m,[m From_Domain_Name[31m);[m
     
     [01;34mbegin[m
	
	Data [31m:=[m Aws[31m.[mClient[31m.[m[01;30mGet[m[31m([mWith_Address[31m,[m
			       Timeouts [31m=>[m AWS[31m.[mClient[31m.[mTimeouts
				 [31m([mEach [31m=>[m Timeouts[31m),[m 
			       Follow_Redirection [31m=>[m True[31m,[m
			       Headers [31m=>[m Host_Header[31m);[m
	
	[01;34mif[m [01;34mnot[m Response[31m.[m[01;30mIs_Empty[m[31m([mData[31m)[m [01;34mthen[m
	   [01;30mFree[m[31m([mResult[31m.[mDoc_Name[31m);[m
	   Result[31m.[mDoc_Name [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([mHandling[31m.[m[01;30mTo_Wide_String[m[31m([mResponse[31m.[m[01;30mHeader[m[31m([mData[31m,[m [31m"Content-Location"[m[31m,[m [35m1[m[31m)));[m
	   
	   
	   [01;34mdeclare[m
	      
	      Data_Body [31m:[m [01;34mconstant[m [32mWide_String[m [31m:=[m Handling[31m.[m[01;30mTo_Wide_String[m[31m([m[01;30mDecode[m[31m([mResponse[31m.[m[01;30mMessage_Body[m[31m([mData[31m)));[m
	      
	      End_Of_Line [31m:[m Natural [31m:=[m [35m0[m[31m;[m
	      Top         [31m:[m Natural [31m:=[m [35m1[m[31m;[m
	      Bot         [31m:[m [01;34mconstant[m Natural [31m:=[m Data_Body'Last[31m;[m
	      
	      Content_Index [31m:[m Natural [31m:=[m [35m0[m[31m;[m
	      
	      Content_Buffer [31m:[m Variadic_Access [31m:=[m [01;34mnew[m [01;30mVariadic_Array[m[31m([m[35m1[m[31m..[m[35m1[m[31m);[m
	      
	   [01;34mbegin[m
	      
	      [01;34mloop[m
		 End_Of_Line [31m:=[m [35m0[m[31m;[m
		 [01;34mfor[m I [01;34min[m Top[31m..[mBot [01;34mloop[m
		    [01;34mdeclare[m
		       Char [31m:[m [01;34mconstant[m Wide_Character [31m:=[m [01;30mData_Body[m[31m([mI[31m);[m
		    [01;34mbegin[m
		       [01;34mif[m Handling[31m.[m[01;30mIs_Line_terminator[m[31m([mHandling[31m.[m[01;30mTo_Character[m[31m([mChar[31m))[m [01;34mthen[m
			  End_Of_Line [31m:=[m I[31m;[m
			  [01;34mExit[m[31m;[m
		       [01;34mend[m [01;34mif[m[31m;[m
		    [01;34mend[m[31m;[m
		 [01;34mend[m [01;34mloop[m[31m;[m		  		  
		 
		 [01;34mif[m End_Of_Line [31m>[m [35m0[m [01;34mthen[m
		    [01;30mFree[m[31m([mContent_Buffer[31m);[m
		    Content_Buffer [31m:=[m [01;34mnew[m [01;30mVariadic_Array[m[31m([m[35m1[m[31m..[mContent_Index [31m+[m [35m1[m[31m);[m			
		    [01;34mif[m Content_Index [31m>[m [35m0[m [01;34mthen[m
		       [01;30mContent_Buffer[m[31m([m[35m1[m[31m..[mContent_Index[31m)[m [31m:=[m Result[31m.[mFile_Content[31m.[m[01;34mall[m[31m;[m
		    [01;34mend[m [01;34mif[m[31m;[m
		    [01;30mContent_Buffer[m[31m([mContent_Index[31m+[m[35m1[m[31m)[m [31m:=[m [31m"+"[m[31m([m[01;30mData_Body[m[31m([mTop[31m..[mEnd_Of_Line[31m-[m[35m1[m[31m));[m
		    [01;30mFree[m[31m([mResult[31m.[mFile_Content[31m);[m
		    Result[31m.[mFile_Content [31m:=[m [01;34mnew[m Variadic_Array ' [31m([mContent_Buffer[31m.[m[01;34mall[m[31m);[m
		    Content_Index [31m:=[m Content_Index [31m+[m [35m1[m[31m;[m
		    Top [31m:=[m End_Of_Line [31m+[m [35m1[m[31m;[m
		    [01;30mFree[m[31m([mContent_Buffer[31m);[m
		 [01;34melse[m		     
		    [01;30mFree[m[31m([mContent_Buffer[31m);[m
		    Content_Buffer [31m:=[m [01;34mnew[m [01;30mVariadic_Array[m[31m([m[35m1[m[31m..[mContent_Index [31m+[m [35m1[m[31m);[m
		    [01;34mif[m Content_Index [31m>[m [35m0[m [01;34mthen[m
		       [01;30mContent_Buffer[m[31m([m[35m1[m[31m..[mContent_Index[31m)[m [31m:=[m Result[31m.[mFile_Content[31m.[m[01;34mall[m[31m;[m
		    [01;34mend[m [01;34mif[m[31m;[m
		    [01;30mContent_Buffer[m[31m([mContent_Index[31m+[m[35m1[m[31m)[m [31m:=[m [31m"+"[m[31m([m[01;30mData_Body[m[31m([mTop[31m..[mbot[31m));[m
		    [01;30mFree[m[31m([mResult[31m.[mFile_Content[31m);[m
		    Result[31m.[mFile_Content [31m:=[m [01;34mnew[m Variadic_Array ' [31m([mContent_Buffer[31m.[m[01;34mall[m[31m);[m
		    [01;30mFree[m[31m([mContent_Buffer[31m);[m
		    [01;34mexit[m[31m;[m
		 [01;34mend[m [01;34mif[m[31m;[m
		 
	      [01;34mend[m [01;34mloop[m[31m;[m
	      
	      
	   [01;34mend[m[31m;[m
	[01;34melse[m
	   [01;30mFree[m[31m([mResult[31m.[mFile_Content[31m);[m
	   Result[31m.[mFile_Content [31m:=[m [01;34mnew[m Variadic_Array ' [31m([m[35m1[m [31m=>[m [31m+([m[31m"No Data in Web page."[m[31m));[m
	   
	[01;34mend[m [01;34mif[m[31m;[m

	
     [01;34mend[m[31m;[m
     
  [01;34mend[m Web_Search[31m;[m

[01;34mend[m M[31m.[mWeb[31m;[m
