quick_api 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 198a9d02cef54d7b0f8937f052d7e4a207bfb074
4
- data.tar.gz: 5b4412a65563c7becd68dfa607486db287ad8387
3
+ metadata.gz: ab3a1a650429f8912473e4591a6467a2262fe3ec
4
+ data.tar.gz: 1fdc64d1cfdd956ee63381aad946021033e781a0
5
5
  SHA512:
6
- metadata.gz: e0d34b3fb80b09ae6a430a2bb8499a42775f50d1669abce394be51858941f2ec579dca7cc2beb0e6043bcf3c444a17ad16389c820608cec2f043534f75fe85d7
7
- data.tar.gz: c0a4f9de93881a782e12689317b487e500bf94bbe1252648164098abad3edf273be52aa75713ab4840d855f96c72c9e54756961b9f8dffdf7baddcac66a50055
6
+ metadata.gz: aaf87fa52085b5394e51fcd877940ebd47da0d300dc1e5790fbd38fcec3714d15293d213cfc2c539f413b5e16e06aae79368c28162dc3a5ac5619d56bd3c6f94
7
+ data.tar.gz: fc54eae113d4a63837c6b77bb8031f482396296a61b54ca7c7ce93b75b4f29e56c1127bb1093d94de37e596654567402339e05cdef18464f356612cf10b95e48
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- quick_api (0.0.1)
4
+ quick_api (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -0,0 +1,151 @@
1
+ require 'quick_api'
2
+
3
+ module QuickApi
4
+ module Mongoid
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ class_attribute :quick_api_attributes
9
+ # class_attribute :quick_api_methods
10
+ class_attribute :quick_api_has_many
11
+ class_attribute :quick_api_belongs_to
12
+ class_attribute :quick_api_has_one
13
+ class_attribute :quick_api_has_and_belongs_to_many
14
+ class_attribute :quick_api_embeds_many
15
+ class_attribute :quick_api_embedded_in
16
+ class_attribute :quick_api_embeds_one
17
+ end
18
+
19
+ module ClassMethods
20
+
21
+ def quick_api_attrributes(*names)
22
+ self.quick_api_attributes = names
23
+ end
24
+
25
+ def quick_api_has_many(*relations)
26
+ self.quick_api_has_many = relations
27
+ end
28
+
29
+ def quick_api_belongs_to(*relations)
30
+ self.quick_api_belongs_to = relations
31
+ end
32
+
33
+ def quick_api_has_one(*relations)
34
+ self.quick_api_has_one = relations
35
+ end
36
+
37
+ def quick_api_has_and_belongs_to_many(*relations)
38
+ self.quick_api_has_and_belongs_to_many = relations
39
+ end
40
+
41
+ def quick_api_embeds_many(*relations)
42
+ self.quick_api_embeds_many = relations
43
+ end
44
+
45
+ def quick_api_embedded_in(*relations)
46
+ self.quick_api_embedded_in = relations
47
+ end
48
+
49
+ def quick_api_embeds_one(*relations)
50
+ self.quick_api_embeds_one = relations
51
+ end
52
+
53
+ # def quick_api_methods(*methods)
54
+ #  self.quick_api_methods = methods
55
+ # end
56
+
57
+ end
58
+
59
+ def to_api(options = {relations: true}, result = {})
60
+ if options[:fields]
61
+ api_fields = options[:fields]
62
+ else
63
+ api_fields = self.quick_api_attributes.nil? ? [] : self.quick_api_attributes
64
+ end
65
+ api_fields.each do |api_field|
66
+ begin
67
+ if (self.send(api_field)).class == Paperclip::Attachment
68
+ picture_styles = []
69
+ self.send(api_field).styles.each {|style| picture_styles << style[0]}
70
+ result[api_field] = {original: "http://#{ActionMailer::Base.default_url_options[:host]}#{self.send(api_field).url}",
71
+ styles: picture_styles}
72
+ else
73
+ begin
74
+ result[api_field] = self.send(api_field)
75
+ rescue
76
+ raise "The field #{api_field} don't exist in this Model"
77
+ end
78
+ end
79
+ rescue
80
+ begin
81
+ result[api_field] = self.send(api_field)
82
+ rescue
83
+ raise "The field #{api_field} don't exist in this Model"
84
+ end
85
+ end
86
+ end
87
+
88
+ # if self.quick_api_methods
89
+ # result = api_method_options(result, self.quick_api_methods)
90
+ # end
91
+
92
+ if options[:relations] == true
93
+ result = api_many_options(result, self.quick_api_has_many) if self.quick_api_has_many
94
+ result = api_belongs_or_one_options(result, self.quick_api_belongs_to) if self.quick_api_belongs_to
95
+ result = api_belongs_or_one_options(result, self.quick_api_has_one) if self.quick_api_has_one
96
+ result = api_many_options(result, self.quick_api_has_and_belongs_to_many) if self.quick_api_has_and_belongs_to_many
97
+ result = api_many_options(result, self.quick_api_embeds_many) if self.quick_api_embeds_many
98
+ result = api_belongs_or_one_options(result, self.quick_api_embedded_in) if self.quick_api_embedded_in
99
+ result = api_belongs_or_one_options(result, self.quick_api_embeds_one) if self.quick_api_embeds_one
100
+ end
101
+
102
+ result = api_set_options(result, options)
103
+
104
+ return result
105
+ end
106
+
107
+ private
108
+
109
+ # def api_method_options(result, options)
110
+ # options.each do |method|
111
+ # #TODO doc
112
+ # result.merge! self.send(method)
113
+ # end
114
+ # return result
115
+ # end
116
+
117
+ def api_set_options(result, options)
118
+ result = api_added(result, options[:added]) if options[:added]
119
+ return result
120
+ end
121
+
122
+ def api_many_options(result, many)
123
+ many.each do |model|
124
+ resources = eval(model.to_s.underscore.pluralize)
125
+ result_api_resources = []
126
+ resources.each do |resource|
127
+ result_api_resources << resource.to_api
128
+ end
129
+ result[model.to_s.underscore.pluralize] = result_api_resources
130
+ end
131
+ return result
132
+ end
133
+
134
+ def api_belongs_or_one_options(result, one)
135
+ one.each do |model|
136
+ resource = eval(model.to_s.singularize.camelize.underscore)
137
+ result[model.to_s.singularize.camelize.underscore] = resource.try(:to_api)
138
+ end
139
+ return result
140
+ end
141
+
142
+ def api_added(result, added)
143
+ added.each do |field|
144
+ field.each do |sub_field|
145
+ result[sub_field[0]] = sub_field[1] unless sub_field.empty?
146
+ end
147
+ end
148
+ return result
149
+ end
150
+ end
151
+ end
@@ -1,3 +1,3 @@
1
1
  module QuickApi
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/quick_api.rb CHANGED
@@ -1,5 +1,12 @@
1
- require "quick_api/version"
1
+ require 'active_support'
2
+
3
+ require 'quick_api/version'
2
4
 
3
5
  module QuickApi
4
- # Your code goes here...
6
+
7
+ end
8
+
9
+ # include in AR
10
+ ActiveSupport.on_load(:active_record) do
11
+ ActiveRecord::Base.send(:include, QuickApi)
5
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quick_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - SternCode
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-25 00:00:00.000000000 Z
11
+ date: 2014-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,6 +53,7 @@ files:
53
53
  - Rakefile
54
54
  - lib/quick_api.rb
55
55
  - lib/quick_api/.DS_Store
56
+ - lib/quick_api/mongoid.rb
56
57
  - lib/quick_api/version.rb
57
58
  - quick_api.gemspec
58
59
  homepage: ''