Zig
Zig
Shopify Get all products, showing only some attributes
See more Shopify Examples
Get all products, showing only some attributesChilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
const rest = try chilkat.Rest.init();
defer rest.deinit();
rest.setAuthBasic("SHOPIFY_PRIVATE_API_KEY", "SHOPIFY_PRIVATE_API_KEY") catch {};
rest.connect("chilkat.myshopify.com", 443, true, true) catch {
std.debug.print("{s}\n", .{try rest.getLastErrorText(alloc)});
return;
};
const sb_json = try chilkat.StringBuilder.init();
defer sb_json.deinit();
rest.fullRequestNoBodySb("GET", "/admin/products.json?fields=id,images,title", sb_json) catch {
std.debug.print("{s}\n", .{try rest.getLastErrorText(alloc)});
return;
};
if (rest.getResponseStatusCode() != 200) {
std.debug.print("Received error response code: {d}\n", .{rest.getResponseStatusCode()});
std.debug.print("Response body:\n", .{});
std.debug.print("{s}\n", .{try sb_json.getAsString(alloc)});
return;
}
const json = try chilkat.JsonObject.init();
defer json.deinit();
json.loadSb(sb_json) catch {};
// The following code parses the JSON response.
// A sample JSON response is shown below the sample code.
var i: i32 = 0;
var id: i32 = 0;
var title: [:0]const u8 = "";
var j: i32 = 0;
var count_j: i32 = 0;
var product_id: i32 = 0;
var position: i32 = 0;
var created_at: [:0]const u8 = "";
var updated_at: [:0]const u8 = "";
var width: i32 = 0;
var height: i32 = 0;
var src: [:0]const u8 = "";
var k: i32 = 0;
var count_k: i32 = 0;
var int_val: i32 = 0;
i = 0;
const count_i = json.sizeOfArray("products");
while (i < count_i) {
json.setI(i);
id = json.intOf("products[i].id");
title = try json.stringOf(alloc, "products[i].title");
j = 0;
count_j = json.sizeOfArray("products[i].images");
while (j < count_j) {
json.setJ(j);
id = json.intOf("products[i].images[j].id");
product_id = json.intOf("products[i].images[j].product_id");
position = json.intOf("products[i].images[j].position");
created_at = try json.stringOf(alloc, "products[i].images[j].created_at");
updated_at = try json.stringOf(alloc, "products[i].images[j].updated_at");
width = json.intOf("products[i].images[j].width");
height = json.intOf("products[i].images[j].height");
src = try json.stringOf(alloc, "products[i].images[j].src");
k = 0;
count_k = json.sizeOfArray("products[i].images[j].variant_ids");
while (k < count_k) {
json.setK(k);
int_val = json.intOf("products[i].images[j].variant_ids[k]");
k = k + 1;
}
j = j + 1;
}
i = i + 1;
}
// A sample JSON response body that is parsed by the above code:
// {
// "products": [
// {
// "id": 632910392,
// "title": "IPod Nano - 8GB",
// "images": [
// {
// "id": 850703190,
// "product_id": 632910392,
// "position": 1,
// "created_at": "2017-09-22T14:08:02-04:00",
// "updated_at": "2017-09-22T14:08:02-04:00",
// "width": 123,
// "height": 456,
// "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1506103682",
// "variant_ids": [
// ]
// },
// {
// "id": 562641783,
// "product_id": 632910392,
// "position": 2,
// "created_at": "2017-09-22T14:08:02-04:00",
// "updated_at": "2017-09-22T14:08:02-04:00",
// "width": 123,
// "height": 456,
// "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano-2.png?v=1506103682",
// "variant_ids": [
// 808950810
// ]
// }
// ]
// },
// {
// "id": 921728736,
// "title": "IPod Touch 8GB",
// "images": [
// ]
// }
// ]
// }
std.debug.print("Example Completed.\n", .{});
}