# HG changeset patch # User bsw # Date 1612797981 -3600 # Node ID bbb537ba81b2424a6f3353f58836ec5e08956be6 # Parent 96336212e94d6d7884648739674da8dd528a2039 Added new API endpoint avatar diff -r 96336212e94d -r bbb537ba81b2 app/main/api/avatar.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/main/api/avatar.lua Mon Feb 08 16:26:21 2021 +0100 @@ -0,0 +1,45 @@ +slot.set_layout(nil, "application/json") + +if not ( + app.scopes.read_authors + or app.scopes.read_identities + or app.scopes.read_profiles +) then + return util.api_error(403, "Forbidden", "insufficient_scope", "Scope read_authors or read_identities or read_profiles required") +end + +local r = json.object{ + result = json.array() +} + +local selector = MemberImage:new_selector() + :add_where("image_type = 'avatar'") + :add_where("scaled") + :optional_object_mode() + +local member_id = param.get("member_id") +if member_id then + selector:add_where{ "member_id = ?", member_id } +else + return util.api_error(404, "Missing parameter", "no_member_id", "No member_id provided") +end + +local member_image = selector:exec() + +local data +local content_type + +if member_image then + data = member_image.data + content_type = member_image.content_type +else + local filename = WEBMCP_BASE_PATH .. "static/avatar.jpg" + local f = assert(io.open(filename), "Cannot open default image file") + data = f:read("*a") + content_type = "image/jpeg" + f:close() +end + +slot.set_layout(nil, "image/jpeg") +slot.put_into("data", data) + diff -r 96336212e94d -r bbb537ba81b2 env/request/router.lua --- a/env/request/router.lua Mon Feb 08 15:45:10 2021 +0100 +++ b/env/request/router.lua Mon Feb 08 16:26:21 2021 +0100 @@ -5,6 +5,7 @@ application = true, info = true, member = true, + avatar = true, notify_email = true, profile_info = true, profile = true,