defmodule CozyOSS do
@moduledoc """
An SDK builder for RESTful API of Aliyun OSS / Alibaba Cloud OSS.
"""
alias __MODULE__.Config
alias __MODULE__.ApiSpec
alias __MODULE__.ApiRequest
alias __MODULE__.ApiClient
alias __MODULE__.Object
@doc """
Bulids a struct `%CozyOSS.ApiRequest{}`.
This function has built-in signing support, and it's controlled by option `:sign_by`:
+ `sign_by: :header` (default) - add signatures to request headers.
+ `sign_by: :url` - add signatures to URL.
When using `sign_by: :url`, an extra option `:expiration_in_seconds` is supported.
See `CozyOSS.ApiRequest.build!/3` for more information.
"""
@spec build!(Config.t(), ApiSpec.config()) :: any()
def build!(%Config{} = config, api_spec_config, opts \\ []) do
api_spec = ApiSpec.build!(api_spec_config)
ApiRequest.build!(config, api_spec, opts)
end
defdelegate request(api_request), to: ApiClient
defdelegate to_url!(api_request), to: ApiRequest
defdelegate sign_post_object_policy(config, conditions, expiration_in_seconds), to: Object
@doc false
def json_library, do: Application.fetch_env!(:cozy_oss, :json_library)
end