Skip to content

Commit

Permalink
Merge pull request #462 from sanctusmob/AddHeadFunctionality
Browse files Browse the repository at this point in the history
Add head functionality in Generic Factory and Image Factory
  • Loading branch information
LameuleFR authored Nov 12, 2023
2 parents c689494 + 5b60a29 commit 2e753a5
Show file tree
Hide file tree
Showing 3 changed files with 156 additions and 1 deletion.
23 changes: 22 additions & 1 deletion PrestaSharp/Factories/GenericFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,17 @@ public T Get(long id)
return this.Execute<T>(request);
}

/// <summary>
/// Checks if the id exists and return true or false
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public bool CheckIfExists(long id)
{
RestRequest request = this.RequestForHead(pluralEntityName, id);
return this.ExecuteHead(request);
}

public T Add(T Entity)
{
long? idAux = Entity.id;
Expand Down Expand Up @@ -146,13 +157,23 @@ public List<T> AddList(List<T> Entities)
return this.Execute<List<T>>(request);
}


public async Task<T> GetAsync(long id)
{
RestRequest request = this.RequestForGet(pluralEntityName, id, singularEntityName);
return await this.ExecuteAsync<T>(request);
}

/// <summary>
/// Checks if the id exists and return true or false
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<bool> CheckIfExistsAsync(long id)
{
RestRequest request = this.RequestForHead(pluralEntityName, id);
return await this.ExecuteHeadAsync(request);
}

public async Task<T> AddAsync(T Entity)
{
long? idAux = Entity.id;
Expand Down
77 changes: 77 additions & 0 deletions PrestaSharp/Factories/ImageFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ protected void DeleteImage(string Resource, long? ResourceId, long? ImageId)
Execute<Entities.image>(request);
}

protected bool CheckImage(string Resource, long? ResourceId, long? ImageId)
{
RestRequest request = RequestForHeadImage(Resource, ResourceId, ImageId);
return ExecuteHead(request);
}

protected Task<List<Entities.image>> GetAllImagesAsync(string Resource)
{
RestRequest request = this.RequestForFilter("images/" + Resource, "full", null, null, null, "images");
Expand Down Expand Up @@ -126,6 +132,11 @@ protected Task DeleteImageAsync(string Resource, long? ResourceId, long? ImageId
return ExecuteAsync<Entities.image>(request);
}

protected Task<bool> CheckImageAsync(string Resource, long? ResourceId, long? ImageId)
{
RestRequest request = RequestForHeadImage(Resource, ResourceId, ImageId);
return ExecuteHeadAsync(request);
}
#endregion Protected methods

#region Manufacturer images
Expand Down Expand Up @@ -165,6 +176,16 @@ public void DeleteManufacturerImage(long ManufacturerId)
DeleteImage("manufacturers", ManufacturerId, null);
}

/// <summary>
/// Checks if manufacturer have image and return true or false
/// </summary>
/// <param name="ManufacturerId"></param>
/// <returns></returns>
public bool CheckIfExistsManufacturerImage(long ManufacturerId)
{
return CheckImage("manufacturers", ManufacturerId, null);
}

public byte[] GetManufacturerImage(long ManufacturerId, long ImageId)
{
RestRequest request = RequestForGet("images/manufacturers/" + ManufacturerId, ImageId, "");
Expand Down Expand Up @@ -205,6 +226,16 @@ public Task DeleteManufacturerImageAsync(long ManufacturerId)
return DeleteImageAsync("manufacturers", ManufacturerId, null);
}

/// <summary>
/// Checks if manufacturer have image and return true or false
/// </summary>
/// <param name="ManufacturerId"></param>
/// <returns></returns>
public async Task<bool> CheckIfExistsManufacturerImageAsync(long ManufacturerId)
{
return await CheckImageAsync("manufacturers", ManufacturerId, null);
}

public Task<byte[]> GetManufacturerImageAsync(long ManufacturerId, long ImageId)
{
RestRequest request = this.RequestForGet("images/manufacturers/" + ManufacturerId, ImageId, "");
Expand Down Expand Up @@ -292,6 +323,19 @@ public void DeleteProductImage(long ProductId, long ImageId)
DeleteImage("products", ProductId, ImageId);
}

/// <summary>
/// If Image ID is null checks if product have any images
/// else checks if the specific product image exists
/// and return true or false
/// </summary>
/// <param name="ProductId"></param>
/// <param name="ImageId"></param>
/// <returns></returns>
public bool CheckIfExistsProductImage(long ProductId, long? ImageId)
{
return CheckImage("products", ProductId, ImageId);
}

public byte[] GetProductImage(long ProductId, long ImageId)
{
RestRequest request = RequestForGet("images/products/" + ProductId, ImageId, "");
Expand Down Expand Up @@ -338,6 +382,19 @@ public Task DeleteProductImageAsync(long ProductId, long ImageId)
return DeleteImageAsync("products", ProductId, ImageId);
}

/// <summary>
/// If Image ID is null checks if product have any images
/// else checks if the specific product image exists
/// and return true or false
/// </summary>
/// <param name="ProductId"></param>
/// <param name="ImageId"></param>
/// <returns></returns>
public async Task<bool> CheckIfExistsProductImageAsync(long ProductId, long ImageId)
{
return await CheckImageAsync("products", ProductId, ImageId);
}

public Task<byte[]> GetProductImageAsync(long ProductId, long ImageId)
{
RestRequest request = this.RequestForGet("images/products/" + ProductId, ImageId, "");
Expand Down Expand Up @@ -383,6 +440,16 @@ public void DeleteCategoryImage(long CategoryID)
DeleteImage("categories", CategoryID, null);
}

/// <summary>
/// Checks if the category have image and return true or false
/// </summary>
/// <param name="CategoryID"></param>
/// <returns></returns>
public bool CheckIfExistsCategoryImage(long CategoryID)
{
return CheckImage("categories", CategoryID, null);
}

public byte[] GetCategoryImage(long CategoryId, long ImageId)
{
RestRequest request = RequestForGet("images/categories/" + CategoryId, ImageId, "");
Expand Down Expand Up @@ -430,6 +497,16 @@ public Task DeleteCategoryImageAsync(long CategoryID)
return DeleteImageAsync("categories", CategoryID, null);
}

/// <summary>
/// Checks if the category have image and return true or false
/// </summary>
/// <param name="CategoryID"></param>
/// <returns></returns>
public async Task<bool> CheckIfExistsCategoryImageAsync(long CategoryID)
{
return await CheckImageAsync("categories", CategoryID, null);
}

public Task<byte[]> GetCategoryImageAsync(long CategoryId, long ImageId)
{
RestRequest request = this.RequestForGet("images/categories/" + CategoryId, ImageId, "");
Expand Down
57 changes: 57 additions & 0 deletions PrestaSharp/Factories/RestSharpFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,23 @@ protected void CheckResponse(IRestResponse response, RestRequest request)
return response.Data;
}

protected bool ExecuteHead(RestRequest request)
{
bool r = false;
var client = new RestClient
{
BaseUrl = new Uri(BaseUrl)
};
AddWsKey(request);
AddHandlers(client);
var response = client.Execute(request);
if(response.StatusCode == HttpStatusCode.OK)
{
r = true;
}
return r;
}

protected T ExecuteForFilter<T>(RestRequest request) where T : new()
{
var client = new RestClient
Expand Down Expand Up @@ -141,6 +158,23 @@ protected byte[] ExecuteForImage(RestRequest request)
return response.Data;
}

protected async Task<bool> ExecuteHeadAsync(RestRequest request)
{
bool r = false;
var client = new RestClient
{
BaseUrl = new Uri(BaseUrl)
};
AddWsKey(request);
AddHandlers(client);
var response = await client.ExecuteTaskAsync(request);
if (response.StatusCode == HttpStatusCode.OK)
{
r = true;
}
return r;
}

protected async Task<List<long>> ExecuteForGetIdsAsync<T>(RestRequest request, string rootElement) where T : new()
{
var client = new RestClient(BaseUrl);
Expand Down Expand Up @@ -191,6 +225,16 @@ protected RestRequest RequestForAdd(string resource, IEnumerable<PrestaShopEntit
return request;
}

protected RestRequest RequestForHead(string resource, long? id)
{
var request = new RestRequest
{
Resource = resource + "/" + id,
Method = Method.HEAD
};
return request;
}

/// <summary>
/// More information about image management: http://doc.prestashop.com/display/PS15/Chapter+9+-+Image+management
/// </summary>
Expand Down Expand Up @@ -295,6 +339,19 @@ protected RestRequest RequestForDeleteImage(string resource, long? resourceId, l
return request;
}

protected RestRequest RequestForHeadImage(string resource, long? resourceId, long? imageId)
{
if (resourceId == null) throw new ApplicationException("Id is required to check if exists something.");

var request = new RestRequest
{
Resource = "/images/" + resource + "/" + resourceId,
Method = Method.HEAD,
};
if (imageId != null) request.Resource += "/" + imageId;
return request;
}

protected RestRequest RequestForDelete(string resource, long? id)
{
if (id == null) throw new ApplicationException("Id is required to delete something.");
Expand Down

0 comments on commit 2e753a5

Please sign in to comment.