activerequest 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e72048573158f04d9620ed07b6971c7745b35742
4
- data.tar.gz: b17c27e862fbcf8c09cccafdff1065ea06be5cbc
3
+ metadata.gz: ac83cebb3fb2d47f4364bbf316cf217b79bb238f
4
+ data.tar.gz: 508dfb2390af865cdbd9619ca7bdd7800073b9ec
5
5
  SHA512:
6
- metadata.gz: e1124ed19a6d12fa5055670916d4c27c8c3d7c8a082cb05e239ab03975af0c3095e4e0897efd283f8ba77f769a85f713c6b5fadbaa831d248bf2f12d4c49d764
7
- data.tar.gz: 8673f1fcebe8f7c33e56495fbc06bff18e496a242b538872b6b4920026ef20b2e9f4e3048ac1f02e4afbd3442d17da5d95660a384f21529b8a4c505de5510682
6
+ metadata.gz: bfb9e47749ba3d5753ea0f3b4b77c5f90e1af9781a4f495e8eb09ca8912caa0a50ee1276a37c29ddd5bcfcdc717913bdfad28227fde77992102fe9614c74cc02
7
+ data.tar.gz: de8ba12c46bbab1aa4c17926d63dd51a227b173332a72514e650fd4a135397bb685eef1975edd733ca9597034f6262f633bfcd74fff2b882c1feb8c964ac928b
data/README.md CHANGED
@@ -28,6 +28,15 @@ ActiveRequest.configure do |config|
28
28
  config.api_version = 'v1'
29
29
  end
30
30
  ```
31
+
32
+ You can use headers for token.
33
+ ```ruby
34
+ ActiveRequest.configure do |config|
35
+ config.uri = 'localhost:4567'
36
+ config.api_version = 'v1'
37
+ config.headers = { "token" => "*" }
38
+ end
39
+ ```
31
40
  ## Usage
32
41
 
33
42
  [Examples](https://github.com/xptavares/activerequest/blob/master/examples/README.md)
data/examples/README.md CHANGED
@@ -50,3 +50,38 @@ blog.save # "PUT /v1/blogs/1.json?blog[id]=1&blog[title]=new%20title&blog[posts_
50
50
  blog = Blog.find(1)
51
51
  blog.delete # "DELETE /v1/blogs/1.json HTTP/1.1" 200
52
52
  ```
53
+
54
+ ## Association
55
+
56
+ #### classes
57
+ ```ruby
58
+ class Blog < ActiveRequest::Base
59
+ attr_accessor :id, :title
60
+ has_many :posts
61
+ end
62
+
63
+ class Post < ActiveRequest::Base
64
+ attr_accessor :id, :title, :body
65
+ belongs_to :blog
66
+ end
67
+ ```
68
+
69
+ #### has many
70
+
71
+ ```ruby
72
+ blog = Blog.first
73
+ => #<Blog:0x0056334e564ed8 @id=1, @title="title 1", @posts=[]>
74
+ blog.posts # "GET /v1/blogs/1/posts.json HTTP/1.1" 200
75
+ => [#<Post:0x0056334e554240 @id=1, @title="title 1", @body="body 1", @blog=nil>, #<Post:0x0056334e5537a0 @id=2, @title="title 2", @body="body 2", @blog=nil>]
76
+ ```
77
+
78
+ #### belongs to
79
+
80
+ ```ruby
81
+ post = Post.find 1
82
+ => #<Post:0x007fb2c4112578 @blog_id=1, @blog=nil, @id=1, @title="title 1", @body="body 1">
83
+ post.blog # "GET /v1/blogs/1.json HTTP/1.1" 200
84
+ => #<Blog:0x007fb2c40862d0 @posts=[], @id=1, @title="title 1">
85
+ post
86
+ => #<Post:0x007fb2c4112578 @blog_id=1, @blog=#<Blog:0x007fb2c40862d0 @posts=[], @id=1, @title="title 1">, @id=1, @title="title 1", @body="body 1">
87
+ ```
@@ -3,14 +3,19 @@ require 'rubygems'
3
3
  require "sinatra"
4
4
  require "sinatra/json"
5
5
 
6
+ b1 = { id: 1, title: 'title 1' }
7
+ b2 = { id: 2, title: 'title 2' }
8
+ blogs = [b1, b2]
9
+ t1 = { id: 1, title: 'title 1', body: 'body 1', blog_id: 1 }
10
+ t2 = { id: 2, title: 'title 2', body: 'body 2', blog_id: 1 }
11
+ t3 = { id: 3, title: 'title 3', body: 'body 3', blog_id: 2 }
12
+ posts = [t1, t2, t3]
13
+
6
14
  get '/' do
7
15
  json foo: 'bar'
8
16
  end
9
17
 
10
18
  get '/v1/blogs.json' do
11
- b1 = { id: 1, title: 'title 1' }
12
- b2 = { id: 2, title: 'title 2' }
13
- blogs = [b1, b2]
14
19
  blogs = blogs.select { |b| b[:id].to_s == params[:id] } if params[:id]
15
20
  blogs = blogs.select { |b| b[:title] == params[:title] } if params[:title]
16
21
  json blogs: blogs
@@ -36,11 +41,13 @@ delete '/v1/blogs/:id.json' do
36
41
  json blog: { id: id.to_i }
37
42
  end
38
43
 
44
+ get '/v1/blogs/:blog_id/posts.json' do
45
+ blog_id = params[:blog_id].to_i
46
+ posts = posts.select { |p| p[:blog_id] == blog_id }
47
+ json "blog/posts" => posts
48
+ end
49
+
39
50
  get '/v1/posts.json' do
40
- t1 = { id: 1, title: 'title 1', body: 'body 1', blog_id: 1 }
41
- t2 = { id: 2, title: 'title 2', body: 'body 2', blog_id: 1 }
42
- t3 = { id: 3, title: 'title 3', body: 'body 3', blog_id: 2 }
43
- posts = [t1, t2, t3]
44
51
  posts = posts.select { |b| b[:id].to_s == params[:id] } if params[:id]
45
52
  posts = posts.select { |b| b[:title] == params[:title] } if params[:title]
46
53
  posts = posts.select { |b| b[:body] == params[:body] } if params[:body]
@@ -14,6 +14,10 @@ module ActiveRequest
14
14
  attributes.each do |att|
15
15
  send("#{att}=", options[att]) if options[att].present?
16
16
  end
17
+ belongs_tos.each do |att|
18
+ simble = att[:foreign_key].to_sym
19
+ send("#{att[:foreign_key]}=", options[simble]) if options[simble].present?
20
+ end if belongs_tos
17
21
  end
18
22
  self.class.base_uri("#{ActiveRequest.configuration.uri}/#{ActiveRequest.configuration.api_version}/")
19
23
  end
@@ -22,11 +26,11 @@ module ActiveRequest
22
26
  name.underscore.pluralize
23
27
  end
24
28
 
25
- def self.new( *args, &blk )
29
+ def self.new(*args, &blk)
26
30
  alloc = allocate
27
- alloc.instance_eval { initialize(*args, &blk) }
28
31
  build_has_manys(alloc)
29
32
  build_belongs_tos(alloc)
33
+ alloc.instance_eval { initialize(*args, &blk) }
30
34
  alloc
31
35
  end
32
36
  end
@@ -8,10 +8,8 @@ module ActiveRequest
8
8
  def belongs_to(association, options = nil)
9
9
  @belongs_tos ||= []
10
10
  class_name = !options.nil? && !options[:class_name].nil? ? options[:class_name] : (association.to_s.split.map(&:capitalize)*' ')
11
- @belongs_tos << { association: association, class_name: class_name }
12
- # define_method("#{association}=") do |association|
13
- # set(association)
14
- # end
11
+ foreign_key = !options.nil? && !options[:foreign_key].nil? ? options[:foreign_key] : "#{association}_id"
12
+ @belongs_tos << { association: association, class_name: class_name, foreign_key: foreign_key }
15
13
  end
16
14
 
17
15
  def belongs_tos
@@ -20,12 +18,25 @@ module ActiveRequest
20
18
 
21
19
  def build_belongs_tos(alloc)
22
20
  alloc.belongs_tos.each do |many|
21
+ alloc.instance_variable_set("@#{many[:foreign_key]}", nil)
23
22
  alloc.instance_variable_set("@#{many[:association]}", nil)
24
23
  define_method(many[:association]) do
25
- alloc.instance_variable_get("@#{many[:association]}")
24
+ variable = alloc.instance_variable_get("@#{many[:association]}")
25
+ if id && variable.blank?
26
+ father_ojb = Object.const_get(many[:class_name])
27
+ variable = father_ojb.find send(many[:foreign_key])
28
+ send("#{many[:association]}=", variable) if variable
29
+ end
30
+ variable
26
31
  end
27
- define_method("#{many[:association]}=") do |many_setter|
28
- alloc.instance_variable_set("@#{many[:association]}", many_setter)
32
+ define_method(many[:foreign_key]) do
33
+ alloc.instance_variable_get("@#{many[:foreign_key]}")
34
+ end
35
+ define_method("#{many[:association]}=") do |association_setter|
36
+ alloc.instance_variable_set("@#{many[:association]}", association_setter)
37
+ end
38
+ define_method("#{many[:foreign_key]}=") do |foreign_key_setter|
39
+ alloc.instance_variable_set("@#{many[:foreign_key]}", foreign_key_setter)
29
40
  end
30
41
  end if alloc.belongs_tos
31
42
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveRequest
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerequest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Tavares
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-20 00:00:00.000000000 Z
11
+ date: 2016-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty