wirecardBrasil / moip-sdk-ruby

Cliente em Ruby para integração server-side com APIs Moip v2
MIT License
29 stars 27 forks source link

Argumento "host" adicionado no initialize da classe Client #62

Closed nmdoliveira closed 6 years ago

nmdoliveira commented 6 years ago

Olá!

Estou usando a versão 0.1.4 atualmente na minha aplicação e encontrei alguns problemas tentando atualizar para a versão 1.0.0.

Antes eu conseguia passar opções para a classe Client da seguinte forma: Client.new(env, auth, option_1: value_1, option_2: value_2), porém agora na versão 1.0.0 foi adicionado mais um parâmetro na inicialização do Client, que é o host.

O problema é que eu não quero mudar o host, apenas passar as opções para o Client, e agora para fazer isso eu preciso saber qual host passar (porque não funciona se eu passar nil).

Além disso, eu vi que foi adicionada a possibilidade de alterar o host colocando no ENV a variável base_uri. Não sei se a intenção foi de ser uma feature, porque pelo que vi foi usado apenas nos specs, mas acho que isso pode trazer muitas surpresas, porque a key base_uri não é específica para o Moip, então aplicações que estejam usando essa lib e resolvam setar essa variável por algum outro motivo vão causar erros nas chamadas do Moip.

Pelo que entendi, essa possibilidade de alterar o host foi necessária para o Connect, que tem um host diferente, porém acredito que isso poderia ser resolvido de uma forma mais restrita e sem a necessidade de oferecer essa possibilidade para código cliente (até porque não vejo muita razão para os clientes alterarem as URLs do Moip), por exemplo com uma classe filha que alterasse as URLs:

class ConnectClient < Client  
  def get_base_uri
    if production?
      "https://connect.moip.com.br"
    else
      "https://connect-sandbox.moip.com.br"
    end
  end
end

E aí na criação da api do Connect:

class Api
  def connect
    connect_client = ConnectClient.new(client.env, client.auth, client.opts)
    ConnectApi.new(connect_client)
  end
end

Dessa forma, não haveria necessidade das mudanças no próprio Client (e também de várias coisas na classe ConnectApi).

O que acham? Se acharem que faz sentido, posso abrir um PR com essas mudanças.

Obrigada!

joaolucasl commented 6 years ago

Oi @nmdoliveira! Vou checar aqui e conversar com o pessoal e tento dar um retorno o quanto antes na issue, pode ser?

Obg!

caiogaspar commented 6 years ago

Olá @nmdoliveira! Após conversarmos, achamos que faz bastante sentido o questionamento, a mudança proposta será muito bem-vinda. Se você quiser colaborar com um PR, seria muito bom!

Agradecemos a colaboração!

nmdoliveira commented 6 years ago

Ok, @caiogaspar, logo logo eu abro o PR!