ruby_desk 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.1
1
+ 0.7.0
@@ -100,6 +100,7 @@ module RubyDesk
100
100
  case resp.code
101
101
  when "200" then return data
102
102
  when "401" then raise RubyDesk::UnauthorizedError, data
103
+ when "404" then raise RubyDesk::PageNotFound, data
103
104
  when "500" then raise RubyDesk::ServerError, data
104
105
  end
105
106
 
@@ -109,6 +110,7 @@ module RubyDesk
109
110
  def prepare_and_invoke_api_call(path, options = {})
110
111
  api_call = prepare_api_call(path, options)
111
112
  data = invoke_api_call(api_call)
113
+
112
114
  parsed_data = case options[:format]
113
115
  when 'json' then JSON.parse(data)
114
116
  when 'xml' then REXML::Document.new(data)
@@ -129,7 +131,7 @@ module RubyDesk
129
131
  # return the URL that logs user out of odesk applications
130
132
  def logout_url
131
133
  logout_call = prepare_api_call("", :base_url=>ODESK_AUTH_URL,
132
- :secure=>false)
134
+ :secure=>false, :auth=>false)
133
135
  return logout_call[:url]
134
136
  end
135
137
 
@@ -29,27 +29,34 @@ class RubyDesk::TimeReport
29
29
  # * provider_id
30
30
  # * worked_on
31
31
  # * assignment_team_id
32
- # * provider_id
33
32
  # * task
34
33
  # :order
35
34
  def self.find(connector, options={})
36
35
  options = DEFAULT_OPTIONS.merge(options)
36
+ options[:conditions].each_pair do |k, v|
37
+ if Array === v && v.size == 1
38
+ options[:conditions][k] = v.first
39
+ elsif Array === v && v.empty?
40
+ options[:conditions].delete(k)
41
+ end
42
+ end
37
43
  call_url = "timereports/v1"
38
44
  # Adjust a URL that has as much information as we can
39
45
  if String === options[:conditions][:company_id]
40
46
  # Limit to one company in url (better looking)
41
47
  call_url << "/companies/#{options[:conditions].delete :company_id}"
42
-
43
- if String === options[:conditions][:agency_id]
44
- # Limit to one agency in url (better looking)
45
- call_url << "/agencies/#{options[:conditions].delete :agency_id}"
46
- elsif String === options[:conditions][:team_id]
47
- # Limit to one team in url (better looking)
48
- call_url << "/teams/#{options[:conditions].delete :team_id}"
49
- end
50
- elsif String === options[:conditions][:provider_id]
48
+ end
49
+ if String === options[:conditions][:provider_id]
51
50
  call_url << "/providers/#{options[:conditions].delete :provider_id}"
52
51
  end
52
+ if String === options[:conditions][:agency_id]
53
+ # Limit to one agency in url (better looking)
54
+ call_url << "/agencies/#{options[:conditions].delete :agency_id}"
55
+ end
56
+ if String === options[:conditions][:team_id]
57
+ # Limit to one team in url (better looking)
58
+ call_url << "/teams/#{options[:conditions].delete :team_id}"
59
+ end
53
60
 
54
61
  call_url << "/hours" if options[:hours]
55
62
 
@@ -104,7 +111,7 @@ class RubyDesk::TimeReport
104
111
 
105
112
  def self.value_to_str(value)
106
113
  case value
107
- when String then value
114
+ when String then "'#{value}'"
108
115
  when Date, Time then "'"+value.strftime("%Y-%m-%d")+"'"
109
116
  when Numeric then value.to_s
110
117
  end
data/lib/ruby_desk.rb CHANGED
@@ -5,6 +5,7 @@ require 'logger'
5
5
  module RubyDesk
6
6
  class Error < RuntimeError; end;
7
7
  class UnauthorizedError < Error; end;
8
+ class PageNotFound < Error; end;
8
9
  class ServerError < Error; end;
9
10
 
10
11
  class << self
@@ -105,9 +105,9 @@ class TestRubyDesk < Test::Unit::TestCase
105
105
  "SELECT worked_on WHERE (worked_on='2009-10-10')"],
106
106
  [{:select=>"worked_on, provider_id", :conditions=>{:provider_id=>[1,2,3]}},
107
107
  "SELECT worked_on, provider_id WHERE (provider_id=1 OR provider_id=2 OR provider_id=3)"],
108
- [{:select=>"worked_on", :conditions=>{:provider_id=>1, :agency_id=>3}},
109
- ["SELECT worked_on WHERE (agency_id=3) AND (provider_id=1)",
110
- "SELECT worked_on WHERE (provider_id=1) AND (agency_id=3)"]],
108
+ [{:select=>"worked_on", :conditions=>{:provider_id=>'aseldawy', :agency_id=>3}},
109
+ ["SELECT worked_on WHERE (agency_id=3) AND (provider_id='aseldawy')",
110
+ "SELECT worked_on WHERE (provider_id='aseldawy') AND (agency_id=3)"]],
111
111
  [{:select=>"worked_on", :conditions=>{:provider_id=>1..3}},
112
112
  "SELECT worked_on WHERE (provider_id>=1 AND provider_id<=3)"],
113
113
  [{:select=>"worked_on", :conditions=>{:provider_id=>1...3}},
@@ -116,6 +116,7 @@ class TestRubyDesk < Test::Unit::TestCase
116
116
  "SELECT worked_on,hours"],
117
117
  ]
118
118
  test_data.each do |options, query|
119
+ # I use include? because some queries have more than possible form
119
120
  assert query.include?(RubyDesk::TimeReport.build_query(options))
120
121
  end
121
122
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_desk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 7
8
+ - 0
9
+ version: 0.7.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Ahmed ElDawy
@@ -9,19 +14,21 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-23 00:00:00 +02:00
17
+ date: 2010-03-03 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: json
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
23
29
  version: "0"
24
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
25
32
  description: A gem that works as an interface for oDesk APIs that can be used for both desktop and web applications
26
33
  email: ahmed.eldawy@badrit.com
27
34
  executables: []
@@ -67,18 +74,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
74
  requirements:
68
75
  - - ">="
69
76
  - !ruby/object:Gem::Version
77
+ segments:
78
+ - 0
70
79
  version: "0"
71
- version:
72
80
  required_rubygems_version: !ruby/object:Gem::Requirement
73
81
  requirements:
74
82
  - - ">="
75
83
  - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
76
86
  version: "0"
77
- version:
78
87
  requirements: []
79
88
 
80
89
  rubyforge_project:
81
- rubygems_version: 1.3.5
90
+ rubygems_version: 1.3.6
82
91
  signing_key:
83
92
  specification_version: 3
84
93
  summary: Wrapper for oDesk APIs in Ruby