mdii.ex (1224B)
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 @moduledoc "Represents uploader for https://github.com/hakaba-hitoyo/minimal-digital-image-infrastructure" 7 8 alias Pleroma.Config 9 alias Pleroma.HTTP 10 11 @behaviour Pleroma.Uploaders.Uploader 12 13 # MDII-hosted images are never passed through the MediaPlug; only local media. 14 # Delegate to Pleroma.Uploaders.Local 15 def get_file(file) do 16 Pleroma.Uploaders.Local.get_file(file) 17 end 18 19 def put_file(upload) do 20 cgi = Config.get([Pleroma.Uploaders.MDII, :cgi]) 21 files = Config.get([Pleroma.Uploaders.MDII, :files]) 22 23 {:ok, file_data} = File.read(upload.tempfile) 24 25 extension = String.split(upload.name, ".") |> List.last() 26 query = "#{cgi}?#{extension}" 27 28 with {:ok, %{status: 200, body: body}} <- 29 HTTP.post(query, file_data, [], adapter: [pool: :default]) do 30 remote_file_name = String.split(body) |> List.first() 31 public_url = "#{files}/#{remote_file_name}.#{extension}" 32 {:ok, {:url, public_url}} 33 else 34 _ -> Pleroma.Uploaders.Local.put_file(upload) 35 end 36 end 37 end