From 39863703b3fb48e534d1fa540ca5cae66d3a2f24 Mon Sep 17 00:00:00 2001 From: Zed Date: Mon, 1 Jun 2020 09:45:38 +0200 Subject: [PATCH] Error stuff --- src/parser.nim | 16 ++++++++++------ src/types.nim | 3 ++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/parser.nim b/src/parser.nim index 66e7195..67fa0c2 100644 --- a/src/parser.nim +++ b/src/parser.nim @@ -1,6 +1,10 @@ import json, strutils, options, tables, times, math import types, parserutils +proc parseError(js: JsonNode): Error = + if js == nil or js.kind != JArray or js.len < 1: return null + return Error(js[0]{"code"}.getInt) + proc parseProfile(js: JsonNode; id=""): Profile = if js == nil: return result = Profile( @@ -24,12 +28,12 @@ proc parseProfile(js: JsonNode; id=""): Profile = result.expandProfileEntities(js) proc parseGraphProfile*(js: JsonNode; username: string): Profile = - with errors, js{"errors"}: - for error in errors: - case Error(error{"code"}.getInt) - of notFound: return Profile(username: username) - of suspended: return Profile(username: username, suspended: true) - else: discard + if js == nil: return + with error, js{"errors"}: + result = Profile(username: username) + if parseError(error) == suspended: + result.suspended = true + return let user = js{"data", "user", "legacy"} let id = js{"data", "user", "rest_id"}.getStr diff --git a/src/types.nim b/src/types.nim index 7131a5a..1f75cbf 100644 --- a/src/types.nim +++ b/src/types.nim @@ -13,10 +13,11 @@ type # agent*: string Error* = enum + null = 0 protectedUser = 22 couldntAuth = 32 doesntExist = 34 - notFound = 50 + userNotFound = 50 suspended = 63 invalidToken = 89 listIdOrSlug = 112