accodeing/fortnox-api

View on GitHub
bin/renew_tokens

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'bundler/setup'
require 'fortnox/api'
require 'dotenv'

DOTENV_FILE_NAME = '.env'
Dotenv.load(DOTENV_FILE_NAME)

tokens = Fortnox::API::Repository::Authentication.new.renew_tokens(
  refresh_token: ENV.fetch('FORTNOX_API_REFRESH_TOKEN'),
  client_id: ENV.fetch('FORTNOX_API_CLIENT_ID'),
  client_secret: ENV.fetch('FORTNOX_API_CLIENT_SECRET')
)

puts tokens

print "Write tokens to #{DOTENV_FILE_NAME} [y/n]? "
store_tokens_in_env = $stdin.gets.chomp

exit unless store_tokens_in_env.casecmp('y').zero?

text = File.read(DOTENV_FILE_NAME)
updated_text = text
               .gsub(/FORTNOX_API_ACCESS_TOKEN=.*$/, "FORTNOX_API_ACCESS_TOKEN=#{tokens[:access_token]}")
               .gsub(/FORTNOX_API_REFRESH_TOKEN=.*$/, "FORTNOX_API_REFRESH_TOKEN=#{tokens[:refresh_token]}")
File.write(DOTENV_FILE_NAME, updated_text)