liquid_feedback_frontend
diff app/main/api/avatar.lua @ 1635:bbb537ba81b2
Added new API endpoint avatar
author | bsw |
---|---|
date | Mon Feb 08 16:26:21 2021 +0100 (2021-02-08) |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/app/main/api/avatar.lua Mon Feb 08 16:26:21 2021 +0100 1.3 @@ -0,0 +1,45 @@ 1.4 +slot.set_layout(nil, "application/json") 1.5 + 1.6 +if not ( 1.7 + app.scopes.read_authors 1.8 + or app.scopes.read_identities 1.9 + or app.scopes.read_profiles 1.10 +) then 1.11 + return util.api_error(403, "Forbidden", "insufficient_scope", "Scope read_authors or read_identities or read_profiles required") 1.12 +end 1.13 + 1.14 +local r = json.object{ 1.15 + result = json.array() 1.16 +} 1.17 + 1.18 +local selector = MemberImage:new_selector() 1.19 + :add_where("image_type = 'avatar'") 1.20 + :add_where("scaled") 1.21 + :optional_object_mode() 1.22 + 1.23 +local member_id = param.get("member_id") 1.24 +if member_id then 1.25 + selector:add_where{ "member_id = ?", member_id } 1.26 +else 1.27 + return util.api_error(404, "Missing parameter", "no_member_id", "No member_id provided") 1.28 +end 1.29 + 1.30 +local member_image = selector:exec() 1.31 + 1.32 +local data 1.33 +local content_type 1.34 + 1.35 +if member_image then 1.36 + data = member_image.data 1.37 + content_type = member_image.content_type 1.38 +else 1.39 + local filename = WEBMCP_BASE_PATH .. "static/avatar.jpg" 1.40 + local f = assert(io.open(filename), "Cannot open default image file") 1.41 + data = f:read("*a") 1.42 + content_type = "image/jpeg" 1.43 + f:close() 1.44 +end 1.45 + 1.46 +slot.set_layout(nil, "image/jpeg") 1.47 +slot.put_into("data", data) 1.48 +