For apps such as facebook, twitter or any other having an user account, we might require then to set or update their profile picture. The code below will help you to perform a POST operation to upload the image into an REST API. Since RestSharp at this point doesn’t contain an asynchronous Execute, I have defined a class to achieve this.
public async Task fileUpload(String FileName, byte[] image)
{
try
{
RestClient client = new RestClient(“http://baseurl.com/”);
RestSharpExtension newextension = new RestSharpEextension();
client.Authenticator = new HttpBasicAuthenticator("admin", "password");
var request = new RestRequest("api-service/uploadimage", Method.POST);
request.AddHeader("Content-Type", "application/octect-stream");
request.AlwaysMultipartFormData = true;
request.AddFile(FileName, image, FileName);
var response = await newextension.ExecuteAwait(client, request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
String JSONData = response.Content.ToString();
return true;
}
else
{
return false;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
}
The below code snippet implements the ReshSharpExtension
public class RestSharpExtension
{
public Task ExecuteAwait(RestClient client, RestRequest request)
{
TaskCompletionSource taskCompletionSource = new TaskCompletionSource();
client.ExecuteAsync(request, (response, asyncHandle) =>
{
if (response.ResponseStatus == ResponseStatus.Error)
{
taskCompletionSource.SetException(response.ErrorException);
}
else
{
taskCompletionSource.SetResult(response);
}
});
return taskCompletionSource.Task;
}
}