admin-api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/admin-api.rb +80 -0
  3. metadata +44 -0
@@ -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
@@ -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: []