CSharp .Net client library for the PrestaShop API via web service
A simple .Net REST client written in C# for the Prestashop API. PrestaSharp uses the RestSharp library to consume the Prestashop services.
PrestaSharp is available on NuGet. Use the package manager console to install it:
Install-Package PrestaSharp
1) Initiate a client instance:
string baseUrl = "http://www.myweb.com/api"; string account = "ASDLKJOIQWEPROQWUPRPOQPPRQOW"; string password = "";ManufacturerFactory manufacturerFactory = new ManufacturerFactory(baseUrl, account, password);
2) Perform CRUD actions through the client:
Bukimedia.PrestaSharp.Entities.manufacturer manufacturer = manufacturerFactory.Get(6); manufacturer.name = "Iron Maiden"; manufacturer.active = 1; manufacturerFactory.Add(manufacturer); manufacturerFactory.Update(manufacturer); manufacturerFactory.Delete(manufacturer);
3) Add an image:
Bukimedia.PrestaSharp.Entities.product myProduct = new Bukimedia.PrestaSharp.Entities.product(); ProductFactory productFactory = new ProductFactory(baseUrl, account, password); myProduct = productFactory.Add(myProduct); ImageFactory imageFactory = new ImageFactory(baseUrl, account, password); imageFactory.AddProductImage((long)myProduct.id, "C:\\MyImage.jpg");
4) Set quantity of products: The quantity of a product may not be updated directly in the 'product' entity. You need to update 'stock_available' entity.
StockAvailableFactory stockAvailableFactory = new StockAvailableFactory(baseUrl, account, password); long stockAvailableId = myProduct.associations.stock_availables[0].id; Bukimedia.PrestaSharp.Entities.stock_available myStockAvailable = stockAvailableFactory.Get(stockAvailableId); myStockAvailable.quantity = 99; // Number of available products myStockAvailable.out_of_stock = 1; // Must enable orders stockAvailableFactory.Update(myStockAvailable);
1) Get all. This sample retrieves the list of manufacturers:
List manufacturers = ManufacturerFactory.GetAll();
2) Get ids. This sample retrieves the list of the manufacturer ids:
List ids = ManufacturerFactory.GetIds();
3) Get by filter. This sample retrieves the list of manufacturers which name is "Metallica":
Dictionary dtn = new Dictionary(); dtn.Add("name", "Metallica"); List manufacturers = ManufacturerFactory.GetByFilter(dtn, null, null);
4) Get by filter with wildcards. This sample retrieves the manufacturers which name starts with "Metall":
Dictionary dtn = new Dictionary(); dtn.Add("name", "[Metall]%"); List manufacturers = ManufacturerFactory.GetByFilter(dtn, null, null);
5) Get ids by filter. This sample retrieves the list of the manufacturers ids which name is "Metallica":
Dictionary dtn = new Dictionary(); dtn.Add("name", "Metallica"); List ids = ManufacturerFactory.GetIdsByFilter(dtn, null, null);
6) Get ids by filter with wildcards. This sample retrieves the list of the manufacturers ids which name starts with "Metall":
Dictionary dtn = new Dictionary(); dtn.Add("name", "[Metall]%"); List ids = ManufacturerFactory.GetIdsByFilter(dtn, null, null);
7) Get by complex filter. This sample retrieves the top five manufacturers in ascendent sorting which name starts with "Metall":
Dictionary dtn = new Dictionary(); dtn.Add("name", "[Metall]%"); List manufacturers = ManufacturerFactory.GetByFilter(dtn, "name_ASC", "5");
8) Get by filter for pagination. This sample retrieves the top five manufacturers from tenth position in ascendent sorting which name starts with "Metall":
Dictionary dtn = new Dictionary(); dtn.Add("name", "[Metall]%"); List manufacturers = ManufacturerFactory.GetByFilter(dtn, "name_ASC", "[9,5]");
9) Get ids by filter. This sample retrieves the list of the manufacturers ids which name is "Metallica", "Nirvana" or "Pantera":
Dictionary dtn = new Dictionary(); dtn.Add("name", "[Metallica|Nirvana|Pantera]"); List ids = ManufacturerFactory.GetIdsByFilter(dtn, null, null);
10) Get by filter by range date. This sample retrieves the orders in a date range:
DateTime startDate = new DateTime (2016, 1, 1); DateTime endDate = new DateTime (2016, 1, 31); Dictionary filter = new Dictionary(); string dFrom = string.Format("{0:yyyy-MM-dd HH:mm:ss}", startDate); string dTo = string.Format("{0:yyyy-MM-dd HH:mm:ss}", endDate); filter.Add("date_add", "[" + dFrom + "," + dTo + "]"); List prestaSharpOrderIds = this.OrderFactory.GetIdsByFilter(filter, "id_DESC", null);
Enabling debugging in PrestaShop would make PrestaSharp exceptions more verbose, to enable that, edit
/config/defines.inc.phpfile in your PrestaShop website and edit this code block:
define('_PS_MODE_DEV_', false);
to:
define('_PS_MODE_DEV_', true);
More information in the development section of PrestaShop's documentation.
If your problem is how to implement anything with PrestaSharp or make a question, please, refer to our Slack group: PrestaSharp Slack Group
PrestaSharp is GNU General Public License (GPL)
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantabilty or fitness for a particular purpose. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
Bukimedia reserves the right to mention of companies or individuals who use this software.
Copyright (C) 2019 Bukimedia - Bukimedia: https://bukimedia.com/ - Twitter: http://twitter.com/bukimedia - GitHub: https://github.com/bukimedia - PrestaSharp on Bukimedia: https://bukimedia.com/prestasharp/