resty 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/resty/transport.rb +19 -3
  2. metadata +8 -10
@@ -1,12 +1,16 @@
1
1
  class Resty::Transport
2
2
 
3
+ class << self
4
+ attr_accessor :default_href_params
5
+ end
6
+
3
7
  def self.request_json(href, method = 'GET', body = nil, content_type = nil)
4
8
 
5
9
  headers = content_type ? { :content_type => content_type } : nil
6
10
  payload = body || ''
7
-
11
+
8
12
  response = RestClient::Request.execute(
9
- :url => href,
13
+ :url => add_default_params(href),
10
14
  :method => method,
11
15
  :payload => payload,
12
16
  :headers => headers
@@ -14,11 +18,23 @@ class Resty::Transport
14
18
 
15
19
  if !(response.nil? || response =~ /\A\s*\Z/)
16
20
  JSON.parse(response)
17
- elsif response.headers[:location]
21
+ elsif !response.nil? && response.headers[:location]
18
22
  { ':href' => response.headers[:location] }
19
23
  else
20
24
  nil
21
25
  end
22
26
  end
23
27
 
28
+ private
29
+
30
+ PARAM_REGEX = /\?/
31
+
32
+ def self.add_default_params(href)
33
+ return href if !default_href_params || default_href_params.empty?
34
+
35
+ separator = (href =~ PARAM_REGEX ? '&' : '?')
36
+ params = default_href_params.map { |k, v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')
37
+ "#{href}#{separator}#{params}"
38
+ end
39
+
24
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-16 00:00:00.000000000 +10:00
13
- default_executable:
12
+ date: 2011-09-23 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rest-client
17
- requirement: &79995340 !ruby/object:Gem::Requirement
16
+ requirement: &15738880 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: 1.6.3
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *79995340
24
+ version_requirements: *15738880
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: json
28
- requirement: &79995100 !ruby/object:Gem::Requirement
27
+ requirement: &15738400 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ~>
@@ -33,7 +32,7 @@ dependencies:
33
32
  version: 1.5.1
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: *79995100
35
+ version_requirements: *15738400
37
36
  description: ! " Resty is designed as a client for a particular
38
37
  type of discoverable REST API; one that returns JSON, and \n where
39
38
  that JSON has particular keys which enable navigation of the data graph.\n"
@@ -44,13 +43,12 @@ extensions: []
44
43
  extra_rdoc_files: []
45
44
  files:
46
45
  - lib/resty/attributes.rb
47
- - lib/resty/transport.rb
48
46
  - lib/resty/actions.rb
47
+ - lib/resty/transport.rb
49
48
  - lib/resty.rb
50
49
  - bin/resty
51
50
  - LICENSE
52
51
  - README.md
53
- has_rdoc: true
54
52
  homepage: http://github.com/simonrussell/resty
55
53
  licenses: []
56
54
  post_install_message:
@@ -71,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
69
  version: '0'
72
70
  requirements: []
73
71
  rubyforge_project:
74
- rubygems_version: 1.6.2
72
+ rubygems_version: 1.8.8
75
73
  signing_key:
76
74
  specification_version: 3
77
75
  summary: Simple JSON REST API client wrapper