SwiftApi.Executor (SwiftApi v0.3.0) View Source
Пример работы с api:
client = %SwiftApi.Client{user_name: "stage-user",
password: "password",
domain_id: "domain_id",
url: "url",
project_id: "project_id",
ca_certificate_path: ca_certificate_path,
container: container_name}
container = "my_test"
filename = "test_data2.html"
SwiftApi.Executor.object_temp_url(client, container, filename, 50)
# создадим контейнер
SwiftApi.Executor.create_container(client, "new_container") # => {:ok, ""}
# посмотрим назначенный на него ключ генерации временных ссылок - это же ключ и всего аккаунта по умолчанию
SwiftApi.IdentityTokenWorker.get_temp_url_key("new_container") # => "849df5780624b913595799ae01c90afe16a18a822b51b296"
SwiftApi.IdentityTokenWorker.get_temp_url_key() # => "849df5780624b913595799ae01c90afe16a18a822b51b296"
# прочитаем некий существующий файл
SwiftApi.Executor.get(client, "my_test", "test_data.html") # => {:ok, "<html><body><p>Hello, test user!</p></body></html>"}
# положим в существующий контейнер некоторые данные
SwiftApi.Executor.put(client, "my_test", "test_data", "new data") # => {:ok, ""}
# получим временную ссылку на этот новый файл
SwiftApi.Executor.object_temp_url(client, "my_test", "test_data", 50) # => object_temp_url # строка
# убедимся, что использовался ключ, заданный на этот ранее созданный контейнер
SwiftApi.IdentityTokenWorker.get_temp_url_key("my_test") # => "some_key" Link to this section Summary
Functions
прочитать детали аккаунта
прочитать детали контейнера
создать при отсутствии контейнер
прочитать файл из хранилища
прочитать файл из хранилища
функция авторизации исполнителя (executor)
получить временную ссылку на файл
Обновить метаданные файла в хранилище
положить файл в хранилище
положить файл в хранилище
получить параметры для временной ссылки
Link to this section Functions
прочитать детали аккаунта
прочитать детали контейнера
создать при отсутствии контейнер
прочитать файл из хранилища
отличие от get/3 в том, что вторым аргументом передаётся полный путь файла с хранилищем.
SwiftApi.Executor.get(client, "my_test/test_data2.html") # => {:ok, "<html><body><p>user!!!!!111</p></body></html>"}Важно! путь к файлу не должен начинаться со слэша ("/")!
прочитать файл из хранилища
- client - структура данных
SwiftApi.Client - container - контейнер хранилища. при вызове с пустой строкой или nil в этом аргументе будет использован заданный client.container
- file - имя файла в контейнере
SwiftApi.Executor.get(%SwiftApi.Client{...}, nil, "first_name") # => {:ok, "some-data-aaaa", metadata} SwiftApi.Executor.get(%SwiftApi.Client{...}, "my_test", "test_data2.html") # => {:ok, "<html><body><p>user!!!!!111</p></body></html>", metadata}
Важно! контейнер не должен начинаться со слэша ("/")!
функция авторизации исполнителя (executor)
в качестве параметра принимает структуру SwiftApi.Client
перед использованием api обязательно должна быть вызвана с успешным завершением
при неудачной аутентификации - когда код статуса отличен от 200, 201, 202, через три таких попытки возвращается ошибка
получить временную ссылку на файл
- client - структура клиента swift, см.
SwiftApi.Client - container - контейнер, где размещён файл. по умолчанию будет использован контейнер, заданный в клиенте (
client.container) - file - имя файла, например, "filename.txt"
- ttl - срок жизни ссылки. 60 - 1 минута, 60*60 = 3600 = 1 час, и т.д.
SwiftApi.Worker.object_temp_url(client, container, filename, 60)
# => "https://object.someurl.pro/v1/AUTH_somehash/my_test1_container1/test.txt?temp_url_sig=efa3e83eaa81a71d47350593d353f61af48506ba&temp_url_expires=1552462575" Обновить метаданные файла в хранилище
- client - структура данных
SwiftApi.Client - container - контейнер хранилища. при вызове с пустой строкой или nil в этом аргументе будет использован заданный client.container
- file - имя файла в контейнере
- headers - метаданные
SwiftApi.Executor.post(%SwiftApi.Client{...}, nil, "first_name", ["X-Object-Meta-{name}": value]) # => {:ok, [metadata]}
Пример ответа:
{:ok, [ {"content-length", "76"}, {"content-type", "text/html; charset=UTF-8"}, {"x-trans-id", "tx815c30837ddc4c6f89aac-005fb979ca"}, {"x-openstack-request-id", "tx815c30837ddc4c6f89aac-005fb979ca"}, {"date", "Sat, 21 Nov 2020 20:34:18 GMT"} ]}
**Важно!** контейнер не должен начинаться со слэша ("/")! положить файл в хранилище
отличие от put/4 в том, что вторым аргументом передаётся полный путь файла с хранилищем.
SwiftApi.Executor.put(client, "my_test/test_data2.html", "data") # => {:ok, ""}Важно! путь к файлу не должен начинаться со слэша ("/")!
положить файл в хранилище
- client - структура данных
SwiftApi.Client - container - контейнер хранилища. при вызове с пустой строкой или nil в этом аргументе будет использован заданный client.container
- file - имя файла в контейнере
- content - содержимое файла
SwiftApi.Executor.put(%SwiftApi.Client{...}, nil, "first_name", "some_data") # => {:ok, ""} SwiftApi.Executor.put(%SwiftApi.Client{...}, "my_test", "test_data2.html", "some_data") # => {:ok, ""}
Важно! контейнер не должен начинаться со слэша ("/")!
получить параметры для временной ссылки
- ttl - время жизни ссылки, например, 606024 = 86400 = 1 день
- key - используемый ключ, в частности заголовок "X-Container-Meta-Temp-URL-Key"
- url - путь до объекта, например: "/v1/AUTH_b31fb563c0b644c8a6a6c1da43258e88/my_test_container/test.txt"
- method - тип запроса, по умолчанию GET
в результате вернётся пара {temp_url_sig, temp_url_expires}