Remove Uploaders.Swift
This commit is contained in:
parent
a565dbde4f
commit
4f42093220
|
@ -1,51 +0,0 @@
|
||||||
# Pleroma: A lightweight social networking server
|
|
||||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Uploaders.Swift.Keystone do
|
|
||||||
use HTTPoison.Base
|
|
||||||
|
|
||||||
def process_url(url) do
|
|
||||||
Enum.join(
|
|
||||||
[Pleroma.Config.get!([Pleroma.Uploaders.Swift, :auth_url]), url],
|
|
||||||
"/"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
def process_response_body(body) do
|
|
||||||
body
|
|
||||||
|> Jason.decode!()
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_token do
|
|
||||||
settings = Pleroma.Config.get(Pleroma.Uploaders.Swift)
|
|
||||||
username = Keyword.fetch!(settings, :username)
|
|
||||||
password = Keyword.fetch!(settings, :password)
|
|
||||||
tenant_id = Keyword.fetch!(settings, :tenant_id)
|
|
||||||
|
|
||||||
case post(
|
|
||||||
"/tokens",
|
|
||||||
make_auth_body(username, password, tenant_id),
|
|
||||||
["Content-Type": "application/json"],
|
|
||||||
hackney: [:insecure]
|
|
||||||
) do
|
|
||||||
{:ok, %Tesla.Env{status: 200, body: body}} ->
|
|
||||||
body["access"]["token"]["id"]
|
|
||||||
|
|
||||||
{:ok, %Tesla.Env{status: _}} ->
|
|
||||||
""
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def make_auth_body(username, password, tenant) do
|
|
||||||
Jason.encode!(%{
|
|
||||||
:auth => %{
|
|
||||||
:passwordCredentials => %{
|
|
||||||
:username => username,
|
|
||||||
:password => password
|
|
||||||
},
|
|
||||||
:tenantId => tenant
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,29 +0,0 @@
|
||||||
# Pleroma: A lightweight social networking server
|
|
||||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Uploaders.Swift.Client do
|
|
||||||
use HTTPoison.Base
|
|
||||||
|
|
||||||
def process_url(url) do
|
|
||||||
Enum.join(
|
|
||||||
[Pleroma.Config.get!([Pleroma.Uploaders.Swift, :storage_url]), url],
|
|
||||||
"/"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
def upload_file(filename, body, content_type) do
|
|
||||||
token = Pleroma.Uploaders.Swift.Keystone.get_token()
|
|
||||||
|
|
||||||
case put("#{filename}", body, "X-Auth-Token": token, "Content-Type": content_type) do
|
|
||||||
{:ok, %Tesla.Env{status: 201}} ->
|
|
||||||
{:ok, {:file, filename}}
|
|
||||||
|
|
||||||
{:ok, %Tesla.Env{status: 401}} ->
|
|
||||||
{:error, "Unauthorized, Bad Token"}
|
|
||||||
|
|
||||||
{:error, _} ->
|
|
||||||
{:error, "Swift Upload Error"}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,19 +0,0 @@
|
||||||
# Pleroma: A lightweight social networking server
|
|
||||||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Uploaders.Swift do
|
|
||||||
@behaviour Pleroma.Uploaders.Uploader
|
|
||||||
|
|
||||||
def get_file(name) do
|
|
||||||
{:ok, {:url, Path.join([Pleroma.Config.get!([__MODULE__, :object_url]), name])}}
|
|
||||||
end
|
|
||||||
|
|
||||||
def put_file(upload) do
|
|
||||||
Pleroma.Uploaders.Swift.Client.upload_file(
|
|
||||||
upload.path,
|
|
||||||
File.read!(upload.tmpfile),
|
|
||||||
upload.content_type
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -67,20 +67,3 @@ config :pleroma, Pleroma.Uploaders.Local, uploads: "<%= uploads_dir %>"
|
||||||
# For using third-party S3 clones like wasabi, also do:
|
# For using third-party S3 clones like wasabi, also do:
|
||||||
# config :ex_aws, :s3,
|
# config :ex_aws, :s3,
|
||||||
# host: "s3.wasabisys.com"
|
# host: "s3.wasabisys.com"
|
||||||
|
|
||||||
|
|
||||||
# Configure Openstack Swift support if desired.
|
|
||||||
#
|
|
||||||
# Many openstack deployments are different, so config is left very open with
|
|
||||||
# no assumptions made on which provider you're using. This should allow very
|
|
||||||
# wide support without needing separate handlers for OVH, Rackspace, etc.
|
|
||||||
#
|
|
||||||
# config :pleroma, Pleroma.Uploaders.Swift,
|
|
||||||
# container: "some-container",
|
|
||||||
# username: "api-username-yyyy",
|
|
||||||
# password: "api-key-xxxx",
|
|
||||||
# tenant_id: "<openstack-project/tenant-id>",
|
|
||||||
# auth_url: "https://keystone-endpoint.provider.com",
|
|
||||||
# storage_url: "https://swift-endpoint.prodider.com/v1/AUTH_<tenant>/<container>",
|
|
||||||
# object_url: "https://cdn-endpoint.provider.com/<container>"
|
|
||||||
#
|
|
||||||
|
|
Loading…
Reference in a new issue