#property link “https://www.mql5.com”
#property version “1.00”
#property strict
#property script_show_inputs
#property description “Sample script posting a user message “
#property description “on the wall on mql5.com”
input string InpLogin =“”; //Your MQL5.com account
input string InpPassword=“”; //Your account password
input string InpFileName=“EURUSDM5.png”; //An image in folder MQL5/Files/
input string InpFileType=“image/png”; //Correct mime type of the image
//+——————————————————————+
//| Posting a message with an image on the wall at mql5.com |
//+——————————————————————+
bool PostToNewsFeed(string login,string password,string text,string filename,string filetype)
{
int res; // To receive the operation execution result
char data[]; // Data array to send POST requests
char file[]; // Read the image here
string str=“Login=”+login+“&Password=”+password;
string auth,sep=“——-Jyecslin9mp8RdKV”; // multipart data separator
//— A file is available, try to read it
if(filename!=NULL && filename!=“”)
{
res=FileOpen(filename,FILE_READ|FILE_BIN);
if(res<0)
{
Print(“Error opening the file \””+filename+”\“”);
return(false);
}
//— Read file data
if(FileReadArray(res,file)!=FileSize(res))
{
FileClose(res);
Print(“Error reading the file \””+filename+”\“”);
return(false);
}
//—
FileClose(res);
}
//— Create the body of the POST request for authorization
ArrayResize(data,StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8)-1);
//— Resetting error code
ResetLastError();
//— Authorization request
res=WebRequest(“POST”,“https://www.mql5.com/en/auth_login”,NULL,0,data,data,str);
//— If authorization failed
if(res!=200)
{
Print(“Authorization error #”+(string)res+“, LastError=”+(string)GetLastError());
return(false);
}
//— Read the authorization cookie from the server response header
res=StringFind(str,“Set-Cookie: auth=”);
//— If cookie not found, return an error
if(res<0)
{
Print(“Error, authorization data not found in the server response (check login/password)”);
return(false);
}
//— Remember the authorization data and form the header for further requests
auth=StringSubstr(str,res+12);
auth=“Cookie: “+StringSubstr(auth,0,StringFind(auth,“;”)+1)+“\r\n”;
//— If there is a data file, send it to the server
if(ArraySize(file)!=0)
{
//— Form the request body
str=“–“+sep+“\r\n”;
str+=“Content-Disposition: form-data; name=\”attachedFile_imagesLoader\“; filename=\””+filename+”\“\r\n”;
str+=“Content-Type: “+filetype+“\r\n\r\n”;
res =StringToCharArray(str,data);
res+=ArrayCopy(data,file,res-1,0);
res+=StringToCharArray(“\r\n–“+sep+“–\r\n”,data,res-1);
ArrayResize(data,ArraySize(data)-1);
//— Form the request header
str=auth+“Content-Type: multipart/form-data; boundary=”+sep+“\r\n”;
//— Reset error code
ResetLastError();
//— Request to send an image file to the server
res=WebRequest(“POST”,“https://www.mql5.com/upload_file”,str,0,data,data,str);
//— check the request result
if(res!=200)
{
Print(“Error sending a file to the server #”+(string)res+“, LastError=”+(string)GetLastError());
return(false);
}
//— Receive a link to the image uploaded to the server
str=CharArrayToString(data);
if(StringFind(str,“{\”Url\“:\””)==0)
{
res =StringFind(str,“\””,8);
filename=StringSubstr(str,8,res-8);
//— If file uploading fails, an empty link will be returned
if(filename==“”)
{
Print(“File sending to server failed”);
return(false);
}
}
}
//— Create the body of a request to post an image on the server
str =“–“+sep+“\r\n”;
str+=“Content-Disposition: form-data; name=\”content\“\r\n\r\n”;
str+=text+“\r\n”;
//— The languages in which the post will be available on mql5.com
str+=“–“+sep+“\r\n”;
str+=“Content-Disposition: form-data; name=\”AllLanguages\“\r\n\r\n”;
str+=“on\r\n”;
//— If the picture has been uploaded on the server, pass its link
if(ArraySize(file)!=0)
{
str+=“–“+sep+“\r\n”;
str+=“Content-Disposition: form-data; name=\”attachedImage_0\“\r\n\r\n”;
str+=filename+“\r\n”;
}
//— The final string of the multipart request
str+=“–“+sep+“–\r\n”;
//— Out the body of the POST request together in one string
StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8);
ArrayResize(data,ArraySize(data)-1);
//— Prepare the request header
str=auth+“Content-Type: multipart/form-data; boundary=”+sep+“\r\n”;
//— Request to post a message on the user wall at mql5.com
res=WebRequest(“POST”,“https://www.mql5.com/enusers/”+login+“/wall”,str,0,data,data,str);
//— Return true for successful execution
return(res==200);
}
//+——————————————————————+
//| Script program start function |
//+——————————————————————+
void OnStart()
{
//— Post a message on mql5.com, including an image, the path to which is taken from the InpFileName parameter
PostToNewsFeed(InpLogin,InpPassword,“Checking the expanded version of WebRequest\r\n”
“(This message has been posted by the WebRequest.mq5 script)”,InpFileName,InpFileType);
}
//+——————————————————————+
|