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.
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: []