apique 1.1.2 → 1.1.3

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: 5ee5c5d499ded1ebb2f79cdc449d84223d09c9b6
4
- data.tar.gz: d0d2b475eb89a5aec8f5f571fb471548dd03f299
3
+ metadata.gz: 513c3a8d2c413a70b5f0cc6060812209a966e34c
4
+ data.tar.gz: 39982ba0c78f57a14d57186a815bd09adc274b24
5
5
  SHA512:
6
- metadata.gz: 27dc8bfbfbf4dd6571865895d3da2fc6815b7db7544726e5f706d6515e01a77f9e7f9842ccdb19cd66ca4868b307d7d273ca487901abf1d37974730cc6c46d47
7
- data.tar.gz: b1fe4d5183fb1ee8fcd599c8f107bd171217848c97b12418ce7b087f6acbf114af7399222fd87105719371257a575b5480ed33fb6924865a6b5b331f52d5b125
6
+ metadata.gz: d113e980a25c9da529a4dee28ea87dab9d52600dd7959dd36d2d739355e1021c76e175f6ffed5443be1ac12b677c31ae85f1b26765230365d210de6ef66ea55d
7
+ data.tar.gz: e027b55435aa903e570993fcde4db27ab161648213bb1874f9be973e8877293ec39cb7f6c33ab561c6791763d0cd309a02a06aff85fc4c6193b86a106c6047af
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
@@ -18,7 +18,7 @@ module Apique::Editable
18
18
  # POST /api/{plural_resource_name}
19
19
  def create
20
20
  if get_resource.save
21
- render :show, status: :created
21
+ render json: get_resource, status: :created
22
22
  else
23
23
  render json: {errors: get_resource.errors}
24
24
  end
@@ -27,7 +27,7 @@ module Apique::Editable
27
27
  # PATCH/PUT /api/{plural_resource_name}/{id}
28
28
  def update
29
29
  if get_resource.update(update_api_params)
30
- render :show
30
+ render json: get_resource
31
31
  else
32
32
  render json: {errors: get_resource.errors}
33
33
  end
@@ -55,13 +55,42 @@ module Apique::Editable
55
55
 
56
56
  ### Basic getters-setters ###
57
57
 
58
+ # Puts the resource into an instance variable.
59
+ # @raise [Apique::RecordNotFound] if there is no resource found.
60
+ # @return [Object]
61
+ def set_resource(resource = nil)
62
+ resource ||= params[:id] ? resource_class.find(params[:id]) : resource_class.new(apique_create_params)
63
+ unless resource
64
+ raise RecordNotFound, "could not find a record of type #{resource_class} with id = #{params[:id]}"
65
+ end
66
+
67
+ instance_variable_set(resource_variable_name, resource)
68
+ end
69
+
70
+ # @virtual
71
+ # Filters incoming params for <model>.create statements.
72
+ def create_params
73
+ end
74
+
75
+ # @virtual
76
+ # Filters incoming params for <record>.update statements.
77
+ # Works also for <model>.create statements IF #create_params is not defined on a subclass.
78
+ # It is very recommended to redefine it unless you're sure no one would attack your API with mass-assignment.
79
+ def update_params
80
+ params[resource_name.tr('~', '_')].to_unsafe_h
81
+ end
82
+
58
83
  # Only allow a trusted parameter "white list" through.
59
84
  # If a single resource is loaded for #create or #update,
60
85
  # then the controller for the resource must implement
61
86
  # the method "update_params" to limit permitted
62
87
  # parameters for the individual model.
63
- def update_api_params
64
- @resource_params ||= self.send('update_params')
88
+ def apique_update_params
89
+ @resource_params ||= update_params
90
+ end
91
+
92
+ def apique_create_params
93
+ @resource_params ||= create_params || update_params
65
94
  end
66
95
 
67
96
  end
@@ -48,7 +48,7 @@ module Apique::Pickable
48
48
  alias_method :subject_resource, :get_resource
49
49
 
50
50
  # Puts the resource into an instance variable.
51
- # @raise [ActionController::RoutingError] if there is no resource found.
51
+ # @raise [Apique::RecordNotFound] if there is no resource found.
52
52
  # @return [Object]
53
53
  def set_resource(resource = nil)
54
54
  resource ||= resource_class.find(params[:id])
@@ -1,3 +1,3 @@
1
1
  module Apique
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apique
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Baev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-16 00:00:00.000000000 Z
11
+ date: 2017-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  requirements: []
128
128
  rubyforge_project:
129
- rubygems_version: 2.4.8
129
+ rubygems_version: 2.5.1
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: Rails CRUD API replacement