Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(CkPython) Akeneo: Get List of ProductsUsing a previously obtained request token, demonstrates how to get a list of products.
import sys import chilkat # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. http = chilkat.CkHttp() # Use your previously obtained access token. # See Get Akeneo Access Token http.put_AuthToken("access_token") jsonResponse = http.quickGetStr("http://pim.my-akeneo-site.com/api/rest/v1/products") if (http.get_LastMethodSuccess() != True): print(http.lastHeader()) print(http.lastErrorText()) sys.exit() print(jsonResponse) # A sample response looks like this. # See below for sample code to parse the JSON response.. # { # "_links": { # "self": { # "href": "https://demo.akeneo.com/api/rest/v1/products?page=3&limit=3" # }, # "first": { # "href": "https://demo.akeneo.com/api/rest/v1/products?page=1&limit=3" # }, # "previous": { # "href": "https://demo.akeneo.com/api/rest/v1/products?page=2&limit=3" # }, # "next": { # "href": "https://demo.akeneo.com/api/rest/v1/products?page=4&limit=3" # } # }, # "current_page": 3, # "_embedded": { # "_items": [ # { # "_links": { # "self": { # "href": "https://demo.akeneo.com/api/rest/v1/product/top" # } # }, # "identifier": "top", # "family": "tshirt", # "groups": [], # "parent": null, # "categories": [ # "summer_collection" # ], # "enabled": true, # "values": { # "name": [ # { # "data": "Top", # "locale": "en_US", # "scope": null # }, # { # "data": "Dbardeur", # "locale": "fr_FR", # "scope": null # } # ], # "description": [ # { # "data": "Summer top", # "locale": "en_US", # "scope": "ecommerce" # }, # { # "data": "Top", # "locale": "en_US", # "scope": "tablet" # }, # { # "data": "Dbardeur pour l't", # "locale": "fr_FR", # "scope": "ecommerce" # }, # { # "data": "Dbardeur", # "locale": "fr_FR", # "scope": "tablet" # } # ], # "price": [ # { # "locale": null, # "scope": null, # "data": [ # { # "amount": "15.5", # "currency": "EUR" # }, # { # "amount": "15", # "currency": "USD" # } # ] # } # ], # "color": [ # { # "locale": null, # "scope": null, # "data": "black" # } # ], # "size": [ # { # "locale": null, # "scope": null, # "data": "m" # } # ] # }, # "created": "2016-06-23T18:24:44+02:00", # "updated": "2016-06-25T17:56:12+02:00", # "associations": { # "PACK": { # "products": [ # "sunglasses" # ], # "groups": [] # } # } # }, # { # "_links": { # "self": { # "href": "https://demo.akeneo.com/api/rest/v1/product/cap" # } # }, # "identifier": "cap", # "family": "caps", # "groups": [], # "parent": null, # "categories": [ # "summer_collection" # ], # "enabled": true, # "values": { # "name": [ # { # "data": "Cap", # "locale": "en_US", # "scope": null # }, # { # "data": "Casquette", # "locale": "fr_FR", # "scope": null # } # ], # "description": [ # { # "data": "Cap unisex", # "locale": "en_US", # "scope": "ecommerce" # }, # { # "data": "Cap unisex", # "locale": "en_US", # "scope": "tablet" # }, # { # "data": "Casquette unisexe", # "locale": "fr_FR", # "scope": "ecommerce" # }, # { # "data": "Casquette unisexe", # "locale": "fr_FR", # "scope": "tablet" # } # ], # "price": [ # { # "locale": null, # "scope": null, # "data": [ # { # "amount": "20", # "currency": "EUR" # }, # { # "amount": "20", # "currency": "USD" # } # ] # } # ], # "color": [ # { # "locale": null, # "scope": null, # "data": "black" # } # ] # }, # "created": "2016-06-23T18:24:44+02:00", # "updated": "2016-06-25T17:56:12+02:00", # "associations": { # "PACK": { # "products": [ # "sunglasses" # ], # "groups": [] # } # } # }, # { # "_links": { # "self": { # "href": "https://demo.akeneo.com/api/rest/v1/product/sweat" # } # }, # "identifier": "sweat", # "family": null, # "groups": [], # "parent": null, # "categories": [ # "winter_collection" # ], # "enabled": true, # "values": {}, # "created": "2016-06-23T11:24:44+02:00", # "updated": "2016-06-23T11:24:44+02:00", # "associations": {} # } # ] # } # } # json = chilkat.CkJsonObject() json.Load(jsonResponse) v_linksSelfHref = json.stringOf("_links.self.href") v_linksFirstHref = json.stringOf("_links.first.href") current_page = json.IntOf("current_page") i = 0 count_i = json.SizeOfArray("_embedded.items") while i < count_i : json.put_I(i) v_linksSelfHref = json.stringOf("_embedded.items[i]._links.self.href") identifier = json.stringOf("_embedded.items[i].identifier") family = json.stringOf("_embedded.items[i].family") parent = json.stringOf("_embedded.items[i].parent") enabled = json.BoolOf("_embedded.items[i].enabled") created = json.stringOf("_embedded.items[i].created") updated = json.stringOf("_embedded.items[i].updated") j = 0 count_j = json.SizeOfArray("_embedded.items[i].groups") while j < count_j : json.put_J(j) strVal = json.stringOf("_embedded.items[i].groups[j]") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].categories") while j < count_j : json.put_J(j) strVal = json.stringOf("_embedded.items[i].categories[j]") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.blocked") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.blocked[j].locale") scope = json.stringOf("_embedded.items[i].values.blocked[j].scope") data = json.BoolOf("_embedded.items[i].values.blocked[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.can_cut") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.can_cut[j].locale") scope = json.stringOf("_embedded.items[i].values.can_cut[j].scope") data = json.BoolOf("_embedded.items[i].values.can_cut[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.not_used") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.not_used[j].locale") scope = json.stringOf("_embedded.items[i].values.not_used[j].scope") data = json.BoolOf("_embedded.items[i].values.not_used[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.deny_delivery") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.deny_delivery[j].locale") scope = json.stringOf("_embedded.items[i].values.deny_delivery[j].scope") data = json.BoolOf("_embedded.items[i].values.deny_delivery[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.can_split_package") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.can_split_package[j].locale") scope = json.stringOf("_embedded.items[i].values.can_split_package[j].scope") data = json.BoolOf("_embedded.items[i].values.can_split_package[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.transfer_to_warehouse") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.transfer_to_warehouse[j].locale") scope = json.stringOf("_embedded.items[i].values.transfer_to_warehouse[j].scope") data = json.BoolOf("_embedded.items[i].values.transfer_to_warehouse[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.product_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.product_code[j].locale") scope = json.stringOf("_embedded.items[i].values.product_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.product_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.nuotrauka") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.nuotrauka[j].locale") scope = json.stringOf("_embedded.items[i].values.nuotrauka[j].scope") data_str = json.stringOf("_embedded.items[i].values.nuotrauka[j].data") v_linksDownloadHref = json.stringOf("_embedded.items[i].values.nuotrauka[j]._links.download.href") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.minimum_quantity") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.minimum_quantity[j].locale") scope = json.stringOf("_embedded.items[i].values.minimum_quantity[j].scope") data_int = json.IntOf("_embedded.items[i].values.minimum_quantity[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.code[j].locale") scope = json.stringOf("_embedded.items[i].values.code[j].scope") data_int = json.IntOf("_embedded.items[i].values.code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.name") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.name[j].locale") scope = json.stringOf("_embedded.items[i].values.name[j].scope") data_str = json.stringOf("_embedded.items[i].values.name[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.fsc_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.fsc_code[j].locale") scope = json.stringOf("_embedded.items[i].values.fsc_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.fsc_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.warehouse") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.warehouse[j].locale") scope = json.stringOf("_embedded.items[i].values.warehouse[j].scope") data_str = json.stringOf("_embedded.items[i].values.warehouse[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.item_volume") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.item_volume[j].locale") scope = json.stringOf("_embedded.items[i].values.item_volume[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.item_volume[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.item_volume[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.customs_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.customs_code[j].locale") scope = json.stringOf("_embedded.items[i].values.customs_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.customs_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.product_type") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.product_type[j].locale") scope = json.stringOf("_embedded.items[i].values.product_type[j].scope") data_str = json.stringOf("_embedded.items[i].values.product_type[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.weight_netto") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.weight_netto[j].locale") scope = json.stringOf("_embedded.items[i].values.weight_netto[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.weight_netto[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.weight_netto[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.supplier_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.supplier_code[j].locale") scope = json.stringOf("_embedded.items[i].values.supplier_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.supplier_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.tariff_number") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.tariff_number[j].locale") scope = json.stringOf("_embedded.items[i].values.tariff_number[j].scope") data_str = json.stringOf("_embedded.items[i].values.tariff_number[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.weight_brutto") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.weight_brutto[j].locale") scope = json.stringOf("_embedded.items[i].values.weight_brutto[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.weight_brutto[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.weight_brutto[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_code_1") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_code_1[j].locale") scope = json.stringOf("_embedded.items[i].values.package_code_1[j].scope") data_str = json.stringOf("_embedded.items[i].values.package_code_1[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_code_2") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_code_2[j].locale") scope = json.stringOf("_embedded.items[i].values.package_code_2[j].scope") data_str = json.stringOf("_embedded.items[i].values.package_code_2[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_code_3") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_code_3[j].locale") scope = json.stringOf("_embedded.items[i].values.package_code_3[j].scope") data_str = json.stringOf("_embedded.items[i].values.package_code_3[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.supplier_number") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.supplier_number[j].locale") scope = json.stringOf("_embedded.items[i].values.supplier_number[j].scope") data_str = json.stringOf("_embedded.items[i].values.supplier_number[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_volume_1") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_volume_1[j].locale") scope = json.stringOf("_embedded.items[i].values.package_volume_1[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.package_volume_1[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.package_volume_1[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_volume_2") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_volume_2[j].locale") scope = json.stringOf("_embedded.items[i].values.package_volume_2[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.package_volume_2[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.package_volume_2[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_volume_3") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_volume_3[j].locale") scope = json.stringOf("_embedded.items[i].values.package_volume_3[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.package_volume_3[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.package_volume_3[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_weight_1") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_weight_1[j].locale") scope = json.stringOf("_embedded.items[i].values.package_weight_1[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.package_weight_1[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.package_weight_1[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_weight_2") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_weight_2[j].locale") scope = json.stringOf("_embedded.items[i].values.package_weight_2[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.package_weight_2[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.package_weight_2[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.package_weight_3") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.package_weight_3[j].locale") scope = json.stringOf("_embedded.items[i].values.package_weight_3[j].scope") dataAmount = json.stringOf("_embedded.items[i].values.package_weight_3[j].data.amount") dataUnit = json.stringOf("_embedded.items[i].values.package_weight_3[j].data.unit") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.country_of_origin") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.country_of_origin[j].locale") scope = json.stringOf("_embedded.items[i].values.country_of_origin[j].scope") data_str = json.stringOf("_embedded.items[i].values.country_of_origin[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.product_group_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.product_group_code[j].locale") scope = json.stringOf("_embedded.items[i].values.product_group_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.product_group_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.base_measurement_unit") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.base_measurement_unit[j].locale") scope = json.stringOf("_embedded.items[i].values.base_measurement_unit[j].scope") data_str = json.stringOf("_embedded.items[i].values.base_measurement_unit[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.measurement_unit_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.measurement_unit_code[j].locale") scope = json.stringOf("_embedded.items[i].values.measurement_unit_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.measurement_unit_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.product_category_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.product_category_code[j].locale") scope = json.stringOf("_embedded.items[i].values.product_category_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.product_category_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.sale_measurement_unit") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.sale_measurement_unit[j].locale") scope = json.stringOf("_embedded.items[i].values.sale_measurement_unit[j].scope") data_str = json.stringOf("_embedded.items[i].values.sale_measurement_unit[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.country_of_origin_code") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.country_of_origin_code[j].locale") scope = json.stringOf("_embedded.items[i].values.country_of_origin_code[j].scope") data_str = json.stringOf("_embedded.items[i].values.country_of_origin_code[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.vat_registration_group") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.vat_registration_group[j].locale") scope = json.stringOf("_embedded.items[i].values.vat_registration_group[j].scope") data_str = json.stringOf("_embedded.items[i].values.vat_registration_group[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.critical_amount_of_stock") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.critical_amount_of_stock[j].locale") scope = json.stringOf("_embedded.items[i].values.critical_amount_of_stock[j].scope") data_str = json.stringOf("_embedded.items[i].values.critical_amount_of_stock[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.stock_registration_group") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.stock_registration_group[j].locale") scope = json.stringOf("_embedded.items[i].values.stock_registration_group[j].scope") data_str = json.stringOf("_embedded.items[i].values.stock_registration_group[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.purchase_measurement_unit") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.purchase_measurement_unit[j].locale") scope = json.stringOf("_embedded.items[i].values.purchase_measurement_unit[j].scope") data_str = json.stringOf("_embedded.items[i].values.purchase_measurement_unit[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.product_registration_group") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.product_registration_group[j].locale") scope = json.stringOf("_embedded.items[i].values.product_registration_group[j].scope") data_str = json.stringOf("_embedded.items[i].values.product_registration_group[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.base_measurement_unit_quantity") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.base_measurement_unit_quantity[j].locale") scope = json.stringOf("_embedded.items[i].values.base_measurement_unit_quantity[j].scope") data_str = json.stringOf("_embedded.items[i].values.base_measurement_unit_quantity[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.comment") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.comment[j].locale") scope = json.stringOf("_embedded.items[i].values.comment[j].scope") data_str = json.stringOf("_embedded.items[i].values.comment[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.units_in_pallet") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.units_in_pallet[j].locale") scope = json.stringOf("_embedded.items[i].values.units_in_pallet[j].scope") data_str = json.stringOf("_embedded.items[i].values.units_in_pallet[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.first_description") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.first_description[j].locale") scope = json.stringOf("_embedded.items[i].values.first_description[j].scope") data_str = json.stringOf("_embedded.items[i].values.first_description[j].data") j = j + 1 j = 0 count_j = json.SizeOfArray("_embedded.items[i].values.second_description") while j < count_j : json.put_J(j) locale = json.stringOf("_embedded.items[i].values.second_description[j].locale") scope = json.stringOf("_embedded.items[i].values.second_description[j].scope") data_str = json.stringOf("_embedded.items[i].values.second_description[j].data") j = j + 1 i = i + 1 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.