annotate 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 |
|
rev |
line source |
bsw@1635
|
1 slot.set_layout(nil, "application/json")
|
bsw@1635
|
2
|
bsw@1635
|
3 if not (
|
bsw@1635
|
4 app.scopes.read_authors
|
bsw@1635
|
5 or app.scopes.read_identities
|
bsw@1635
|
6 or app.scopes.read_profiles
|
bsw@1635
|
7 ) then
|
bsw@1635
|
8 return util.api_error(403, "Forbidden", "insufficient_scope", "Scope read_authors or read_identities or read_profiles required")
|
bsw@1635
|
9 end
|
bsw@1635
|
10
|
bsw@1635
|
11 local r = json.object{
|
bsw@1635
|
12 result = json.array()
|
bsw@1635
|
13 }
|
bsw@1635
|
14
|
bsw@1635
|
15 local selector = MemberImage:new_selector()
|
bsw@1635
|
16 :add_where("image_type = 'avatar'")
|
bsw@1635
|
17 :add_where("scaled")
|
bsw@1635
|
18 :optional_object_mode()
|
bsw@1635
|
19
|
bsw@1635
|
20 local member_id = param.get("member_id")
|
bsw@1635
|
21 if member_id then
|
bsw@1635
|
22 selector:add_where{ "member_id = ?", member_id }
|
bsw@1635
|
23 else
|
bsw@1635
|
24 return util.api_error(404, "Missing parameter", "no_member_id", "No member_id provided")
|
bsw@1635
|
25 end
|
bsw@1635
|
26
|
bsw@1635
|
27 local member_image = selector:exec()
|
bsw@1635
|
28
|
bsw@1635
|
29 local data
|
bsw@1635
|
30 local content_type
|
bsw@1635
|
31
|
bsw@1635
|
32 if member_image then
|
bsw@1635
|
33 data = member_image.data
|
bsw@1635
|
34 content_type = member_image.content_type
|
bsw@1635
|
35 else
|
bsw@1635
|
36 local filename = WEBMCP_BASE_PATH .. "static/avatar.jpg"
|
bsw@1635
|
37 local f = assert(io.open(filename), "Cannot open default image file")
|
bsw@1635
|
38 data = f:read("*a")
|
bsw@1635
|
39 content_type = "image/jpeg"
|
bsw@1635
|
40 f:close()
|
bsw@1635
|
41 end
|
bsw@1635
|
42
|
bsw@1635
|
43 slot.set_layout(nil, "image/jpeg")
|
bsw@1635
|
44 slot.put_into("data", data)
|
bsw@1635
|
45
|