quick_api 0.0.1 → 0.0.2

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: 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: ''