woocommerce-api-nim

A Nim wrapper for the WooCommerce REST API


Keywords
e-commerce, woocommerce, rest-api, wrapper
License
MIT
Install
nimble install woocommerce-api-nim

Documentation

WooCommerce API - Nim Client

A Nim wrapper for the WooCommerce REST API. Easily interact with the WooCommerce REST API using this library.

Installation

git clone https://github.com/mrhdias/woocommerce-api-nim
cd woocommerce-api-nim
nimble install

Getting started

Generate API credentials (Consumer Key & Consumer Secret) following this instructions http://woocommerce.github.io/woocommerce-rest-api-docs/#rest-api-keys.

Check out the WooCommerce API endpoints and data that can be manipulated in http://woocommerce.github.io/woocommerce-rest-api-docs/.

Setup

  • Synchronous API
import woocommerce/API

let wcapi = API(
    url="http://example.com", # Your store URL
    consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", # Your consumer key
    consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # Your consumer secret
)
  • Asynchronous API
import woocommerce/API

let wcapi = AsyncAPI(
    url="http://example.com",
    consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
)

Methods

Params Type Description
endpoint string WooCommerce API endpoint, example: products or order/12
data string JSON data stringified
params Table[string, string] Accepts params to be passed as a query string
  • GET
# Retrieve
wcapi.get(endpoint: string; params: Table) # params is optional
  • POST
# Create
wcapi.post(endpoint: string, data: string)
  • PUT
# Update
wcapi.put(endpoint: string, data: string)
  • DELETE
# Delete
wcapi.delete(endpoint: string; params: Table) # params is optional
  • OPTIONS
# JSON Schema
wcapi.options(endpoint: string)

Response

All methods will return Response / AsyncResponse object.

Example of returned data for asynchronous API:

import woocommerce/API
import asyncdispatch
import tables
import json

proc main() {.async.} =
    let wcapi = AsyncAPI(
        url="http://example.com",
        consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    )

    response = await wcapi.get("products?status=publish&per_page=10&page=1")
    echo response.status
    if response.status == "200 OK":
        let products = parseJson(response.body)
        for product in products:
            echo "SKU:", product["sku"], " NAME:", product["name"]

    wcapi.close()

waitFor main()

Request with params example

import woocommerce/API
import asyncdispatch
import tables
import json

proc main() {.async.} =
    let wcapi = AsyncAPI(
        url="http://example.com",
        consumer_key="ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        consumer_secret="cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    )

    response = await wcapi.get(
        "products",
        params = {"status": "publish", "per_page": $(10), "page": $(2)}.toTable
    )
    echo response.status
    if response.status == "200 OK":
        let products = parseJson(response.body)
        for product in products:
            echo "SKU:", product["sku"], " NAME:", product["name"]

    wcapi.close()

waitFor main()