restfully 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ 0.5.5
2
+ * raise an error if Content-Type of the response is nil or empty
3
+ * start to use webmock for better tests
4
+
5
+ 0.5.4
6
+ * refactored Restfully::Parsing module. Allow to define its own parsers for specific content types
7
+ * automatically load root resource when calling session.root
8
+
1
9
  0.5.3
2
10
  * can handle text/* content, useful when using low-level methods on a session object (session.{get,post,delete,put})
3
11
  * can now find a collection item using collection[:symbol] even if item uid is an integer: collection[:'12345']
data/Rakefile CHANGED
@@ -12,6 +12,9 @@ begin
12
12
  gem.authors = ["Cyril Rohr"]
13
13
  gem.add_dependency "rest-client", '>= 1.3'
14
14
  gem.add_dependency "backports"
15
+ gem.add_development_dependency "webmock"
16
+ gem.add_development_dependency "rspec"
17
+ gem.add_development_dependency "json"
15
18
  gem.rubyforge_project = 'restfully'
16
19
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
20
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.4
1
+ 0.5.5
data/lib/restfully.rb CHANGED
@@ -14,7 +14,7 @@ require 'restfully/collection'
14
14
 
15
15
 
16
16
  module Restfully
17
- VERSION = "0.5.3"
17
+ VERSION = "0.5.5"
18
18
  class << self
19
19
  attr_accessor :adapter
20
20
  end
@@ -54,6 +54,7 @@ module Restfully
54
54
  end
55
55
 
56
56
  def select_parser_for(content_type)
57
+ raise ParserNotFound.new("The Content-Type HTTP header of the resource is empty. Cannot find a parser.") if content_type.nil? || content_type.empty?
57
58
  content_type.split(",").each do |type|
58
59
  parser = PARSERS.find{|parser| parser[:supported_types].find{|supported_type| type =~ (supported_type.kind_of?(String) ? Regexp.new(supported_type) : supported_type) }}
59
60
  return parser unless parser.nil?
data/restfully.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{restfully}
8
- s.version = "0.5.4"
8
+ s.version = "0.5.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Cyril Rohr"]
@@ -93,13 +93,22 @@ Gem::Specification.new do |s|
93
93
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
94
94
  s.add_runtime_dependency(%q<rest-client>, [">= 1.3"])
95
95
  s.add_runtime_dependency(%q<backports>, [">= 0"])
96
+ s.add_development_dependency(%q<webmock>, [">= 0"])
97
+ s.add_development_dependency(%q<rspec>, [">= 0"])
98
+ s.add_development_dependency(%q<json>, [">= 0"])
96
99
  else
97
100
  s.add_dependency(%q<rest-client>, [">= 1.3"])
98
101
  s.add_dependency(%q<backports>, [">= 0"])
102
+ s.add_dependency(%q<webmock>, [">= 0"])
103
+ s.add_dependency(%q<rspec>, [">= 0"])
104
+ s.add_dependency(%q<json>, [">= 0"])
99
105
  end
100
106
  else
101
107
  s.add_dependency(%q<rest-client>, [">= 1.3"])
102
108
  s.add_dependency(%q<backports>, [">= 0"])
109
+ s.add_dependency(%q<webmock>, [">= 0"])
110
+ s.add_dependency(%q<rspec>, [">= 0"])
111
+ s.add_dependency(%q<json>, [">= 0"])
103
112
  end
104
113
  end
105
114
 
data/spec/session_spec.rb CHANGED
@@ -57,6 +57,11 @@ describe Session do
57
57
  end
58
58
 
59
59
  it "should initialize the root resource" do
60
+ stub_request(:get, "https://api.grid5000.fr/grid5000").to_return(
61
+ :status => 200,
62
+ :body => {"property1" => "value1"}.to_json,
63
+ :headers => {'Content-Type' => 'text/plain', 'Content-Length' => 4}
64
+ )
60
65
  session = Session.new(:base_uri => 'https://api.grid5000.fr/grid5000', :user => 'crohr', :password => 'password')
61
66
  session.root.should be_a Restfully::Resource
62
67
  session.root.uri.to_s.should == 'https://api.grid5000.fr/grid5000'
@@ -65,7 +70,7 @@ describe Session do
65
70
 
66
71
  it "should yield the loaded root resource and the session object" do
67
72
  Restfully::Resource.stub!(:new).and_return(root_resource = mock(Restfully::Resource))
68
- root_resource.should_receive(:load).and_return(root_resource)
73
+ root_resource.should_receive(:load).at_least(1).and_return(root_resource)
69
74
  Session.new(:base_uri => 'https://api.grid5000.fr', :user => 'crohr', :password => 'password') do |root, session|
70
75
  session.root.should == root
71
76
  root.should == root_resource
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,9 @@ require 'spec'
5
5
  require 'spec/autorun'
6
6
  require 'json'
7
7
 
8
+ require 'webmock/rspec'
9
+ include WebMock
10
+
8
11
  def fixture(filename)
9
12
  File.read(File.join(File.dirname(__FILE__), "fixtures", filename))
10
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restfully
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Rohr
@@ -32,6 +32,36 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: "0"
34
34
  version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: webmock
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rspec
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
35
65
  description: Experimental code for auto-generation of wrappers on top of RESTful APIs that follow HATEOAS principles and provide OPTIONS methods and/or Allow headers.
36
66
  email: cyril.rohr@gmail.com
37
67
  executables: