ExHubic v0.1.0 ExHubic.Services.V1.Query
Helper functions for building queries for the hubic api.
Example
ExHubic.Services.V1.Query.scope() |> ExHubic.request!()
Summary
Functions
Get the account object properties
Returns used space & quota of your account
Deletes a public url to a file
Get detailed information for an object at a given uri
Get all links as a list of links (showing the object internal uri - not the indirectUri)
Get all published objects' public urls with detailed info
Returns openstack credentials for connecting to the file API
Create a public url to a file
Get the possible scopes for hubic API
Functions
Specs
account :: ExHubic.Query.t
Get the account object properties.
Api
GET /account
Example
ExHubic.Services.V1.Query.account() |> ExHubic.request()
Doctest
iex> ExHubic.Services.V1.Query.account()
%ExHubic.Query{method: :get, params: %{}, service: :hubic, uri: "/account"}
Specs
account_usage :: ExHubic.Query.t
Returns used space & quota of your account.
Api
GET /account/usage
Example
ExHubic.Services.V1.Query.account_usage() |> ExHubic.request!()
Doctest
iex> ExHubic.Services.V1.Query.account_usage()
%ExHubic.Query{method: :get, uri: "/account/usage", params: %{}}
Specs
delete_link(String.t) :: ExHubic.Query.t
Deletes a public url to a file
Api
DELETE /account/links/{uri}
Example:
import ExHubic.Services.V1.Query, only: [delete_link: 1]
container = "new_container"
object = "server_file.txt"
folder = "/"
uri = folder <> object
query = delete_link(uri)
ExHubic.request(query)
Doctest
iex> ExHubic.Services.V1.Query.delete_link("/test_folder/test_file.txt")
%ExHubic.Query{method: :delete, params: %{}, service: :hubic,
uri: "/account/links/%2Ftest_folder%2Ftest_file.txt"}
Specs
get_link(String.t) :: ExHubic.Query.t
Get detailed information for an object at a given uri.
Api
GET /account/links/{uri}
Example
import ExHubic.Services.V1.Query, only: [get_link: 1]
container = "new_container"
folder = "/"
object = "server_file.txt"
uri = folder <> object
query = get_link(uri)
ExHubic.request(query)
Doctest
iex> ExHubic.Services.V1.Query.get_link("test")
%ExHubic.Query{method: :get, uri: "/account/links/%2Ftest", params: %{}}
Specs
get_links :: ExHubic.Query.t
Get all links as a list of links (showing the object internal uri - not the indirectUri).
Api
GET /account/links
Example
ExHubic.Services.V1.Query.get_links() |> ExHubic.request!()
Doctest
iex> ExHubic.Services.V1.Query.get_links()
%ExHubic.Query{method: :get, uri: "/account/links", params: %{}}
Specs
get_links_detailed :: ExHubic.Query.t
Get all published objects' public urls with detailed info.
Api
GET /account/getAllLinks
Example
ExHubic.Services.V1.Query.get_links_detailed() |> ExHubic.request!()
Doctest
iex> ExHubic.Services.V1.Query.get_links_detailed()
%ExHubic.Query{method: :get, uri: "/account/getAllLinks", params: %{}}
Specs
openstack_credentials :: ExHubic.Query.t
Returns openstack credentials for connecting to the file API.
Api
GET /account/credentials
Example
ExHubic.Services.V1.Query.openstack_credentials() |> ExHubic.request!()
Doctest
iex> ExHubic.Services.V1.Query.openstack_credentials()
%ExHubic.Query{method: :get, uri: "/account/credentials", params: %{}}
Create a public url to a file.
Api
POST /account/links
Arguments
- folder: the psuedofolder to which the file has been saved in the container. defaults to "/".
- ttl: time in days for which the link will remain public. Note: Ovh only allow a maximum ttl of 30 days
after the link is automatically inactivated. The ttl can be 1,5,10,15,20,25 or 30. See hubic faq
under
What is sharing?
for more information. defaults to 5. - file: this is the type of object being created. can be a "file" or "folder". defaults to "file".
Example:
import ExHubic.Services.V1.Query, only: [publish_object: 3]
container = "new_container"
object = "server_file.txt"
query = publish_object(container, object, folder: "/")
{:ok, resp} = ExHubic.request(query)
%{ "indirectUrl" => link_indirect_uri, "expirationDate" => exp,
"creationDate" => created_on, "uri" => uri } = resp.body
Notes:
- The indirectUrl seems to redirect the user to a temp url (signed url).
Doctest:
iex> ExHubic.Services.V1.Query.publish_object("test_container", "test_file.txt")
%ExHubic.Query{headers: [], method: :post,
params: %{binary: "{\"uri\":\"/test_file.txt\",\"type\":\"file\",\"ttl\":\"5\",\"mode\":\"ro\",\"container\":\"test_container\",\"comment\":\"none\"}"},
service: :hubic, uri: "/account/links"}