Core module functions
This commit is contained in:
@@ -1,2 +1,22 @@
|
||||
defmodule YandexTranslate do
|
||||
alias YandexTranslate.Client
|
||||
|
||||
def languages(), do: Client.call(:listLanguages, %{})
|
||||
|
||||
def detect(params) when is_map(params), do: Client.call(:detectLanguage, params)
|
||||
def detect(text) when is_binary(text), do: Client.call(:detectLanguage, %{text: text})
|
||||
|
||||
def translate(params) when is_map(params), do: Client.call(:translate, params)
|
||||
|
||||
def translate(text, targetLanguageCode) when is_binary(text) and is_binary(targetLanguageCode),
|
||||
do: Client.call(:translate, %{texts: [text], targetLanguageCode: targetLanguageCode})
|
||||
|
||||
def translate(text, targetLanguageCode, sourceLanguageCode)
|
||||
when is_binary(text) and is_binary(targetLanguageCode) and is_binary(sourceLanguageCode),
|
||||
do:
|
||||
Client.call(:translate, %{
|
||||
texts: [text],
|
||||
targetLanguageCode: targetLanguageCode,
|
||||
sourceLanguageCode: sourceLanguageCode
|
||||
})
|
||||
end
|
||||
|
||||
@@ -11,6 +11,16 @@ defmodule YandexTranslate.Client do
|
||||
|
||||
alias YandexTranslate.Auth
|
||||
|
||||
def call(method \\ :listLanguages, args \\ %{})
|
||||
when method in @availaible_api_methods and is_map(args) do
|
||||
body = generate_body(method, args)
|
||||
headers = generate_headers()
|
||||
|
||||
method
|
||||
|> fetch(headers, body)
|
||||
|> parse()
|
||||
end
|
||||
|
||||
defp generate_headers(headers \\ [])
|
||||
|
||||
defp generate_headers(header) when is_tuple(header),
|
||||
@@ -47,6 +57,8 @@ defmodule YandexTranslate.Client do
|
||||
defp generate_glossary_pairs(glossary) when is_list(glossary),
|
||||
do: glossary |> Enum.map(fn {from, to} -> %{sourceText: from, translatedText: to} end)
|
||||
|
||||
defp transform_text(%{texts: texts} = params) when is_list(texts), do: params
|
||||
|
||||
defp transform_text(%{texts: text} = params) when is_binary(text),
|
||||
do: %{params | texts: [text]}
|
||||
|
||||
@@ -62,16 +74,6 @@ defmodule YandexTranslate.Client do
|
||||
|
||||
defp valid_argument_keys(_), do: []
|
||||
|
||||
def call(method \\ :listLanguages, args \\ %{})
|
||||
when method in @availaible_api_methods and is_map(args) do
|
||||
body = generate_body(method, args)
|
||||
headers = generate_headers()
|
||||
|
||||
method
|
||||
|> fetch(headers, body)
|
||||
|> parse()
|
||||
end
|
||||
|
||||
defp parse(body), do: Jason.decode!(body)
|
||||
|
||||
defp fetch(method, headers, body) do
|
||||
|
||||
Reference in New Issue
Block a user