Simple error processing
This commit is contained in:
parent
7ddac90b29
commit
9c24e1651b
@ -12,7 +12,7 @@ by adding `microsoft_translator` to your list of dependencies in `mix.exs`:
|
||||
```elixir
|
||||
def deps do
|
||||
[
|
||||
{:microsoft_translator, "~> 0.1.2"}
|
||||
{:microsoft_translator, "~> 0.1.3"}
|
||||
]
|
||||
end
|
||||
```
|
||||
|
@ -69,29 +69,34 @@ defmodule MicrosoftTranslator.Client do
|
||||
|
||||
defp parse(%{body: body}, api_method) do
|
||||
Jason.decode!(body, keys: :atoms)
|
||||
|> transform_response(api_method)
|
||||
|> process_response(api_method)
|
||||
end
|
||||
|
||||
defp transform_response(response, :detect) do
|
||||
result =
|
||||
response
|
||||
|> List.first()
|
||||
|> Map.fetch(:language)
|
||||
defp process_response(response, api_method) do
|
||||
case response do
|
||||
%{error: %{code: code, message: message}} ->
|
||||
%{error: %{code: code, message: message}}
|
||||
|
||||
case result do
|
||||
list when is_list(list) and api_method in ~w(detect translate)a ->
|
||||
list
|
||||
|> List.first()
|
||||
|> transform_response(api_method)
|
||||
|
||||
map when is_map(map) and api_method in ~w(languages)a ->
|
||||
transform_response(map, api_method)
|
||||
end
|
||||
end
|
||||
|
||||
defp transform_response(response, :detect) when is_map(response) do
|
||||
case Map.fetch(response, :language) do
|
||||
{:ok, language} -> %{languageCode: language}
|
||||
end
|
||||
end
|
||||
|
||||
defp transform_response(response, :translate) do
|
||||
response
|
||||
|> List.first()
|
||||
|> Map.take([:translations])
|
||||
end
|
||||
|
||||
defp transform_response(response, :languages) do
|
||||
%{dictionary: dictionary} = response
|
||||
defp transform_response(response, :translate) when is_map(response),
|
||||
do: Map.take(response, ~w(translations)a)
|
||||
|
||||
defp transform_response(%{dictionary: dictionary}, :languages) do
|
||||
dictionary
|
||||
|> Enum.map(fn {key, %{name: name, nativeName: native, dir: dir}} ->
|
||||
%{code: "#{key}", name: name, nativeName: native, dir: dir}
|
||||
|
2
mix.exs
2
mix.exs
@ -2,7 +2,7 @@ defmodule MicrosoftTranslator.MixProject do
|
||||
use Mix.Project
|
||||
|
||||
@name "MicrosoftTranslator"
|
||||
@version "0.1.2"
|
||||
@version "0.1.3"
|
||||
# @repo_url "https://github.com/negrienko/microsoft_translator"
|
||||
@repo_url "https://gl.negrienko.com/negrienko/microsoft_translator"
|
||||
@homepage_url "https://negrienko.com/all/microsoft-translator/"
|
||||
|
Loading…
x
Reference in New Issue
Block a user