summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hcl.gemspec17
-rw-r--r--lib/hcl/app.rb1
-rw-r--r--lib/hcl/timesheet_resource.rb18
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