class Harvest::CredentialsManager
Constants
- BASE_PATHNAME
- CONFIG_FILENAME
Attributes
credentials[R]
current_project[R]
Public Class Methods
new(current_project)
click to toggle source
# File lib/harvest/credentials_manager.rb, line 11 def initialize(current_project) @current_project = current_project end
Public Instance Methods
read()
click to toggle source
# File lib/harvest/credentials_manager.rb, line 65 def read return {} unless File.file?(credentials_path) credentials = File.read(credentials_path) return {} if credentials.nil? JSON.parse(credentials) end
request()
click to toggle source
# File lib/harvest/credentials_manager.rb, line 15 def request say "========== JIRA Integration =============", Thor::Shell::Color::GREEN say 'Fetch or create JIRA API credentials at https://id.atlassian.com/manage/api-tokens', Thor::Shell::Color::GREEN project_code = ask "Enter JIRA Project code (eg. ABC): ", Thor::Shell::Color::RED, :bold project_url = ask "Enter JIRA project Base URL (eg. https://XXXXXXX.atlassian.net): ", Thor::Shell::Color::RED, :bold email = ask "Enter JIRA email: ", Thor::Shell::Color::RED, :bold access_token = ask "Enter JIRA access token: ", Thor::Shell::Color::RED, :bolds say "========== Harvest Integration =============", Thor::Shell::Color::GREEN say 'Fetch or create Harvest API credentials at https://id.getharvest.com/developers', Thor::Shell::Color::GREEN account_id = ask "Enter Harvest Account ID: ", Thor::Shell::Color::RED, :bold harvest_access_token = ask "Enter Harvest Access Token: ", Thor::Shell::Color::RED, :bold harvest_config = { 'access_token' => harvest_access_token, 'account_id' => account_id } projects = Harvest::TimeLogger.new(harvest_config).projects selected_project = ask 'Select Project', limited_to: projects.collect { |x| x[:name] } project_id = projects.select {|x| x[:name] == selected_project }[0][:id] @credentials = { jira: { project_code: project_code, project_url: project_url, username: email, access_token: access_token }, harvest: { account_id: account_id, project_id: project_id, access_token: harvest_access_token } } end
save()
click to toggle source
# File lib/harvest/credentials_manager.rb, line 55 def save dirname = File.join(Dir.home, BASE_PATHNAME) FileUtils.mkdir_p(dirname) unless File.directory?(dirname) current_credentials = self.read current_credentials[current_project] = credentials File.open(credentials_path, 'w+') { |f| f.write(current_credentials.to_json) } end
Private Instance Methods
credentials_path()
click to toggle source
# File lib/harvest/credentials_manager.rb, line 77 def credentials_path File.join(Dir.home, BASE_PATHNAME, CONFIG_FILENAME) end