{"id":20209862,"url":"https://github.com/prosenjit-manna/wooapi","last_synced_at":"2025-04-10T13:14:18.587Z","repository":{"id":54403167,"uuid":"135902847","full_name":"prosenjit-manna/wooApi","owner":"prosenjit-manna","description":"Woocommerce API with Angular. Angular woocommerce service, Wordpress auth with angular","archived":false,"fork":false,"pushed_at":"2021-09-04T15:56:02.000Z","size":1338,"stargazers_count":39,"open_issues_count":0,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-24T11:56:55.741Z","etag":null,"topics":["angular","angular-woocommerce","angular6-library","authentication","woocommerce","woocommerce-api","wordpress","wp-api","wp-api-woocommerce"],"latest_commit_sha":null,"homepage":"https://prosenjit-manna.github.io/wooApi/","language":"CSS","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/prosenjit-manna.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":["https://www.paypal.com/paypalme/bnprosenjit"]}},"created_at":"2018-06-03T12:38:23.000Z","updated_at":"2024-09-12T13:28:05.000Z","dependencies_parsed_at":"2022-08-13T14:40:10.475Z","dependency_job_id":null,"html_url":"https://github.com/prosenjit-manna/wooApi","commit_stats":null,"previous_names":["angular-studio/wooapi"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosenjit-manna%2FwooApi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosenjit-manna%2FwooApi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosenjit-manna%2FwooApi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prosenjit-manna%2FwooApi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prosenjit-manna","download_url":"https://codeload.github.com/prosenjit-manna/wooApi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248225652,"owners_count":21068078,"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","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","angular-woocommerce","angular6-library","authentication","woocommerce","woocommerce-api","wordpress","wp-api","wp-api-woocommerce"],"created_at":"2024-11-14T05:43:05.347Z","updated_at":"2025-04-10T13:14:18.479Z","avatar_url":"https://github.com/prosenjit-manna.png","language":"CSS","readme":"# WooApi\nWoocommerce API service with angular\n\n## Dependency\n- HttpClientModule\nimport { HttpClientModule } from '@angular/common/http';\n\n\n## Supports woocommerce API version\n- Supports V2 version / V3 Version: base url https://example.com/wp-json/wc/v2 Just change the `wcEndpoint` value in environment. For the type reference If have to use github version directly to change the interface\n\n- Please see `environment` constant and interceptor for frontend setup\n\n- https protocol is required\n\n## Setup instruction\n- [Backend setup](#backend-setup-instruction)\n- [Frontend setup](#frontend-setup-instruction)\n\n## Api Doc\n- https://prosenjit-manna.github.io/wooApi\n\n## Backend Setup instruction\n\n### Enable CORS\nAdd this code in function.php\n\n```\nadd_action( 'init', 'nt_cors_enable' );\n\nfunction nt_cors_enable() {\n  header(\"Access-Control-Allow-Origin: \" . get_http_origin());\n  header(\"Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE\");\n  header(\"Access-Control-Allow-Credentials: true\");\n  header(\"Access-Control-Allow-Headers: Authorization, Content-Type\");\n  header(\"Access-Control-Expose-Headers: x-wc-totalpages, x-wc-total\", false);\n  if ( 'OPTIONS' == $_SERVER['REQUEST_METHOD'] ) {\n    status_header(200);\n    exit();\n  }\n}\n```\n\n### Auth service dependency\n- Install JSON API user https://wordpress.org/plugins/json-api-user/, https://wordpress.org/plugins/json-api/\n- Install JWT support https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/\n\nAfter installatiion activate user controller from JSON-API settings. Under settings \u003e JSON-API \u003e User \u003e activate.\n\n\n\n## Frontend Setup instruction\n\n- `npm install --save ngx-wooapi` for angular 12+\n\nAlso you can download the repo and you can use directly without NPM if you need some modification\n\n-\n- Add interceptor\n\n```\nimport {\n  Injectable,\n  // Injector\n } from '@angular/core';\nimport {\n  HttpRequest,\n  HttpHandler,\n  HttpEvent,\n  HttpInterceptor,\n  HttpErrorResponse,\n} from '@angular/common/http';\n// import { Router } from '@angular/router';\nimport { catchError } from 'rxjs/operators';\nimport { Observable, throwError } from 'rxjs';\n\n// import { AuthService } from './auth.service';\nimport { environment } from '../environments/environment';\n\n@Injectable()\nexport class AppInterceptor implements HttpInterceptor {\n\n  constructor(\n    // private injector: Injector,\n    // private router: Router\n  ) { }\n\n  private includeWooAuth(url) {\n    const wooAuth = `consumer_key=${environment.woocommerce.consumer_key}\u0026consumer_secret=${environment.woocommerce.consumer_secret}`;\n    const hasQuery = url.includes('?');\n    let return_url = '';\n    if (hasQuery) {\n      return_url =  wooAuth;\n    } else {\n      return_url = '?' + wooAuth;\n    }\n    return return_url;\n  }\n\n  intercept(request: HttpRequest\u003cany\u003e, next: HttpHandler): Observable\u003cHttpEvent\u003cany\u003e\u003e {\n    let authRequest;\n    // const auth = this.injector.get(AuthService);\n    let requestUrl = '';\n    if (request.url.includes('api') || request.url.includes('jwt')) {\n      requestUrl = `${environment.origin}/${request.url}`;\n    } else {\n      requestUrl = `${environment.origin}${environment.wcEndpoint}/${request.url}${this.includeWooAuth(request.url)}`;\n    }\n    authRequest = request.clone({\n      url: requestUrl\n    });\n\n    return next.handle(authRequest)\n      .pipe(\n        catchError(err =\u003e {\n          if (err instanceof HttpErrorResponse \u0026\u0026 err.status === 0) {\n            console.log('Check Your Internet Connection And Try again Later');\n          } else if (err instanceof HttpErrorResponse \u0026\u0026 err.status === 401) {\n            // auth.setToken(null);\n            // this.router.navigate(['/', 'login']);\n          }\n          return throwError(err);\n        })\n      );\n  }\n}\n\n```\n\nAdd this code in your app.module.ts\n\n```\n providers: [\n    {\n      provide: HTTP_INTERCEPTORS,\n      useClass: AppInterceptor,\n      multi: true\n    }\n ]\n\n```\nAdd new property in environment.ts for angular webapp\n\n```\nexport const environment = {\n  origin: 'https://example.com/appwoo',\n  wcEndpoint: '/wp-json/wc/v2',\n  woocommerce: {\n    consumer_key:  'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n    consumer_secret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'\n  }\n};\n```\n\n\nNow use it in component\n\n```\nimport {\n  WoocommerceProductsService\n} from 'ngx-wooapi';\n\nconstructor(\n    private wooProducs: WoocommerceProductsService\n  ) { }\n\n  ngOnInit() {\n    this.wooProducs.retrieveProducts().subscribe(response =\u003e {\n      console.log(response);\n    }, err =\u003e {\n      console.log(err);\n    });\n  }\n\n```\n\nAll done have fun :)\n\n### Woocommerce Rest API doc\nhttps://woocommerce.github.io/woocommerce-rest-api-docs/\n\n### Progress\n- coupons [x]\n- customers [x]\n- orders [x]\n- order-notes [x]\n- refunds [x]\n- products [x]\n- product-variations [x]\n- product-attributes [x]\n- product-attribute-terms []\n- product-categories [x]\n- product-shipping-classes []\n- product-tags [x]\n- product-reviews [x]\n- reports []\n- tax-rates []\n- tax-classes []\n- webhooks []\n- settings []\n- setting-options []\n- payment-gateways []\n- shipping-zones []\n- shipping-zone-locations []\n- shipping-zone-methods []\n- shipping-methods []\n- system-status []\n- system-status-tools []\n- data []","funding_links":["https://www.paypal.com/paypalme/bnprosenjit"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprosenjit-manna%2Fwooapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprosenjit-manna%2Fwooapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprosenjit-manna%2Fwooapi/lists"}