Packages
ckeditor5_phoenix
1.0.8
1.28.2
1.28.1
1.28.0
1.27.2
1.27.1
1.27.0
1.26.0
1.25.1
1.25.0
1.24.2
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.2
1.17.1
1.17.0
1.16.1
1.16.0
1.15.8
1.15.7
1.15.6
1.15.5
1.15.4
1.15.3
1.15.2
1.15.1
1.15.0
1.14.2
1.14.1
1.14.0
1.13.0
1.12.0
1.11.0
1.10.2
1.10.1
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.0
1.0.8
1.0.7
CKEditor 5 integration for Phoenix Framework
Current section
Files
Jump to
Current section
Files
lib/cloud/asset_package/url_builder.ex
defmodule CKEditor5.Cloud.UrlBuilder do
@moduledoc """
Builds URLs for CKEditor 5 Cloud resources.
"""
@type cdn_type() :: :ckeditor | :ckbox
@ckeditor_base_url "https://cdn.ckeditor.com/"
@ckbox_base_url "https://cdn.ckbox.io/"
@doc """
Builds the URL for a specific Cloud resource.
## Parameters
* `cdn_type`: The CDN type, either `:ckeditor` or `:ckbox`.
* `path_segments` or `resource_path`: A list of path segments that will be joined with "/" or a single resource path string.
## Examples
iex> CKEditor5.Cloud.UrlBuilder.build_url(:ckeditor, ["path", "to", "resource"])
"https://cdn.ckeditor.com/path/to/resource"
iex> CKEditor5.Cloud.UrlBuilder.build_url(:ckbox, "path/to/resource")
"https://cdn.ckbox.io/path/to/resource"
"""
@spec build_url(cdn_type(), list(binary())) :: binary()
def build_url(cdn_type, path_segments) when is_atom(cdn_type) and is_list(path_segments) do
resource_path = Enum.join(path_segments, "/")
build_url(cdn_type, resource_path)
end
@spec build_url(cdn_type(), binary()) :: binary()
def build_url(cdn_type, resource_path) when is_atom(cdn_type) and is_binary(resource_path) do
base_url = get_base_url(cdn_type)
"#{base_url}#{resource_path}"
end
defp get_base_url(:ckeditor), do: @ckeditor_base_url
defp get_base_url(:ckbox), do: @ckbox_base_url
end