bsw@1635: slot.set_layout(nil, "application/json") bsw@1635: bsw@1635: if not ( bsw@1635: app.scopes.read_authors bsw@1635: or app.scopes.read_identities bsw@1635: or app.scopes.read_profiles bsw@1635: ) then bsw@1635: return util.api_error(403, "Forbidden", "insufficient_scope", "Scope read_authors or read_identities or read_profiles required") bsw@1635: end bsw@1635: bsw@1635: local r = json.object{ bsw@1635: result = json.array() bsw@1635: } bsw@1635: bsw@1635: local selector = MemberImage:new_selector() bsw@1635: :add_where("image_type = 'avatar'") bsw@1635: :add_where("scaled") bsw@1635: :optional_object_mode() bsw@1635: bsw@1635: local member_id = param.get("member_id") bsw@1635: if member_id then bsw@1635: selector:add_where{ "member_id = ?", member_id } bsw@1635: else bsw@1635: return util.api_error(404, "Missing parameter", "no_member_id", "No member_id provided") bsw@1635: end bsw@1635: bsw@1635: local member_image = selector:exec() bsw@1635: bsw@1635: local data bsw@1635: local content_type bsw@1635: bsw@1635: if member_image then bsw@1635: data = member_image.data bsw@1635: content_type = member_image.content_type bsw@1635: else bsw@1635: local filename = WEBMCP_BASE_PATH .. "static/avatar.jpg" bsw@1635: local f = assert(io.open(filename), "Cannot open default image file") bsw@1635: data = f:read("*a") bsw@1635: content_type = "image/jpeg" bsw@1635: f:close() bsw@1635: end bsw@1635: bsw@1635: slot.set_layout(nil, "image/jpeg") bsw@1635: slot.put_into("data", data) bsw@1635: