resty 0.3.0 → 0.4.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.
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