wrest 1.4.2-universal-java-1.6 → 1.5.0-universal-java-1.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -2,6 +2,25 @@ Features under the section marked 'Current' are completed but pending release as
2
2
 
3
3
  Features under a numbered section are complete and available in the Wrest gem.
4
4
 
5
+ == 1.5.0
6
+ * Introducing content type text/plain - pull request by buchin
7
+
8
+ == 1.4.7
9
+ * Switch to using multi_json to manage Json backend to play nice with Rails 3.1.
10
+
11
+ == 1.4.6
12
+ * Bump Builder dependency to allow both Builder 2.x and 3.x to be used
13
+
14
+ == 1.4.5
15
+ * GH#107 alias :deserialize :deserialise
16
+
17
+ == 1.4.4
18
+ * GH#105 Reduce Rubgems version requirements to 1.3.x or greater from > 1.5
19
+
20
+ == 1.4.3
21
+ * GH#104 Allow default headers to be added to the uri that are then used for all requests
22
+ * GH#31 Add explicit API for cookies
23
+
5
24
  == 1.4.2
6
25
  * GH#102 Code and gemspec mismatch for json-jruby
7
26
 
data/README.rdoc CHANGED
@@ -1,6 +1,8 @@
1
- = Wrest 1.4.2
1
+ = Wrest 1.5.0
2
2
 
3
- (c) Copyright 2009-2011 {Sidu Ponnappa}[http://blog.sidu.in]. All Rights Reserved.
3
+ (c) Copyright 2009-2011 {Sidu Ponnappa}[http://blog.sidu.in]. All Rights Reserved.
4
+
5
+ {CI Status:}[http://ci.c42.in/projects/wrest] http://ci.c42.in/projects/wrest.png
4
6
 
5
7
  Wrest is a ruby REST/HTTP client library which
6
8
 
@@ -58,7 +60,7 @@ For Facebook, Twitter, Delicious, GitHub and other API examples, see http://gith
58
60
  :results=> '3',
59
61
  :start => '1'
60
62
  ).deserialise_using(
61
- Wrest::Translators::Xml
63
+ Wrest::Components::Translators::Xml
62
64
  )
63
65
  * Basic HTTP auth and URI extensions using Wrest::Uri#[]
64
66
 
@@ -86,6 +88,8 @@ For Facebook, Twitter, Delicious, GitHub and other API examples, see http://gith
86
88
  :image => UploadIO.new(File.open(file_path), "image/png", file_path),
87
89
  :key => imgur_key
88
90
  ).deserialise
91
+
92
+ Note: To enable Multipart support, you'll have to explicitly require 'wrest/multipart', which depends on the multipart-post gem.
89
93
 
90
94
  ==== DELETE
91
95
 
@@ -188,6 +192,8 @@ Note: The current implementation of asynchronous requests is currently in alpha
188
192
 
189
193
  === Other useful stuff
190
194
 
195
+ ==== Hash container with ActiveResource-like semantics
196
+
191
197
  Allows any class to hold an attributes hash, somewhat like ActiveResource. It also supports several extensions to this base fuctionality such as support for typecasting attribute values. See examples/twitter.rb and examples/wow_realm_status.rb for more samples.
192
198
 
193
199
  Example:
@@ -209,10 +215,23 @@ Example:
209
215
  kai_wren.energy # => #<Chi:0x113af8c @count="1024">
210
216
  kai_wren.teacher # => 'Viss'
211
217
 
218
+ ==== Opt-out of core extensions
219
+
220
+ Uncomfortable with extending <tt>String</tt> to add <tt>to_uri</tt>? Simply do
221
+ gem "wrest", :require => "wrest_no_ext"
222
+ in your Gemfile. You can now do <tt>Uri.new('http://localhost')</tt> to build Uris.
223
+
212
224
  === Logging
213
225
 
214
226
  The Wrest logger can be set and accessed through Wrest.logger and is configured by default to log to STDOUT. If you're using Wrest in a Rails application, you can configure logging by adding a config/initializers/wrest.rb file with the following contents :
215
- Wrest.logger = ActiveRecord::Base.logger
227
+ Wrest.logger = Rails.logger
228
+
229
+ === Json Backend
230
+
231
+ Wrest uses the multi_json gem to manage Json backends, allowing it to play nice with Rails 3.1. To change the backend used, you can do the following:
232
+ MultiJson.engine = :json_gem
233
+
234
+ For more information, look up the {multi_json}[http://github.com/intridea/multi_json] documentation.
216
235
 
217
236
  === Build
218
237
 
@@ -242,7 +261,7 @@ You can launch the interactive Wrest shell by running bin/wrest if you have the
242
261
 
243
262
  === Testing
244
263
 
245
- Start the Sinatra test server for functional test.
264
+ Start the Sinatra test server for functional test. The dependencies for the test app are managed separately by a Gemfile under spec/sample_app.
246
265
  rake -f spec/sample_app/Rakefile # runs on port 3000
247
266
 
248
267
  Start a memcached daemon/process on port 11211
data/bin/rdoc ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env jruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rdoc' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rdoc', 'rdoc')
@@ -19,9 +19,9 @@ require 'eventmachine'
19
19
  module Wrest
20
20
  module AsyncRequest
21
21
  class EventMachineBackend
22
- def execute(block)
22
+ def execute(request)
23
23
  EventMachine.run do
24
- block.invoke
24
+ request.invoke
25
25
  EventMachine.stop
26
26
  end
27
27
  end
@@ -10,9 +10,9 @@
10
10
  module Wrest
11
11
  module AsyncRequest
12
12
  class ThreadBackend
13
- def execute(block)
13
+ def execute(request)
14
14
  Thread.new do
15
- block.invoke
15
+ request.invoke
16
16
  end
17
17
  end
18
18
  end
@@ -12,7 +12,7 @@ module Wrest
12
12
  module AsyncRequest
13
13
  # Loads Wrest eventmachine backend alongwith eventmachine gem
14
14
  def self.enable_em
15
- require "#{Wrest::Root}/wrest/async_request/event_machine_backend"
15
+ require "wrest/async_request/event_machine_backend"
16
16
  end
17
17
 
18
18
  # Assign default backend to be used for asynchronous request. Default is to use threads
data/lib/wrest/caching.rb CHANGED
@@ -11,7 +11,7 @@ module Wrest
11
11
  module Caching
12
12
  # Loads the Memcached caching back-end and the Dalli gem
13
13
  def self.enable_memcached
14
- require "#{Wrest::Root}/wrest/caching/memcached"
14
+ require "wrest/caching/memcached"
15
15
  end
16
16
 
17
17
  # Configures Wrest to cache all requests. This will use a Ruby Hash.
@@ -12,8 +12,8 @@ module Wrest
12
12
  end
13
13
  end
14
14
 
15
- require "#{Wrest::Root}/wrest/components/container/typecaster"
16
- require "#{Wrest::Root}/wrest/components/container/alias_accessors"
15
+ require "wrest/components/container/typecaster"
16
+ require "wrest/components/container/alias_accessors"
17
17
 
18
18
  module Wrest::Components
19
19
 
@@ -32,9 +32,9 @@ module Wrest
32
32
  end
33
33
  end
34
34
  end
35
- require "#{Wrest::Root}/wrest/core_ext/hash"
36
- require "#{Wrest::Root}/wrest/components/mutators/base"
37
- require "#{Wrest::Root}/wrest/components/mutators/xml_simple_type_caster"
38
- require "#{Wrest::Root}/wrest/components/mutators/xml_mini_type_caster"
39
- require "#{Wrest::Root}/wrest/components/mutators/camel_to_snake_case"
35
+ require "wrest/core_ext/hash"
36
+ require "wrest/components/mutators/base"
37
+ require "wrest/components/mutators/xml_simple_type_caster"
38
+ require "wrest/components/mutators/xml_mini_type_caster"
39
+ require "wrest/components/mutators/camel_to_snake_case"
40
40
 
@@ -14,7 +14,8 @@ module Wrest
14
14
  'application/xml' => Wrest::Components::Translators::Xml,
15
15
  'text/xml' => Wrest::Components::Translators::Xml,
16
16
  'application/json' => Wrest::Components::Translators::Json,
17
- 'text/javascript' => Wrest::Components::Translators::Json
17
+ 'text/javascript' => Wrest::Components::Translators::Json,
18
+ 'text/plain' => Wrest::Components::Translators::Txt
18
19
  }
19
20
  end
20
21
  end
@@ -13,13 +13,21 @@ module Wrest
13
13
  module Translators::Json
14
14
  extend self
15
15
 
16
- def deserialise(response,options = {})
16
+ def deserialise(response, options = {})
17
17
  ActiveSupport::JSON.decode(response.body)
18
18
  end
19
19
 
20
+ def deserialize(response, options = {})
21
+ deserialise(response, options)
22
+ end
23
+
20
24
  def serialise(hash, options = {})
21
25
  hash.to_json(options)
22
26
  end
27
+
28
+ def serialize(hash, options = {})
29
+ serialise(hash, options)
30
+ end
23
31
  end
24
32
  end
25
33
  end
@@ -0,0 +1,31 @@
1
+ # Copyright 2009 Sidu Ponnappa
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software distributed under the License
7
+ # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8
+ # See the License for the specific language governing permissions and limitations under the License.
9
+ module Wrest
10
+ module Components::Translators
11
+ module Txt
12
+ extend self
13
+
14
+ def deserialise(response,options={})
15
+ response.body
16
+ end
17
+
18
+ def deserialize(response, options = {})
19
+ deserialise(response, options)
20
+ end
21
+
22
+ def serialise(hash, options = {})
23
+ hash.inspect
24
+ end
25
+
26
+ def serialize(hash, options = {})
27
+ serialise(hash, options)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -19,9 +19,17 @@ module Wrest
19
19
  end
20
20
  end
21
21
 
22
+ def deserialize(response, options = {})
23
+ deserialise(response, options)
24
+ end
25
+
22
26
  def serialise(hash, options = {})
23
27
  hash.to_xml(options)
24
28
  end
29
+
30
+ def serialize(hash, options = {})
31
+ serialise(hash, options)
32
+ end
25
33
  end
26
34
  end
27
35
  end
@@ -23,6 +23,7 @@ module Wrest
23
23
  end
24
24
  end
25
25
 
26
- require "#{Wrest::Root}/wrest/components/translators/xml"
27
- require "#{Wrest::Root}/wrest/components/translators/json"
28
- require "#{Wrest::Root}/wrest/components/translators/content_types"
26
+ require "wrest/components/translators/txt"
27
+ require "wrest/components/translators/xml"
28
+ require "wrest/components/translators/json"
29
+ require "wrest/components/translators/content_types"
@@ -15,5 +15,5 @@ module Wrest
15
15
  end
16
16
  end
17
17
 
18
- require "#{Wrest::Root}/wrest/components/container"
19
- require "#{Wrest::Root}/wrest/components/translators"
18
+ require "wrest/components/container"
19
+ require "wrest/components/translators"
@@ -1,4 +1,4 @@
1
- require "#{Wrest::Root}/wrest/core_ext/hash/conversions"
1
+ require "wrest/core_ext/hash/conversions"
2
2
 
3
3
  class Hash #:nodoc:
4
4
  include Wrest::CoreExt::Hash::Conversions
@@ -1,4 +1,4 @@
1
- require "#{Wrest::Root}/wrest/core_ext/string/conversions"
1
+ require "wrest/core_ext/string/conversions"
2
2
 
3
3
  class String #:nodoc:
4
4
  include Wrest::CoreExt::String::Conversions unless Wrest.const_defined?('NoStringExtensions')
@@ -37,12 +37,20 @@ module Wrest #:nodoc:
37
37
  end
38
38
 
39
39
  def deserialise(options = {})
40
- @deserialised_body ||= deserialise_using(Wrest::Components::Translators.lookup(content_type),options)
40
+ @deserialised_body ||= deserialise_using(Wrest::Components::Translators.lookup(content_type),options)
41
41
  end
42
-
43
- def deserialise_using(translator,options={})
42
+
43
+ def deserialize(options = {})
44
+ deserialise(options)
45
+ end
46
+
47
+ def deserialise_using(translator, options={})
44
48
  translator.deserialise(@http_response,options)
45
49
  end
50
+
51
+ def deserialize_using(options = {})
52
+ deserialise_using(options)
53
+ end
46
54
 
47
55
  def code
48
56
  @http_response.status
data/lib/wrest/curl.rb CHANGED
@@ -8,9 +8,9 @@
8
8
  # See the License for the specific language governing permissions and limitations under the License.
9
9
 
10
10
  begin
11
- gem 'patron', '~> 0.4.11'
11
+ gem 'patron', '~> 0.4'
12
12
  rescue Gem::LoadError => e
13
- Wrest.logger.debug "Patron ~> 0.4.11 not found. Patron is necessary to use libcurl. To install Patron run `sudo gem install patron` (patron is not available on JRuby, but you shouldn't need it anyway)."
13
+ Wrest.logger.debug "Patron ~> 0.4.x not found. Patron is necessary to use libcurl. To install Patron run `sudo gem install patron` (patron is not available on JRuby, but you shouldn't need it anyway)."
14
14
  raise e
15
15
  end
16
16
  require 'patron'
@@ -39,13 +39,13 @@ module Patron #:nodoc:
39
39
  end
40
40
  end
41
41
 
42
- require "#{Wrest::Root}/wrest/curl/response"
43
- require "#{Wrest::Root}/wrest/curl/request"
44
- require "#{Wrest::Root}/wrest/curl/get"
45
- require "#{Wrest::Root}/wrest/curl/put"
46
- require "#{Wrest::Root}/wrest/curl/post"
47
- require "#{Wrest::Root}/wrest/curl/delete"
48
- require "#{Wrest::Root}/wrest/curl/options"
49
- require "#{Wrest::Root}/wrest/curl/post_multipart"
50
- require "#{Wrest::Root}/wrest/curl/put_multipart"
51
- # require "#{Wrest::Root}/wrest/curl/session"
42
+ require "wrest/curl/response"
43
+ require "wrest/curl/request"
44
+ require "wrest/curl/get"
45
+ require "wrest/curl/put"
46
+ require "wrest/curl/post"
47
+ require "wrest/curl/delete"
48
+ require "wrest/curl/options"
49
+ require "wrest/curl/post_multipart"
50
+ require "wrest/curl/put_multipart"
51
+ # require "wrest/curl/session"
@@ -14,6 +14,7 @@ module Wrest
14
14
  ContentType = 'content-type'
15
15
  ContentLength = 'content-length'
16
16
  IfNoneMatch = 'if-none-match'
17
+ Cookie = 'cookie'
17
18
  end
18
19
  end
19
20
  end
@@ -13,6 +13,7 @@ module Wrest
13
13
  Close = 'close'
14
14
  KeepAlive = 'keep-alive'
15
15
  FormEncoded = 'application/x-www-form-urlencoded'
16
+ ApplicationXml = 'application/xml'
16
17
  end
17
18
  end
18
19
  end
@@ -14,9 +14,9 @@ module Wrest
14
14
  end
15
15
  end
16
16
 
17
- require "#{Wrest::Root}/wrest/http_shared/headers"
18
- require "#{Wrest::Root}/wrest/http_shared/standard_headers"
19
- require "#{Wrest::Root}/wrest/http_shared/standard_tokens"
17
+ require "wrest/http_shared/headers"
18
+ require "wrest/http_shared/standard_headers"
19
+ require "wrest/http_shared/standard_tokens"
20
20
 
21
21
  # Set up a shorter convenience API for constants
22
22
  Wrest::H = Wrest::HttpShared::StandardHeaders
@@ -50,7 +50,6 @@ module Wrest
50
50
  # This implementation of asynchronous post_multipart is currently in alpha. Hence, it should not be used in production.
51
51
  def post_multipart_async(parameters = {}, headers = {}, &block)
52
52
  (@options[:asynchronous_backend] || Wrest::AsyncRequest.default_backend).execute(Http::PostMultipart.new(self, parameters, headers, block ? @options.merge(:callback_block => block) : @options))
53
- nil
54
53
  end
55
54
 
56
55
  # Makes a multipart/form-data encoded PUT request to this URI. This is a convenience API
@@ -66,7 +65,6 @@ module Wrest
66
65
  # This implementation of asynchronous put_multipart is currently in alpha. Hence, it should not be used in production.
67
66
  def put_multipart_async(parameters = {}, headers = {}, &block)
68
67
  (@options[:asynchronous_backend] || Wrest::AsyncRequest.default_backend).execute(Http::PutMultipart.new(self, parameters, headers, block ? @options.merge(:callback_block => block) : @options))
69
- nil
70
68
  end
71
69
  end
72
70
 
@@ -74,13 +74,21 @@ module Wrest #:nodoc:
74
74
 
75
75
 
76
76
  def deserialise(options = {})
77
- @deserialised_body ||= deserialise_using(Wrest::Components::Translators.lookup(@http_response.content_type),options)
77
+ @deserialised_body ||= deserialise_using(Wrest::Components::Translators.lookup(@http_response.content_type),options)
78
+ end
79
+
80
+ def deserialize(options = {})
81
+ deserialise(options)
78
82
  end
79
83
 
80
84
  def deserialise_using(translator,options = {})
81
85
  translator.deserialise(@http_response,options)
82
86
  end
83
87
 
88
+ def deserialize_using(options = {})
89
+ deserialise_using(options)
90
+ end
91
+
84
92
  # Gives a hash of the response headers. The keys of the hash are case-insensitive.
85
93
  def headers
86
94
  return @headers if @headers
data/lib/wrest/native.rb CHANGED
@@ -18,16 +18,16 @@ module Wrest
18
18
  end
19
19
  end
20
20
 
21
- require "#{Wrest::Root}/wrest/native/connection_factory"
22
- require "#{Wrest::Root}/wrest/native/response"
23
- require "#{Wrest::Root}/wrest/native/redirection"
24
- require "#{Wrest::Root}/wrest/native/request"
25
- require "#{Wrest::Root}/wrest/native/get"
26
- require "#{Wrest::Root}/wrest/native/put"
27
- require "#{Wrest::Root}/wrest/native/post"
28
- require "#{Wrest::Root}/wrest/native/delete"
29
- require "#{Wrest::Root}/wrest/native/options"
30
- require "#{Wrest::Root}/wrest/native/session"
21
+ require "wrest/native/connection_factory"
22
+ require "wrest/native/response"
23
+ require "wrest/native/redirection"
24
+ require "wrest/native/request"
25
+ require "wrest/native/get"
26
+ require "wrest/native/put"
27
+ require "wrest/native/post"
28
+ require "wrest/native/delete"
29
+ require "wrest/native/options"
30
+ require "wrest/native/session"
31
31
 
32
32
  # default to using Native libs
33
33
  Wrest::Http = Wrest::Native
data/lib/wrest/test.rb CHANGED
@@ -1 +1 @@
1
- require "#{Wrest::Root}/wrest/test/request_patches"
1
+ require "wrest/test/request_patches"
@@ -0,0 +1,42 @@
1
+ module Wrest
2
+ class Uri
3
+ # Contains methods that depend on Uri#clone to build
4
+ # new Uris configured in particular ways.
5
+ module Builders
6
+ # Returns a Uri object that uses threads to perform asynchronous requests.
7
+ def using_threads
8
+ clone(:asynchronous_backend => Wrest::AsyncRequest::ThreadBackend.new)
9
+ end
10
+
11
+ # Returns a Uri object that uses eventmachine to perform asynchronous requests.
12
+ # Remember to do Wrest::AsyncRequest.enable_em first so that
13
+ # EventMachine is available for use.
14
+ def using_em
15
+ clone(:asynchronous_backend => Wrest::AsyncRequest::EventMachineBackend.new)
16
+ end
17
+
18
+ # Returns a Uri object that uses hash for caching responses.
19
+ def using_hash
20
+ clone(:cache_store => {})
21
+ end
22
+
23
+ # Returns a Uri object that uses memcached for caching responses.
24
+ # Remember to do Wrest::AsyncRequest.enable_memcached first so that
25
+ # memcached is available for use.
26
+ def using_memcached
27
+ clone(:cache_store => Wrest::Caching::Memcached.new)
28
+ end
29
+
30
+ # Disables using the globally configured cache for GET requests
31
+ # made using the Uri returned by this method.
32
+ def disable_cache
33
+ clone(:disable_cache => true)
34
+ end
35
+
36
+ # Sets the specified string as the cookie for the Uri
37
+ def using_cookie(cookie_string)
38
+ clone(:default_headers => {Wrest::H::Cookie => cookie_string})
39
+ end
40
+ end
41
+ end
42
+ end