api-client 1.7.0 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -62,6 +62,7 @@ It can handle associations. It will automatically instantiate an association for
62
62
  ```ruby
63
63
  class Person < ApiClient::Base
64
64
  self.associations = { :houses => "House", :cars => "Car" }
65
+ end
65
66
  ```
66
67
 
67
68
  This code will create a setter and a getter for houses and cars and initialize the respective class inside the setter.
@@ -5,4 +5,29 @@ class UserController < ApplicationController
5
5
  @users = User.get("api.example.com/users")
6
6
  respond_with(@users)
7
7
  end
8
- end
8
+
9
+ def new
10
+ @user = User.new
11
+ respond_with(@user)
12
+ end
13
+
14
+ def create
15
+ @user = User.post("api.example.com/users", :user => params[:user])
16
+ respond_with(@user)
17
+ end
18
+
19
+ def edit
20
+ @user = User.get("api.example.com/users/#{params[:id]}")
21
+ respond_with(@user)
22
+ end
23
+
24
+ def update
25
+ @user = User.patch("api.example.com/users", { :id => params[:id], :user => params[:user]})
26
+ respond_with(@user)
27
+ end
28
+
29
+ def show
30
+ @user = User.get("api.example.com/users/#{params[:id]}")
31
+ respond_with(@user)
32
+ end
33
+ end
@@ -0,0 +1,11 @@
1
+ class Admin < ApiClient::Base
2
+ self.remote_object = "user"
3
+ self.association = { :groups => "Group" }
4
+
5
+ # Any of this fields can be called to manage rails form.
6
+ attr_accessor :id, :email, :password, :password_confirmation
7
+
8
+ # Validations will work as well
9
+ validates :email, :presence => true, :uniqueness => true
10
+ validates :password, :confirmation => true
11
+ end
@@ -0,0 +1,3 @@
1
+ class Group < ApiClient::Base
2
+ self.associations = { :members => "User", :owner => "Admin" }
3
+ end
@@ -1,8 +1,10 @@
1
1
  class User < ApiClient::Base
2
+ self.association = { :groups => "Group" }
3
+
2
4
  # Any of this fields can be called to manage rails form.
3
5
  attr_accessor :id, :email, :password, :password_confirmation
4
6
 
5
7
  # Validations will work as well
6
8
  validates :email, :presence => true, :uniqueness => true
7
9
  validates :password, :confirmation => true
8
- end
10
+ end
@@ -53,10 +53,11 @@ module ApiClient
53
53
  associations.each do |association, class_name|
54
54
  class_eval <<-EVAL
55
55
  def #{association.to_s}=(attributes = {})
56
- @association = #{class_name.constantize}.new(attributes)
56
+ return @#{class_name.constantize} = attributes.map { |attr| #{class_name.constantize}.new(attr) } if attributes.instance_of?(Array)
57
+ @#{class_name.constantize} = #{class_name.constantize}.new(attributes)
57
58
  end
58
59
  def #{association.to_s}
59
- @association
60
+ @#{class_name.constantize}
60
61
  end
61
62
  EVAL
62
63
  end
@@ -1,5 +1,5 @@
1
1
  # High Level Namespace of the library ApiClient.
2
2
  module ApiClient
3
3
  # Version of the library.
4
- VERSION = "1.7.0"
4
+ VERSION = "1.7.1"
5
5
  end
@@ -69,15 +69,15 @@ describe ApiClient::Base do
69
69
 
70
70
  describe "#associations" do
71
71
  before :each do
72
- @post = Post.new({:a => "a", :writer => {:b => "b"}})
72
+ @group = Group.new(:members => [{:a => "a"}], :owner => {:b => "b"})
73
73
  end
74
74
 
75
- it "should instantiate a new instance of the association" do
76
- @post.writer.should be_an_instance_of(User)
75
+ it "should instantiate all members" do
76
+ @group.members.first.should be_an_instance_of(User)
77
77
  end
78
78
 
79
- it "should create a setter and a getter for the associations" do
80
- @post.writer.b.should == "b"
79
+ it "should instantiate the owner" do
80
+ @group.owner.should be_an_instance_of(Admin)
81
81
  end
82
82
  end
83
83
 
@@ -22,3 +22,7 @@ class Post < ApiClient::Base
22
22
 
23
23
  attr_accessor :a
24
24
  end
25
+
26
+ class Group < ApiClient::Base
27
+ self.associations({ :members => "User", :owner => "Admin" })
28
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -125,6 +125,8 @@ files:
125
125
  - api-client.gemspec
126
126
  - examples/controllers/application_controller.rb
127
127
  - examples/controllers/user_controller.rb
128
+ - examples/models/admin.rb
129
+ - examples/models/group.rb
128
130
  - examples/models/user.rb
129
131
  - gemfiles/Gemfile.net_http
130
132
  - gemfiles/Gemfile.typhoeus
@@ -165,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
167
  version: '0'
166
168
  segments:
167
169
  - 0
168
- hash: 3232996777461905993
170
+ hash: 4497437343432747897
169
171
  required_rubygems_version: !ruby/object:Gem::Requirement
170
172
  none: false
171
173
  requirements:
@@ -174,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
176
  version: '0'
175
177
  segments:
176
178
  - 0
177
- hash: 3232996777461905993
179
+ hash: 4497437343432747897
178
180
  requirements: []
179
181
  rubyforge_project:
180
182
  rubygems_version: 1.8.24