mirror of
https://github.com/penpot/penpot.git
synced 2025-08-03 23:28:24 +02:00
46 lines
1.5 KiB
Clojure
46 lines
1.5 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; This Source Code Form is "Incompatible With Secondary Licenses", as
|
|
;; defined by the Mozilla Public License, v. 2.0.
|
|
;;
|
|
;; Copyright (c) 2020 UXBOX Labs SL
|
|
|
|
(ns app.http.thumbnail
|
|
(:require
|
|
[app.common.exceptions :as exc :include-macros true]
|
|
[app.common.spec :as us]
|
|
[app.http.export-bitmap :as bitmap]
|
|
[cljs.spec.alpha :as s]
|
|
[cuerdas.core :as str]
|
|
[lambdaisland.glogi :as log]
|
|
[promesa.core :as p]))
|
|
|
|
(s/def ::page-id ::us/uuid)
|
|
(s/def ::file-id ::us/uuid)
|
|
(s/def ::object-id ::us/uuid)
|
|
(s/def ::scale ::us/number)
|
|
|
|
(s/def ::handler-params
|
|
(s/keys :req-un [::page-id ::file-id ::object-id]))
|
|
|
|
(declare handle-single-export)
|
|
(declare handle-multiple-export)
|
|
(declare perform-export)
|
|
(declare attach-filename)
|
|
|
|
(defn thumbnail-handler
|
|
[{:keys [params browser cookies] :as request}]
|
|
(let [{:keys [page-id file-id object-id]} (us/conform ::handler-params params)
|
|
params {:token (.get ^js cookies "auth-token")
|
|
:file-id file-id
|
|
:page-id page-id
|
|
:object-id object-id
|
|
:scale 0.3
|
|
:type :jpeg}]
|
|
(p/let [content (bitmap/screenshot-object browser params)]
|
|
{:status 200
|
|
:body content
|
|
:headers {"content-type" "image/jpeg"
|
|
"content-length" (alength content)}})))
|