admin-api 0.0.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 +7 -0
- data/lib/admin-api.rb +80 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 34152bc669dfc453b380616deafd89abca1a1981
|
4
|
+
data.tar.gz: 8e66b735274d671eb730bf0a094e8ce064b1ab5a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1a9df7a847c5a180befbdcf494e587fa1ddeea31bedc01deb698f80e0e1be02c69dc9dc4105c665ff27b345b25f82ca7d6c42d9d8aa06cf9be94e4d4ed3c6c3d
|
7
|
+
data.tar.gz: 9467cfbdca38e943fb4d74e3a05893511be9527ba28b7527615717e6d345e0a124a90b14c4f9154029d4f073b9e605bbdf10168860e2339ab665f9953af7dd46
|
data/lib/admin-api.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
module AdminAPI
|
2
|
+
class Admin
|
3
|
+
@@routes = nil
|
4
|
+
attr_accessor :inheritance_class
|
5
|
+
def initializer
|
6
|
+
@inheritance_class = nil
|
7
|
+
end
|
8
|
+
def register _class, &block
|
9
|
+
@inheritance_class = Class.new Admin::AdminController
|
10
|
+
Admin::AdminController.const_set "AdminAPI#{_class.name}", @inheritance_class
|
11
|
+
yield self
|
12
|
+
save_routes
|
13
|
+
end
|
14
|
+
def controller &block
|
15
|
+
#define new route
|
16
|
+
yield(@inheritance_class)
|
17
|
+
end
|
18
|
+
def save_routes
|
19
|
+
@inheritance_class.methods.each do
|
20
|
+
#Will be configuered later for the rest of the application
|
21
|
+
end
|
22
|
+
end
|
23
|
+
def self.routes
|
24
|
+
#Define routes to our controller
|
25
|
+
return @@routes
|
26
|
+
end
|
27
|
+
def config
|
28
|
+
yield(self.config)
|
29
|
+
end
|
30
|
+
private
|
31
|
+
def complete_serializer serializer
|
32
|
+
@inheritance_class.complete_serializer = serializer
|
33
|
+
end
|
34
|
+
def short_serializer serializer
|
35
|
+
@inheritance_class.short_serializer = serializer
|
36
|
+
end
|
37
|
+
def permit_params *attributes
|
38
|
+
@inheritance_class.permit_params = *attributes
|
39
|
+
end
|
40
|
+
end
|
41
|
+
class AdminController < ApiController
|
42
|
+
before_action :authenticate_admin_user!
|
43
|
+
attr_accessor :class_name, :short_serializer, :complete_serializer, :permit_params
|
44
|
+
def create
|
45
|
+
item = @class.new create_params
|
46
|
+
if @complete_serializer
|
47
|
+
render json: item, serializer: @complete_serializer
|
48
|
+
else
|
49
|
+
render json:item
|
50
|
+
end
|
51
|
+
end
|
52
|
+
def index
|
53
|
+
if @short_serializer
|
54
|
+
render json: @class_name.all, each_serializer: @short_serializer
|
55
|
+
else
|
56
|
+
render json: @class.all
|
57
|
+
end
|
58
|
+
end
|
59
|
+
def update
|
60
|
+
item = @class.find params[:id]
|
61
|
+
if item.update(create_params)
|
62
|
+
if @complete_serializer
|
63
|
+
render json: item, serializer: @complete_serializer
|
64
|
+
else
|
65
|
+
render json:item
|
66
|
+
end
|
67
|
+
else
|
68
|
+
render json: item.errors, status: :bad_request
|
69
|
+
end
|
70
|
+
end
|
71
|
+
def destroy
|
72
|
+
@class_name.where(id: params[:id]).destroy_all
|
73
|
+
render nothing: true
|
74
|
+
end
|
75
|
+
private
|
76
|
+
def create_params
|
77
|
+
params.require(@class.name).permit(@permit_params)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: admin-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marouane BENALLA
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: It's a simple gem to create admin api
|
14
|
+
email: marouan.benalla@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/admin-api.rb
|
20
|
+
homepage: http://rubygems.org/gems/admin-api
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubyforge_project:
|
40
|
+
rubygems_version: 2.6.1
|
41
|
+
signing_key:
|
42
|
+
specification_version: 4
|
43
|
+
summary: Hola!
|
44
|
+
test_files: []
|