put all image stuff in image.ml, make thumbnail for avatars

This commit is contained in:
Swrup 2022-04-04 14:39:25 +02:00
parent 7ad84cc1ab
commit eed9af951c
7 changed files with 240 additions and 186 deletions

View file

@ -293,32 +293,33 @@ let profile_post request =
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request ) )
let avatar_image request =
let get_post_image ~thumbnail request =
let id = Dream.param request "id" in
let image =
if thumbnail then Image.get_thumbnail id else Image.get_content id
in
match image with
| Error e -> render_unsafe e request
| Ok image_opt -> (
match image_opt with
| None -> Dream.respond ~status:`Not_Found "Image does not exists"
| Some image -> Dream.respond ~headers:[ ("Content-Type", "image") ] image )
let get_avatar_image request =
let nick = Dream.param request "user" in
match User.get_user_id_from_nick nick with
| Error _e -> Dream.respond ~status:`Not_Found "User does not exists"
| Ok user_id -> (
let avatar = User.get_avatar user_id in
let avatar = Image.get_user_content user_id in
match avatar with
| Ok (Some avatar) ->
Dream.respond ~headers:[ ("Content-Type", "image") ] avatar
| Ok None | Error _ -> (
| Ok None -> (
match Content.read "/assets/img/default_avatar.png" with
| None -> failwith "can't find default avatar"
| Some avatar ->
Dream.respond ~headers:[ ("Content-Type", "image") ] avatar ) )
let get_post_image ~thumbnail request =
let post_id = Dream.param request "post_id" in
if Babillard.post_exist post_id then
let image =
if thumbnail then Babillard.get_post_image_thumbnail post_id
else Babillard.get_post_image_content post_id
in
match image with
| Ok image -> Dream.respond ~headers:[ ("Content-Type", "image") ] image
| Error _ -> Dream.empty `Not_Found
else Dream.respond ~status:`Not_Found "Image does not exists"
Dream.respond ~headers:[ ("Content-Type", "image") ] avatar )
| Error e -> render_unsafe e request )
let markers request =
let markers = Pp_babillard.get_markers () in
@ -467,8 +468,8 @@ let routes =
; get_ "/discuss" Discuss.render
; get_ "/discuss/:comrade_id" Discuss.render_one
; post "/discuss/:comrade_id" Discuss.post
; get_ "/img/:post_id" (get_post_image ~thumbnail:false)
; get_ "/img/s/:post_id" (get_post_image ~thumbnail:true)
; get_ "/img/:id" (get_post_image ~thumbnail:false)
; get_ "/img/s/:id" (get_post_image ~thumbnail:true)
; get_ "/login" login_get
; post "/login" login_post
; get_ "/logout" logout
@ -482,7 +483,7 @@ let routes =
; get_ "/thread/:thread_id/feed" thread_feed_get
; get_ "/user" user
; get_ "/user/:user" user_profile
; get_ "/user/:user/avatar" avatar_image
; get_ "/user/:user/avatar" get_avatar_image
]
@
if App.open_registration then