{"id":15018952,"url":"https://github.com/skadizz/angular2-presta","last_synced_at":"2025-08-18T09:48:39.019Z","repository":{"id":16093714,"uuid":"79275514","full_name":"SKaDiZZ/angular2-presta","owner":"SKaDiZZ","description":"Angular services for consuming PrestaShop API ...","archived":false,"fork":false,"pushed_at":"2024-01-18T21:38:44.000Z","size":1030,"stargazers_count":33,"open_issues_count":0,"forks_count":18,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-08-04T00:32:58.503Z","etag":null,"topics":["angular","angular2-presta","api","ionic","javascript","node","nodejs","npm","presta","prestashop","service","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SKaDiZZ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-17T21:50:07.000Z","updated_at":"2024-01-05T16:48:52.000Z","dependencies_parsed_at":"2025-02-09T02:32:01.633Z","dependency_job_id":"d1e1957e-25e3-4df8-9a45-a033106b2aa4","html_url":"https://github.com/SKaDiZZ/angular2-presta","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/SKaDiZZ/angular2-presta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKaDiZZ%2Fangular2-presta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKaDiZZ%2Fangular2-presta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKaDiZZ%2Fangular2-presta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKaDiZZ%2Fangular2-presta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SKaDiZZ","download_url":"https://codeload.github.com/SKaDiZZ/angular2-presta/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKaDiZZ%2Fangular2-presta/sbom","scorecard":{"id":124154,"data":{"date":"2025-08-11","repo":{"name":"github.com/SKaDiZZ/angular2-presta","commit":"4bcb15a9503a3c92d2990e16eaec718d88a4cfd4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.3,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"46 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-c75v-2vq8-878f","Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-q9mw-68c2-j6m5","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-4www-5p9h-95mh","Warn: Project is vulnerable to: GHSA-9gqv-wp59-fq42","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-hc6q-2mpp-qw7j","Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T03:18:50.533Z","repository_id":16093714,"created_at":"2025-08-16T03:18:50.533Z","updated_at":"2025-08-16T03:18:50.533Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270975114,"owners_count":24678253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","angular2-presta","api","ionic","javascript","node","nodejs","npm","presta","prestashop","service","typescript"],"created_at":"2024-09-24T19:52:39.731Z","updated_at":"2025-08-18T09:48:38.980Z","avatar_url":"https://github.com/SKaDiZZ.png","language":"TypeScript","readme":"# angular2-presta\n\n**Angular2Presta** library will help developers writing **Angular** and **Ionic** applications using **Prestashop Webservice**.\n\n![angular2-presta](https://raw.githubusercontent.com/SKaDiZZ/angular2-presta/master/src/assets/a2plogo.png?raw=true \"Logo\")\n\n## Installation\n\nTo install this library, run:\n\n```bash\n$ npm install angular2-presta --save\n```\n\n## Enable CORS on your prestashop webservice\n\nIf you are woring on Ionic mobile application or if you are working on angular or ionic application and you are using localhost to test you will need to enable CORS on your prestashop webservice by adding required headers in your dispatcher.php file.\n\nPlease check video guide I made on youtube:\n\n\u003cdiv align=\"center\"\u003e\n\n[![enable CORS](https://img.youtube.com/vi/s25RURLwnNY/0.jpg)](https://www.youtube.com/embed/s25RURLwnNY)\n\n\u003c/div\u003e\n\n### Enable CORS on Apache server\n\nModify your .htaccess file:\n\n```bash\n\u003cIfModule mod_headers.c\u003e\n   Header always set Access-Control-Allow-Origin \"*\"\n   Header always set Access-Control-Allow-Headers \"Content-Type, Authorization, Io-Format, Accept\"\n   Header always set Access-Control-Allow-Methods \"GET,POST,HEAD,DELETE,PUT,OPTIONS\"\n\u003c/IfModule\u003e\n\n\u003cIfModule mod_rewrite.c\u003e\n  # Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request\n  RewriteEngine On\n  RewriteCond %{REQUEST_METHOD} OPTIONS\n  RewriteRule ^(.*)$ $1 [R=200,L]\n\u003c/IfModule\u003e\n```\n\nThanx @amoncusir for contributing this example.\n\n## Using angular2-presta with Ionic 3\n\nLatest version of angular2-presta library is updated to work with Angular versions from Angular 6. Ionic 3 is using Angular 5.2.11 at time of this release. If your project is using Ionic 3 you have to use older version of angular2-presta which supports Angular 5. Ionic 4 applications will work fine with latest version of angular2-presta library.\n\nTo install angular2-presta 0.1.14:\n\n```bash\nnpm install angular2-presta@0.1.14 --save\n```\n\nYou can find documentation for this version on [NPM](https://www.npmjs.com/package/angular2-presta/v/0.1.14)\n\nI made short video how to use angular2-presta with Ionic :\n\n\u003cdiv align=\"center\"\u003e\n\n[![enable CORS](https://img.youtube.com/vi/_oEzNRGiC2E/0.jpg)](https://www.youtube.com/embed/_oEzNRGiC2E)\n\n\u003c/div\u003e\n\n## Bootstrap\n\nImport Angular2PrestaModule and Angular2PrestaConfiguration into your app.module.ts file:\n\n```typescript\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { NgModule } from \"@angular/core\";\nimport {\n  Angular2PrestaModule,\n  Angular2PrestaConfiguration,\n} from \"angular2-presta\";\n\nimport { AppComponent } from \"./app.component\";\n\nconst a2pConfig: Angular2PrestaConfiguration = {\n  apiKey: \"YOUR_PRESTA_API_KEY\",\n  imageApiKey: \"OPTIONAL_IMAGE_API_KEY\",\n  shopUrl: \"https://yourshop.com/api/\",\n};\n\n@NgModule({\n  declarations: [AppComponent],\n  imports: [BrowserModule, Angular2PrestaModule.forRoot(a2pConfig)],\n  providers: [],\n  bootstrap: [AppComponent],\n})\nexport class AppModule {}\n```\n\n## Angular2PrestaConfiguration\n\nTo connect your application with your prestashop website you need to provide **Angular2PrestaService** with configuration. This is done by defining **Angular2PrestaConfiguration** object and passing this object to **Angular2PrestaModule** in imports array.\n\n```typescript\nconst a2pConfig: Angular2PrestaConfiguration = {\n  apiKey: \"YOUR_PRESTA_API_KEY\", // prestashop webservice API key\n  imageApiKey: \"OPTIONAL_IMAGE_API_KEY\", // images API key\n  shopUrl: \"https://yourshop.com/api/\", // url of your shop : please use https\n};\n```\n\n## Angular2PrestaService\n\n**Angular2Presta** is actually service library providing methods to call prestashop webservice and return resources based on your query. You can say it is HTTP client for prestaahop webservice.\n\n```typescript\nimport { Component, OnInit } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\n// import service and query\nimport { Angular2PrestaService, Angular2PrestaQuery } from \"angular2-presta\";\n\n@Component({\n  selector: \"app-root\",\n  template: ` \u003cdiv *ngFor=\"let product of product$ | async\"\u003e\n    \u003ca2p-image\n      [resource]=\"query.resource\"\n      [resourceID]=\"product.id\"\n      [imageID]=\"product.id_default_image\"\n      [size]=\"'medium'\"\n    \u003e\u003c/a2p-image\u003e\n    \u003ch1 [innerHTML]=\"product.name[0].value\"\u003e\u003c/h1\u003e\n    \u003cp [innerHTML]=\"product.description_short[0].value\"\u003e\u003c/p\u003e\n    \u003cp\u003e{{ product.price | currency }}\u003c/p\u003e\n    \u003cp\u003e\u003c/p\u003e\n  \u003c/div\u003e`,\n  styles: [],\n})\nexport class AppComponent implements OnInit {\n  // products observable\n  product$: Observable\u003cany\u003e;\n\n  query: Angular2PrestaQuery = {\n    // define resource products, categories ...\n    // check full list http://doc.prestashop.com/display/PS16/Web+service+reference\n    resource: \"products\",\n    // return only fields you need\n    display: \"id,id_default_image,name,price,description_short,condition\",\n    // filter results\n    filter: {\n      name: \"blouse\",\n      condition: \"new\",\n    },\n    // sort results\n    sort: \"name_ASC\",\n    // limit number of results or define range\n    limit: \"10\",\n  };\n\n  // Inject Angular2PrestaService\n  constructor(private _service: Angular2PrestaService) {}\n\n  ngOnInit() {\n    // Use get function provided by Angular2PrestaService\n    this.product$ = this._service.get(this.query);\n  }\n}\n```\n\n## Constructing Angular2PrestaQuery\n\nFor now only **GET** method is supported, no posting or updating data is available.\n\n| Option       | Type   | Description                                                                                    |\n| ------------ | ------ | ---------------------------------------------------------------------------------------------- |\n| **resource** | string | Select type of results: products, categories, customers ...                                    |\n| **display**  | string | Allows you to limit result fields to only those you need, by default it will return all fields |\n| **filter**   | Object | object defining fields and values to filter results by                                         |\n| **sort**     | string | sort results by: 'id_ASC', 'id_DESC', 'name_ASC', 'name_DESC' ...                              |\n| **limit**    | string | limit number of results, or define range of results '5', '9,5'                                 |\n| **search**   | string | search term to use for presta web service search                                               |\n\n### Get product categories\n\n```typescript\nquery: Angular2PrestaQuery = {\n  resource: \"categories\",\n};\n```\n\n### Get products by category\n\n```typescript\nquery: Angular2PrestaQuery = {\n  resource: \"products\",\n  filter: {\n    id_category_default: \"11\",\n  },\n};\n```\n\n### Get product by id\n\n```typescript\nquery: Angular2PrestaQuery = {\n  resource: \"products\",\n  filter: {\n    id: \"1\",\n  },\n};\n```\n\n## Using search\n\nSearch Query can accept **search** and **resource** fields. By default search will return list of products if no other resource is defined.\n\n```typescript\nimport { Component, OnInit } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\n// import service and query\nimport { Angular2PrestaService, Angular2PrestaQuery } from \"angular2-presta\";\n\n@Component({\n  selector: \"app-root\",\n  template: ` \u003cdiv *ngFor=\"let product of product$ | async\"\u003e\n    \u003ca2p-image\n      [resource]=\"query.resource\"\n      [resourceID]=\"product.id\"\n      [imageID]=\"product.id_default_image\"\n      [size]=\"'medium'\"\n    \u003e\u003c/a2p-image\u003e\n    \u003ch1 [innerHTML]=\"product.name[0].value\"\u003e\u003c/h1\u003e\n    \u003cp [innerHTML]=\"product.description_short[0].value\"\u003e\u003c/p\u003e\n    \u003cp\u003e{{ product.price | currency }}\u003c/p\u003e\n    \u003cp\u003e\u003c/p\u003e\n  \u003c/div\u003e`,\n  styles: [],\n})\nexport class AppComponent implements OnInit {\n  // products observable\n  product$: Observable\u003cany\u003e;\n\n  // Search products for dress\n  query: Angular2PrestaQuery = {\n    resource: \"products\",\n    search: \"dress\",\n  };\n\n  // Inject Angular2PrestaService\n  constructor(private _service: Angular2PrestaService) {}\n\n  ngOnInit() {\n    // Use search function provided by Angular2PrestaService\n    this.product$ = this._service.search(this.query);\n  }\n}\n```\n\n### Search categories\n\n```typescript\nquery: Angular2PrestaQuery = {\n    resource: 'categories'\n    search: 'dresses'\n  };\n```\n\n## Outputing data\n\nSome of prestashop webservice results come with html tags included to remove tags you can use **innerHtml** directive.\n\n```html\n\u003cli *ngFor=\"let product of product$ | async\"\u003e\n  \u003ch1 [innerHTML]=\"product.name[0].value\"\u003e\u003c/h1\u003e\n  \u003cp [innerHTML]=\"product.description_short[0].value\"\u003e\u003c/p\u003e\n  \u003cp\u003e{{ product.price | currency }}\u003c/p\u003e\n  \u003cp\u003e\u003c/p\u003e\n\u003c/li\u003e\n```\n\n## Working with images\n\nBefore you try to use images you should generate one special **API KEY**, only with one permission to **GET** images. This is most secure method, because your **API KEY** will be included in every call to fetch image so it could be easily obtained by a third person.\n\nInclude your images **API KEY** into **Angular2PrestaConfiguration** object in your **app.module.ts** file:\n\n```typescript\n// Add your presta web service api key and shop url\nconst a2pConfig: Angular2PrestaConfiguration = {\n  apiKey: \"YOUR_PRESTA_API_KEY\",\n  imageApiKey: \"YOUR_PRESTA_API_KEY\", // ApiKey only with images GET permissions for security reasons\n  shopUrl: \"https://yourshop.com/api/\", // Please use https\n};\n```\n\nYou can use **a2p-image** component to output product images. **Angular2PrestaImageComponent** has few inputs. It will use data from them to construct image url to fetch images and display them in your application.\n\n## Angular2PrestaImageComponent\n\n## @Inputs\n\n- **resource**: string -\u003e for which you want to get image available are\n\n  - general : General shop images\n  - products : Product images\n  - categories : Category images\n  - customizations : Customization images\n  - manufacturers : Manufacturer images\n  - suppliers : Supplier images\n  - stores : Store images\n\n- **resourceID**: number -\u003e unique resource ID for example product or category ID\n\n- **imageID**: number -\u003e image ID is required for product images because products have more then one image for other resource images you don't need to define it\n\n- **size** string -\u003e define one of available image sizes ( cart, small, medium, large,thickbox, home, category). Size is optional and if you leave it undefined component will display large images by default.\n\nGet product images in your html template using **a2p-image** component:\n\n```html\n\u003cli *ngFor=\"let product of product$ | async\"\u003e\n  \u003c!-- use presta-img component to get products default image and display it as large image --\u003e\n  \u003ca2p-image\n    [resource]=\"query.resource\"\n    [resourceID]=\"product.id\"\n    [imageID]=\"product.id_default_image\"\n    [size]=\"'medium'\"\n  \u003e\u003c/a2p-image\u003e\n\n  \u003ch1 [innerHTML]=\"product.name[0].value\"\u003e\u003c/h1\u003e\n  \u003cp [innerHTML]=\"product.description_short[0].value\"\u003e\u003c/p\u003e\n  \u003cp\u003e{{ product.price | currency }}\u003c/p\u003e\n  \u003cp\u003e\n    \u003c!-- get all images for this product and use small image size --\u003e\n  \u003c/p\u003e\n\n  \u003cul *ngIf=\"product.associations.images\"\u003e\n    \u003cli *ngFor=\"let image of product.associations.images\"\u003e\n      \u003ca2p-image\n        [resource]=\"query.resource\"\n        [resourceID]=\"product.id\"\n        [imageID]=\"product.id\"\n        [size]=\"'small'\"\n      \u003e\u003c/a2p-image\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/li\u003e\n```\n\nGet images for other resources using presta-image component\n\n```html\n\u003c!-- get category image passing category id --\u003e\n\u003ca2p-image [resource]=\"'categories'\" [resourceID]=\"10\"\u003e\u003c/a2p-image\u003e\n\n\u003c!-- get store image passing store id --\u003e\n\u003ca2p-image [resource]=\"'stores'\" [resourceID]=\"1\"\u003e\u003c/a2p-image\u003e\n\n\u003c!-- get supplier image passing supplier id --\u003e\n\u003ca2p-image [resource]=\"'suppliers'\" [resourceID]=\"1\"\u003e\u003c/a2p-image\u003e\n\n\u003c!-- get manufacturers image passing manufacturer id --\u003e\n\u003ca2p-image [resource]=\"'manufacturers'\" [resourceID]=\"1\"\u003e\u003c/a2p-image\u003e\n```\n\n## Delete resource\n\n```typescript\nexport class AppComponent implements OnInit {\n  // Inject Angular2PrestaService\n  constructor(private _service: Angular2PrestaService) {}\n\n  deleteProduct(productId: number) {\n    // Delete resource\n    this._service.delete(\"products\", productId).subscribe();\n  }\n}\n```\n\n## Roadmap\n\n- [x] GET requests, filtering, sorting\n- [x] SEARCH support\n- [x] IMAGES support\n- [ ] POST requests\n- [ ] UPDATE requests\n- [x] DELETE requests\n\n## Changelog\n\n### v0.1.26\n\n- Updated to Angular 15\n- Security fixes for packages\n\n### v0.1.25\n\n- Updated to Angular 12\n- Security fixes for packages\n\n### v0.1.23\n\n- Updated NPM dependencies\n- Security fixes\n\n### v0.1.22\n\n- Delete added to angular2-presta service, now you can delete resources by passing resource name and resource id\n- Updated NPM dependencies\n- Security fixes\n\n### v0.1.21\n\n- Security update\n\n### v0.1.20\n\n- Updated dependencies to support Angular 8\n\n### v0.1.19\n\n- Updated documentation\n- Updated dependencies to latest version\n- Fixed few security issuess reported by npm audit\n\n### v0.1.18\n\n- Updated documentation with directions for Ionic and Angular 5 users\n\n### v0.1.17\n\n- More examples added\n- Fixed incorrect description on npm website\n\n### v0.1.16\n\n- Renamed service, components and interfaces to match Angular naming conventions\n- Added catchError support in service\n- Updated and fixed documentation\n\n### v0.1.15\n\n- Fixed few security issues\n- Upgraded to support Angular 6\n- Updated readme examples\n\n### v0.1.14\n\n- Added presta prefix to interfaces, enums etc.\n- Presta Service is using new HttpClient from now\n- Fixed bugs with presta-image component making it faster and more reliable\n- Updated readme with new examples\n\n### v0.1.9\n\n- Upadated presta-img component for better image loading\n- presta-img now requires image size to be defined using ImageSize enum values to reduce errors\n- All packages updated\n- Better error catching\n- Tested with Prestashop 1.7\n\n### v0.1.7\n\n- Fixed module exports\n- Documentation improved\n\n### v0.1.6\n\n- Added images support by new PrestaImage component\n- Fixed limit not working\n\n### v0.1.4 - v0.1.5\n\n- Updated documentation\n\n### v0.1.3\n\n- Added support for search, code optimized, many fixes\n\n### v0.1.2\n\n- Added support for more then one filter\n\n## Aditional resources\n\n- [Presta Shop web service: Documentation](http://doc.prestashop.com/display/PS16/Using+the+PrestaShop+Web+Service)\n- [Presta Shop web service: Tutorial](http://doc.prestashop.com/display/PS16/Web+service+tutorial)\n- [Presta Shop web service: Advanced usage](http://doc.prestashop.com/display/PS16/Chapter+8+-+Advanced+use)\n- [Presta Shop web service: Image management](http://doc.prestashop.com/display/PS16/Chapter+9+-+Image+management)\n- [Presta Shop web service: Reference](http://doc.prestashop.com/display/PS16/Web+service+reference)\n\n## License\n\nMIT © [Samir Kahvedzic](mailto:akirapowered@gmail.com)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskadizz%2Fangular2-presta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskadizz%2Fangular2-presta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskadizz%2Fangular2-presta/lists"}