Skip to content

Commit 04aef9e

Browse files
committed
Updated authorize/3
1. Removed unnecessary `opts` from arguements of error `respond` function. 2. Used fifth arguement in `HTTPoison.Request` to send part of url as keyword list. 3. Added @SPEC for `commit` function.
1 parent aedade8 commit 04aef9e

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

lib/gringotts/gateways/mercadopago.ex

+11-10
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,10 @@ defmodule Gringotts.Gateways.Mercadopago do
152152
# For consistency with other gateway implementations, make your (final)
153153
# network request in here, and parse it using another private method called
154154
# `respond`.
155-
#@spec commit(_, _, _, _) :: {:ok | :error, Response}
156-
defp commit(method, path, body, opts) do
155+
@spec commit(atom, String.t(), String.t(), keyword, keyword) :: {:ok | :error, Response.t()}
156+
defp commit(method, path, body, opts, url_params) do
157157
headers = [{"content-type", "application/json"}, {"accept", "application/json"}]
158-
HTTPoison.request(method, path, body, headers, []) |> respond(opts)
158+
HTTPoison.request(method, "#{@base_url}#{path}", body, headers, url_params) |> respond(opts)
159159
end
160160

161161
# Parses mercadopago's response and returns a `Gringotts.Response` struct
@@ -174,15 +174,16 @@ defmodule Gringotts.Gateways.Mercadopago do
174174
defp auth(amount, %CreditCard{} = card, opts, token_id, capture) do
175175
{_, value, _, _} = Money.to_integer_exp(amount)
176176
opts = opts ++ [token_id: token_id]
177-
url = "#{@base_url}/v1/payments?access_token=#{opts[:config][:access_token]}"
177+
url_params = [access_token: opts[:config][:access_token]]
178178
body = authorize_params(value, card, opts, opts[:token_id], opts[:customer_id], capture) |> Poison.encode!
179-
commit(:post, url, body, opts)
179+
commit(:post, "/v1/payments", body, opts, params: url_params )
180180
end
181181

182182
defp create_customer(opts) do
183-
url = "#{@base_url}/v1/customers?access_token=#{opts[:config][:access_token]}"
183+
url_params = [access_token: opts[:config][:access_token]]
184184
body = %{"email": opts[:email]} |> Poison.encode!
185-
{state, res} = commit(:post, url, body, opts)
185+
186+
{state, res} = commit(:post, "/v1/customers", body, opts, params: url_params)
186187
if state == :error do
187188
{state, res}
188189
else
@@ -201,9 +202,9 @@ defmodule Gringotts.Gateways.Mercadopago do
201202
end
202203

203204
defp create_token(%CreditCard{} = card, opts) do
204-
url = "#{@base_url}/v1/card_tokens/#{opts[:customer_id]}?public_key=#{opts[:config][:public_key]}"
205+
url_params = [public_key: opts[:config][:public_key]]
205206
body = token_params(card) |> Poison.encode!
206-
{state, res} = commit(:post, url, body, opts)
207+
{state, res} = commit(:post, "/v1/card_tokens/#{opts[:customer_id]}", body, opts, params: url_params)
207208
case state do
208209
:error -> {state, res}
209210
_ -> {state, res.id}
@@ -257,7 +258,7 @@ defmodule Gringotts.Gateways.Mercadopago do
257258
end
258259
end
259260

260-
defp respond({:error, %HTTPoison.Error{} = error}, opts) do
261+
defp respond({:error, %HTTPoison.Error{} = error}, _) do
261262
{
262263
:error,
263264
Response.error(

0 commit comments

Comments
 (0)