softwear-lib 1.2.14 → 1.3.0

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: ef268ee91b6605b45f02d5be1836964186de022c
4
- data.tar.gz: 05eb9a9c6296482c1f553a76b70b63c2d2d62a36
3
+ metadata.gz: d4830aac57d5fe0501f9a421688ed7e42c260987
4
+ data.tar.gz: af7e357cf47863895f9d7f512fea819d2c966ea6
5
5
  SHA512:
6
- metadata.gz: 26718cd68b85ab5a1abf374794512224b60957267870d6c82fc8ae544f84be613627f3c3cc96a69aec4c058da7b9283d3f7c2e5d2610c303ed869b54ea138eae
7
- data.tar.gz: 9090cd0f2b911197cec62d7eea8ad6730e0cab1f33125b0deb8be9e2dde6358ef1b1ebbe6926bb22c128cdcb68d4d497d822bef9abe9b11cd9d635bbbf45711b
6
+ metadata.gz: 7dfcc16991b894785bc472df0f65e09f0cb072b43371586ad90766f9bced369b7d5eef122c6e090d329e7821aa28e5b5d4fa110d4805895b1fb33593dee0069c
7
+ data.tar.gz: 7c142e9fe8f4b2abb39e341adf61dd11687cc49706c636abb48d116d86522406716e8662fab00766dc3cd3c7603a4484327a9186627855061ec43f85a17dadda
@@ -0,0 +1,115 @@
1
+ module Api
2
+ class ApiController < ActionController::Base
3
+ include InheritedResources::Actions
4
+ include InheritedResources::BaseHelpers
5
+ extend InheritedResources::ClassMethods
6
+ extend InheritedResources::UrlHelpers
7
+
8
+ acts_as_token_authentication_handler_for User
9
+ skip_before_filter :authenticate_user!
10
+ skip_before_filter :verify_authenticity_token
11
+
12
+ before_filter :allow_origin
13
+
14
+ respond_to :json
15
+ self.responder = InheritedResources::Responder
16
+
17
+ self.class_attribute :resource_class, :instance_writer => false unless self.respond_to? :resource_class
18
+ self.class_attribute :parents_symbols, :resources_configuration, :instance_writer => false
19
+
20
+ def index(&block)
21
+ yield if block_given?
22
+
23
+ key_values = permitted_attributes.map do |a|
24
+ [a, params[a]] if params.key?(a)
25
+ end
26
+ .compact
27
+
28
+ self.records ||= resource_class
29
+ self.records = records.where(Hash[key_values])
30
+
31
+ respond_to do |format|
32
+ format.json(&render_json(records))
33
+ end
34
+ end
35
+
36
+ def show
37
+ super do |format|
38
+ format.json(&render_json)
39
+ end
40
+ end
41
+
42
+ def update
43
+ super do |format|
44
+ format.json(&render_json)
45
+ end
46
+ end
47
+
48
+ def create
49
+ create! do |success, failure|
50
+ success.json do
51
+ headers['Location'] = resource_url(record.id)
52
+ render_json(status: 201).call
53
+ end
54
+ failure.json(&render_json)
55
+ end
56
+ end
57
+
58
+ def options
59
+ head(:ok) if request.request_method == 'OPTIONS'
60
+ end
61
+
62
+ protected
63
+
64
+ def render_json(options = {})
65
+ proc do
66
+ if options.is_a?(Hash)
67
+ records = nil
68
+ else
69
+ records = options
70
+ options = {}
71
+ end
72
+ rendering = {
73
+ json: (records || record),
74
+ methods: [:id] + permitted_attributes,
75
+ include: includes
76
+ }
77
+ .merge(options)
78
+
79
+ render rendering
80
+ end
81
+ end
82
+
83
+ def self.model_name
84
+ name.gsub('Api::', '').gsub('Controller', '').singularize
85
+ end
86
+
87
+ # Override this to specify the :include option of rendering json.
88
+ def includes
89
+ {}
90
+ end
91
+
92
+ def records
93
+ instance_variable_get("@#{self.class.model_name.underscore.pluralize}")
94
+ end
95
+
96
+ def records=(r)
97
+ instance_variable_set("@#{self.class.model_name.underscore.pluralize}", r)
98
+ end
99
+
100
+ def record
101
+ instance_variable_get("@#{self.class.model_name.underscore}")
102
+ end
103
+
104
+ def allow_origin
105
+ headers['Access-Control-Allow-Origin'] = '*'
106
+ headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, PATCH, DELETE'
107
+ headers['Access-Control-Allow-Headers'] = 'X-Requested-With'
108
+ headers['Access-Control-Allow-Credentials'] = 'true'
109
+ end
110
+
111
+ def permitted_attributes
112
+ resource_class.column_names
113
+ end
114
+ end
115
+ end
@@ -1,5 +1,5 @@
1
1
  module Softwear
2
2
  module Lib
3
- VERSION = "1.2.14"
3
+ VERSION = "1.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: softwear-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.14
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nigel Baillie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-04 00:00:00.000000000 Z
11
+ date: 2015-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,6 +84,7 @@ files:
84
84
  - bin/softwear
85
85
  - bin/softwear-deploy
86
86
  - lib/softwear/lib.rb
87
+ - lib/softwear/lib/api_controller.rb
87
88
  - lib/softwear/lib/spec.rb
88
89
  - lib/softwear/lib/version.rb
89
90
  - softwear-lib.gemspec