STREAM *HTTPMethod(char *Method, char *URL, char *Logon, char *Password, char *ContentType, char *ContentData, int ContentLength) { HTTPInfoStruct *Info; STREAM *S; Info=HTTPInfoFromURL(Method, URL); if (StrLen(ContentType)) { Info->PostContentType=CopyStr(Info->PostContentType,ContentType); Info->PostData=CopyStr(Info->PostData,ContentData); Info->PostContentLength=ContentLength; } if (StrLen(Logon) || StrLen(Password)) { if (! Info->Authorization) Info->Authorization=(HTTPAuthStruct *) calloc(1,sizeof(HTTPAuthStruct)); if (Logon==HTTP_AUTH_BY_TOKEN) HTTPAuthSet(Info->Authorization,"", Password, HTTP_AUTH_TOKEN); else HTTPAuthSet(Info->Authorization,Logon, Password, HTTP_AUTH_BASIC); } S=HTTPTransact(Info); HTTPInfoDestroy(Info); return(S); }
STREAM *IDriveOpenFile(TFileStore *FS, TFileInfo *FI, int Flags) { char *URL=NULL, *Tempstr=NULL, *Boundary=NULL, *FullPath=NULL, *ptr; HTTPInfoStruct *Info; TFileInfo *tmpFI; if (Flags & OPEN_WRITE) { URL=MCopyStr(URL,"https://",FS->Host,"/evs/uploadFile",NULL); Info=HTTPInfoFromURL("POST",URL); Boundary=FormatStr(Boundary,"%x-%x-%x",getpid(),time(NULL),rand()); Info->PostContentType=MCopyStr(Info->ContentType,"multipart/form-data; boundary=",Boundary,NULL); Tempstr=MCopyStr(Tempstr,"--",Boundary,"\r\n","Content-disposition: form-data; name=uid\r\n\r\n",FS->Logon,"\r\n",NULL); Tempstr=MCatStr(Tempstr,"--",Boundary,"\r\n","Content-disposition: form-data; name=pwd\r\n\r\n",FS->Passwd,"\r\n",NULL); Tempstr=MCatStr(Tempstr,"--",Boundary,"\r\n","Content-disposition: form-data; name=p\r\n\r\n",FS->CurrDir,"\r\n",NULL); //Tempstr=MCatStr(Tempstr,"--",Boundary,"\r\n","Content-disposition: form-data; name=myfiles\r\n\r\n",Path,"\r\n",NULL); Tempstr=MCatStr(Tempstr,"--",Boundary,"\r\n","Content-disposition: form-data; charset=UTF-8; name=definition; filename=",FI->Path,"\r\nContent-type: image/jpeg\r\n\r\n",NULL); Info->PostContentLength=FI->Size+StrLen(Tempstr)+StrLen(Boundary)+8; FS->S=HTTPTransact(Info); FS->Extra=Info; STREAMWriteLine(Tempstr,FS->S); STREAMSetValue(FS->S,"Boundary",Boundary); Tempstr=FormatStr(Tempstr,"%d",FI->Size); STREAMSetValue(FS->S,"Transfer-Size",Tempstr); } else { if (*FI->Path=='/') FullPath=CopyStr(FullPath,FI->Path); else FullPath=MCopyStr(FullPath,FS->CurrDir,FI->Path,NULL); Tempstr=HTTPQuote(Tempstr,FullPath); // if (OpenFI->Version) FI=OpenFI; // else FI=FileStoreGetFileInfo(FS, FI->Path); URL=FormatStr(URL,"https://%s/evs/downloadFile?uid=%s&pwd=%s&p=%s&version=%d",FS->Host,FS->Logon,FS->Passwd,Tempstr,FI->Version); FS->S=HTTPMethod("POST",URL,"","","","",0); FS->Extra=NULL; // if (FI != OpenFI) FileInfoDestroy(FI); } DestroyString(URL); DestroyString(FullPath); DestroyString(Tempstr); DestroyString(Boundary); return(FS->S); }
STREAM *HTTPMethod(char *Method, char *URL, char *Logon, char *Password) { HTTPInfoStruct *Info; STREAM *S; Info=HTTPInfoFromURL(Method, URL); if (StrLen(Logon) || StrLen(Password)) { if (! Info->Authorization) Info->Authorization=(HTTPAuthStruct *) calloc(1,sizeof(HTTPAuthStruct)); HTTPAuthSet(Info->Authorization,Logon, Password, HTTP_AUTH_BASIC); } S=HTTPTransact(Info); HTTPInfoDestroy(Info); return(S); }
STREAM *HTTPPost(char *URL, char *Logon, char *Password, char *ContentType, char *Content) { HTTPInfoStruct *Info; STREAM *S; Info=HTTPInfoFromURL("POST", URL); Info->PostContentType=CopyStr(Info->PostContentType,ContentType); Info->PostData=CopyStr(Info->PostData,Content); Info->PostContentLength=StrLen(Content); if (StrLen(Logon) || StrLen(Password)) { if (! Info->Authorization) Info->Authorization=(HTTPAuthStruct *) calloc(1,sizeof(HTTPAuthStruct)); HTTPAuthSet(Info->Authorization,Logon, Password, HTTP_AUTH_BASIC); } S=HTTPTransact(Info); HTTPInfoDestroy(Info); return(S); }
int OAuthImplicit(OAUTH *Ctx, const char *URL, const char *Args) { HTTPInfoStruct *Info; char *Tempstr=NULL; int result=FALSE; STREAM *S; Tempstr=MCopyStr(Tempstr,URL,"?",Args,NULL); Info=HTTPInfoFromURL("GET", Tempstr); //Info->Flags |= HTTP_NOREDIRECT; S=HTTPTransact(Info); if (S) { if (StrValid(Info->RedirectPath)) result=OAuthParseReply(Ctx, "url", Info->RedirectPath); } STREAMClose(S); DestroyString(Tempstr); return(result); }