public ErrorCodeValue Bind(uint flags, STAT stat, ref FlatUID_r? serverGuid)
{
ErrorCodeValue result;
BindRequestBody bindRequestBody = this.BuildBindRequestBody(stat, flags);
byte[] rawBuffer = null;
ChunkedResponse chunkedResponse = null;
BindResponseBody bindResponseBody = null;
// Send the execute HTTP request and get the response
HttpWebResponse response = MapiHttpAdapter.SendMAPIHttpRequest(this.site, this.addressBookUrl, this.userName, this.domainName, this.password, bindRequestBody, RequestType.Bind.ToString(), AdapterHelper.SessionContextCookies);
// Read the HTTP response buffer and parse the response to correct format
rawBuffer = MapiHttpAdapter.ReadHttpResponse(response);
result = (ErrorCodeValue)int.Parse(response.Headers["X-ResponseCode"]);
if (result == ErrorCodeValue.Success)
{
chunkedResponse = ChunkedResponse.ParseChunkedResponse(rawBuffer);
bindResponseBody = BindResponseBody.Parse(chunkedResponse.ResponseBodyRawData);
result = (ErrorCodeValue)bindResponseBody.ErrorCode;
if (bindResponseBody.ServerGuid != null)
{
FlatUID_r newGuid = new FlatUID_r();
newGuid.Ab = bindResponseBody.ServerGuid.ToByteArray();
serverGuid = newGuid;
}
else
{
serverGuid = null;
}
}
response.GetResponseStream().Close();
AdapterHelper.SessionContextCookies = response.Cookies;
return result;
}