ruby_desk 0.5.0 → 0.6.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 +1 -1
- data/lib/ruby_desk/connector.rb +15 -2
- data/lib/ruby_desk/time_report.rb +2 -2
- data/test/test_ruby_desk.rb +13 -4
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/ruby_desk/connector.rb
CHANGED
@@ -24,15 +24,28 @@ module RubyDesk
|
|
24
24
|
|
25
25
|
# Sign the given parameters and returns the signature
|
26
26
|
def sign(params)
|
27
|
-
RubyDesk.logger.
|
27
|
+
RubyDesk.logger.debug {"Params to sign: #{params.inspect}"}
|
28
28
|
# sort parameters by its names (keys)
|
29
29
|
sorted_params = params.sort { |a, b| a.to_s <=> b.to_s}
|
30
30
|
|
31
|
+
RubyDesk.logger.debug {"Sorted params: #{sorted_params.inspect}"}
|
32
|
+
|
33
|
+
# Unescape escaped params
|
34
|
+
sorted_params.map! do |k, v|
|
35
|
+
[k, URI.unescape(v)]
|
36
|
+
end
|
37
|
+
|
31
38
|
# concatenate secret with names, values
|
32
39
|
concatenated = @api_secret + sorted_params.to_s
|
33
40
|
|
41
|
+
RubyDesk.logger.debug {"concatenated: #{concatenated}"}
|
42
|
+
|
34
43
|
# Calculate and return md5 of concatenated string
|
35
|
-
Digest::MD5.hexdigest(concatenated)
|
44
|
+
md5 = Digest::MD5.hexdigest(concatenated)
|
45
|
+
|
46
|
+
RubyDesk.logger.debug {"md5: #{md5}"}
|
47
|
+
|
48
|
+
return md5
|
36
49
|
end
|
37
50
|
|
38
51
|
# Returns the correct URL to go to to invoke the given api
|
@@ -20,7 +20,7 @@ class RubyDesk::TimeReport
|
|
20
20
|
#
|
21
21
|
# Allowed values for options are
|
22
22
|
# :select
|
23
|
-
# :
|
23
|
+
# :conditions
|
24
24
|
# Here is the limited support for the where clause.
|
25
25
|
# Fields
|
26
26
|
# * Name
|
@@ -76,7 +76,7 @@ class RubyDesk::TimeReport
|
|
76
76
|
gds_query = ""
|
77
77
|
gds_query << "SELECT " << (options[:select].respond_to?(:join)?
|
78
78
|
options[:select].join(",") : options[:select])
|
79
|
-
if options[:conditions]
|
79
|
+
if options[:conditions] && options[:conditions].any?
|
80
80
|
gds_query << " WHERE "
|
81
81
|
combined = options[:conditions].map do |field, condition|
|
82
82
|
"(" +
|
data/test/test_ruby_desk.rb
CHANGED
@@ -5,7 +5,7 @@ class TestRubyDesk < Test::Unit::TestCase
|
|
5
5
|
|
6
6
|
def dummy_connector(result_filename)
|
7
7
|
connector = RubyDesk::Connector.new('824d225a889aca186c55ac49a6b23957',
|
8
|
-
'984aa36db13fff5c')
|
8
|
+
'984aa36db13fff5c', 'fffff')
|
9
9
|
connector.instance_variable_set '@result_filename', result_filename
|
10
10
|
def connector.invoke_api_call(*args)
|
11
11
|
File.read(File.join(File.dirname(__FILE__), @result_filename))
|
@@ -22,11 +22,20 @@ class TestRubyDesk < Test::Unit::TestCase
|
|
22
22
|
:api_token=>'ffffffffffffffffffffffffffffffff')
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
25
|
+
def test_sign_escaped_params
|
26
26
|
connector = RubyDesk::Connector.new('824d225a889aca186c55ac49a6b23957',
|
27
27
|
'984aa36db13fff5c')
|
28
|
+
assert_equal 'dc30357f7c6b62aadf99e5313ac93365',
|
29
|
+
connector.sign(:online=>'a%6C%6C', :tz=>'mine',
|
30
|
+
:api_key=>'824d225a889aca186c55ac49a6b23957',
|
31
|
+
:api_token=>'ffffffffffffffffffffffffffffffff')
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_api_call
|
35
|
+
connector = RubyDesk::Connector.new('824d225a889aca186c55ac49a6b23957',
|
36
|
+
'984aa36db13fff5c', 'fff')
|
28
37
|
api_call = connector.prepare_api_call('auth/v1/keys/tokens',
|
29
|
-
:params=>{:frob
|
38
|
+
:params=>{:frob=>'342423', :api_key=>@api_key},
|
30
39
|
:method=>:post, :format=>'json')
|
31
40
|
assert api_call[:url].index('.json')
|
32
41
|
assert api_call[:url].index('/api/auth/v1/keys/tokens')
|
@@ -35,7 +44,7 @@ class TestRubyDesk < Test::Unit::TestCase
|
|
35
44
|
|
36
45
|
def test_gds_api_call
|
37
46
|
connector = RubyDesk::Connector.new('824d225a889aca186c55ac49a6b23957',
|
38
|
-
'984aa36db13fff5c')
|
47
|
+
'984aa36db13fff5c', 'ff')
|
39
48
|
api_call = connector.prepare_api_call('timereports/v1/companies/1',
|
40
49
|
:method=>:post, :base_url=>RubyDesk::Connector::ODESK_GDS_URL)
|
41
50
|
assert api_call[:url].index('/gds/timereports/v1/companies/1')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_desk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ahmed ElDawy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-23 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|