diff options
| -rw-r--r-- | hcl.gemspec | 17 | ||||
| -rw-r--r-- | lib/hcl/app.rb | 1 | ||||
| -rw-r--r-- | lib/hcl/timesheet_resource.rb | 18 |
3 files changed, 24 insertions, 12 deletions
diff --git a/hcl.gemspec b/hcl.gemspec index ac2543b..8a69f45 100644 --- a/hcl.gemspec +++ b/hcl.gemspec @@ -1,3 +1,6 @@ +# Generated by jeweler +# DO NOT EDIT THIS FILE DIRECTLY +# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command # -*- encoding: utf-8 -*- Gem::Specification.new do |s| @@ -6,7 +9,7 @@ Gem::Specification.new do |s| s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Zack Hobson"] - s.date = %q{2009-08-23} + s.date = %q{2010-04-02} s.default_executable = %q{hcl} s.description = %q{HCl is a command-line client for manipulating Harvest time sheets.} s.email = %q{zack@opensourcery.com} @@ -38,11 +41,10 @@ Gem::Specification.new do |s| "test/test_helper.rb", "test/utility_test.rb" ] - s.has_rdoc = true s.homepage = %q{http://github.com/zenhob/hcl} s.rdoc_options = ["--charset=UTF-8"] s.require_paths = ["lib"] - s.rubygems_version = %q{1.3.1} + s.rubygems_version = %q{1.3.6} s.summary = %q{Harvest timesheets from the command-line} s.test_files = [ "test/app_test.rb", @@ -53,23 +55,30 @@ Gem::Specification.new do |s| if s.respond_to? :specification_version then current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = 2 + s.specification_version = 3 if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then s.add_runtime_dependency(%q<termios>, [">= 0"]) s.add_runtime_dependency(%q<trollop>, [">= 1.10.2"]) s.add_runtime_dependency(%q<chronic>, [">= 0.2.3"]) s.add_runtime_dependency(%q<highline>, [">= 1.5.1"]) + s.add_development_dependency(%q<shoulda>, [">= 0"]) + s.add_development_dependency(%q<mocha>, [">= 0"]) else s.add_dependency(%q<termios>, [">= 0"]) s.add_dependency(%q<trollop>, [">= 1.10.2"]) s.add_dependency(%q<chronic>, [">= 0.2.3"]) s.add_dependency(%q<highline>, [">= 1.5.1"]) + s.add_dependency(%q<shoulda>, [">= 0"]) + s.add_dependency(%q<mocha>, [">= 0"]) end else s.add_dependency(%q<termios>, [">= 0"]) s.add_dependency(%q<trollop>, [">= 1.10.2"]) s.add_dependency(%q<chronic>, [">= 0.2.3"]) s.add_dependency(%q<highline>, [">= 1.5.1"]) + s.add_dependency(%q<shoulda>, [">= 0"]) + s.add_dependency(%q<mocha>, [">= 0"]) end end + diff --git a/lib/hcl/app.rb b/lib/hcl/app.rb index 649089c..b208d11 100644 --- a/lib/hcl/app.rb +++ b/lib/hcl/app.rb @@ -133,6 +133,7 @@ EOM config['login'] = ask("Email Address: ") config['password'] = ask("Password: ") { |q| q.echo = false } config['subdomain'] = ask("Subdomain: ") + config['ssl'] = %w(y yes).include?(ask("Use SSL? (y/n): ").downcase) TimesheetResource.configure config write_config config end diff --git a/lib/hcl/timesheet_resource.rb b/lib/hcl/timesheet_resource.rb index a589059..cb5e9bd 100644 --- a/lib/hcl/timesheet_resource.rb +++ b/lib/hcl/timesheet_resource.rb @@ -7,13 +7,14 @@ module HCl self.login = opts['login'] self.password = opts['password'] self.subdomain = opts['subdomain'] + self.ssl = opts['ssl'] else yield self end end # configuration accessors - %w[ login password subdomain ].each do |config_var| + %w[ login password subdomain ssl ].each do |config_var| class_eval <<-EOC def self.#{config_var}= arg @@#{config_var} = arg @@ -29,29 +30,30 @@ module HCl end def self.get action - https_do Net::HTTP::Get, action + http_do Net::HTTP::Get, action end def self.post action, data - https_do Net::HTTP::Post, action, data + http_do Net::HTTP::Post, action, data end - def self.https_do method_class, action, data = nil - https = Net::HTTP.new "#{subdomain}.harvestapp.com", 443 + def self.http_do method_class, action, data = nil + https = Net::HTTP.new "#{subdomain}.harvestapp.com", (ssl ? 443 : 80) request = method_class.new "/#{action}" - https.use_ssl = true + https.use_ssl = ssl request.basic_auth login, password request.content_type = 'application/xml' request['Accept'] = 'application/xml' response = https.request request, data - return response.body if response.kind_of? Net::HTTPSuccess response.body + elsif response.kind_of? Net::HTTPFound + raise "Redirected in the request. Perhaps your ssl configuration variable is set incorrectly?" else raise 'failure' end end - + def id @data[:id] end |
