RD Station Ruby Client ficou ainda melhor

Almir m3nd3s
Ship It!
Published in
3 min readDec 13, 2019

Em 2017 nós da Resultados Digitais disponibilizamos para a comunidade de desenvolvimento uma biblioteca escrita em ruby que permite agilizar a integração com nosso produto RD Station Marketing (RDSM).

Esta biblioteca, o rdstation-ruby-client, foi implementada para consumir nossa API, permitindo que qualquer aplicação ruby possa se integrar com nosso produto de forma ágil.

Nosso objetivo com a biblioteca sempre foi trazer mais agilidade para desenvolvedores de aplicações, permitindo assim que eles possam focar em seu produto e nas regras de negócio.

Ao longo de seus dois aninhos de vida o rdstation-ruby-client teve inúmeras melhorias, sempre visando trazer mais comodidade e agilidade. Este post traz mais novidades para você.

Motivação

O rdstation-ruby-client utiliza-se do protocolo OAhth2, que em sua especificação exige que sejam feitas trocas de tokens entre o client e o server, garantindo assim a segurança da comunicação entre as duas pontas.

Cada token gerado possui um período de validade, passado este período o token expira e uma nova requisição para adquirir um novo token precisa ser realizada.

Atualmente, na versão 2.1.0, quando um token expira uma exception é disparada e fica a cargo da aplicação que utiliza o rdstation-ruby-client fazer o devido tratamento e a respectiva renovação do token.

Inevitavelmente este tratamento, renovação e reexecução do request que foi interrompido devido a expiração do token acaba trazendo uma certa repetição de código e prejudicando a legibilidade do código.

Melhorias

A versão 2.2.0 do rdstation-ruby-client resolve esse problema. Nós implementamos uma forma de configurar o “auto refresh” do token e adicionar um callback para ser executado toda vez que for necessário, para por exemplo persistir os dados do novo token.

Desta forma a aplicação que utiliza do rdstation-ruby-client precisa fazer essa configuração apenas uma única vez e todo request que for feito com um token expirado realizará o auto refresh do token, chamando o callback e por fim continuando o request que foi interrompido.

Fantástico, não?!

Exemplos de utilização

A partir da versão 2.2.0 foi adicionada a possibilidade de adicionar configuração do client:

RDStation.configure do |config|
config.client_id = YOUR_CLIENT_ID
config.client_secret = YOUR_CLIENT_SECRET
end

A partir desta versão também está deprecada a forma de inicializar o RDStation::Clientpassando as credenciais de client_id e client_secret, portanto sugerimos a forma citada acima.

Caso queira que a renovação do token seja realizada automaticamente, mais alguns passos precisam ser feitos. O primeiro é configurar um callback para que, dado que ocorra a renovação do token, ele possa ser persistido do lado da aplicação para futuro uso:

RDStation.configure do |config|
config.client_id = YOUR_CLIENT_ID
config.client_secret = YOUR_CLIENT_SECRET

config.on_access_token_refresh do |authorization|
# your code to store the new access_token
my_credential.update(access_token: authorization.access_token)
end
end

Feito isso, basta inicializar o Client com o refresh_token além do access_token:

RDStation::Client.new(access_token: MY_ACCESS_TOKEN, refresh_token: MY_REFRESH_TOKEN)

A partir de então o rdstation-ruby-client fará a gestão de renovação do token e você não precisa mais se preocupar.

Retrocompatibilidade

Toda novidade é bem vinda e vem para melhorar a vida do desenvolvedor, pensando nisso mantivemos a retrocompatibilidade com a versão anterior (2.1.0).

Mas recomendamos fortemente que seja feita a migração e adaptação do código para a versão nova, assim poderão tirar todo proveito das melhorias citadas acima.

Conheça também os nossos outros projetos Open Source através da nossa página e desde já fica o convite para nos ajudar, sua contribuição será muito bem vinda!

--

--

Almir m3nd3s
Ship It!

Entusiasta de software livre, desenvolvimento web e metodologias ágeis e apaixonado por café!