~xdavidwu/himitsu-docker

a885a2153f71b57b1678ecf522894815367e335f — xdavidwu 11 months ago c31fcaa
Revert "get: return json even if nothing is found"

This reverts commit ba40364d3e79c94aceb6681c8c2b121546314102.

let's try to fix it properly
1 files changed, 17 insertions(+), 18 deletions(-)

M cmd/docker-credential-himitsu/get.ha
M cmd/docker-credential-himitsu/get.ha => cmd/docker-credential-himitsu/get.ha +17 -18
@@ 20,27 20,26 @@ fn get(hi: net::socket) void = {
	const iter = client::query(hi, client::operation::QUERY, &query, client::flags::DECRYPT)!;
	const json = json::newobject();
	defer json::finish(json);
	json::set(&json, "SeverURL", url);
	json::set(&json, "Username", "");
	json::set(&json, "Secret", "");
	match (client::next(&iter)!) {
	const res = match (client::next(&iter)!) {
	case void =>
		yield;
		return;
	case let s: const str =>
		const parts = shlex::split(s)!;
		defer strings::freeall(parts);
		const query = query::parse_items(parts)!;
		defer query::finish(&query);
		let secreti = 0z, usernamei = 0z;
		for (let i = 0z; i < len(query.items); i += 1) {
			if (strings::compare(query.items[i].key, "secret") == 0) {
				secreti = i;
			} else if (strings::compare(query.items[i].key, "username") == 0) {
				usernamei = i;
			};
		yield s;
	};
	const parts = shlex::split(res)!;
	defer strings::freeall(parts);
	const query = query::parse_items(parts)!;
	defer query::finish(&query);
	let secreti = 0z, usernamei = 0z;
	for (let i = 0z; i < len(query.items); i += 1) {
		if (strings::compare(query.items[i].key, "secret") == 0) {
			secreti = i;
		} else if (strings::compare(query.items[i].key, "username") == 0) {
			usernamei = i;
		};
		json::set(&json, "Username", query.items[usernamei].value);
		json::set(&json, "Secret", query.items[secreti].value);
	};
	json::set(&json, "SeverURL", url);
	json::set(&json, "Username", query.items[usernamei].value);
	json::set(&json, "Secret", query.items[secreti].value);
	json::dump(os::stdout, json)!;
};