Merge branch 'dokku' into 'develop'
[akkoma] / lib / pleroma / uploaders / mdii.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Uploaders.MDII do
6 alias Pleroma.Config
7 alias Pleroma.HTTP
8
9 @behaviour Pleroma.Uploaders.Uploader
10
11 # MDII-hosted images are never passed through the MediaPlug; only local media.
12 # Delegate to Pleroma.Uploaders.Local
13 def get_file(file) do
14 Pleroma.Uploaders.Local.get_file(file)
15 end
16
17 def put_file(upload) do
18 cgi = Config.get([Pleroma.Uploaders.MDII, :cgi])
19 files = Config.get([Pleroma.Uploaders.MDII, :files])
20
21 {:ok, file_data} = File.read(upload.tempfile)
22
23 extension = String.split(upload.name, ".") |> List.last()
24 query = "#{cgi}?#{extension}"
25
26 with {:ok, %{status: 200, body: body}} <-
27 HTTP.post(query, file_data, [], adapter: [pool: :default]) do
28 remote_file_name = String.split(body) |> List.first()
29 public_url = "#{files}/#{remote_file_name}.#{extension}"
30 {:ok, {:url, public_url}}
31 else
32 _ -> Pleroma.Uploaders.Local.put_file(upload)
33 end
34 end
35 end