grape_serializer 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/grape_response.rb +36 -0
- data/lib/grape_serializer.rb +32 -0
- data/lib/service_entity.rb +15 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e6cde3413de0621c240b2c3b6843a2c5beb4fd0674211a1d124761d9ddd0f42b
|
4
|
+
data.tar.gz: 03c916507d7f224b0e0dc2d60be1f7e09fcc55e6e7ebe2a0e6733432a5a9001f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a96423d53ed8246e87477595311cdd1bd837aa53ecb0bdae7d106fe3835e427c6476f3e80c2a37ab0d7148c07a80b7c4998d82dc1cd4cccff2a8d76b8bff3207
|
7
|
+
data.tar.gz: 24ce272712ab7b40cf25eb5e8ad7adeab25f89be03f8bd630a357ce5adc381c41507ec1872ca2a3d9ed7e1fe32f3dacf8c1917dce17455ebbc958f5e0932699a
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module GrapeResponse
|
2
|
+
|
3
|
+
def serialize_response(serializer_name, resource, **options)
|
4
|
+
set_serializer_class(serializer_name)
|
5
|
+
serializer = serializer_class.new(current_member: current_member)
|
6
|
+
render status: 200, json: {data: serializer.represent(resource, options)}
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def current_member
|
12
|
+
end
|
13
|
+
|
14
|
+
def controller_path
|
15
|
+
end
|
16
|
+
|
17
|
+
def serializer_class
|
18
|
+
@serializer_class
|
19
|
+
end
|
20
|
+
|
21
|
+
def serializer_class=(class_name)
|
22
|
+
@serializer_class = class_name.safe_constantize
|
23
|
+
end
|
24
|
+
|
25
|
+
def set_serializer_class(serializer_name)
|
26
|
+
serializer_class_name = "#{serializer_name.to_s.camelize}Serializer"
|
27
|
+
if controller_path.nil?
|
28
|
+
self.serializer_class = serializer_class_name
|
29
|
+
else
|
30
|
+
controller_name = controller_path.classify
|
31
|
+
self.serializer_class = controller_name.gsub(/Api::(\w+)::\S+$/, "Api::#{'\1'}::#{serializer_class_name}")
|
32
|
+
end
|
33
|
+
serializer_class
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'grape_response'
|
2
|
+
require 'service_entity'
|
3
|
+
|
4
|
+
class GrapeSerializer
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_reader :entity_class
|
8
|
+
|
9
|
+
def entity(entity_class)
|
10
|
+
@entity_class ||= entity_class
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(params = {})
|
15
|
+
@params = params
|
16
|
+
end
|
17
|
+
|
18
|
+
def represent(resource, opts = {})
|
19
|
+
preload_associations(resource) if defined?(::Rails::Engine) && defined?(::ActiveRecord) && resource.is_a?(ActiveRecord)
|
20
|
+
self.class.entity_class.represent(resource, opts.merge(@params)).as_json
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
def preload_associations(resource)
|
26
|
+
ActiveRecord::Associations::Preloader.new.preload(resource, association_array)
|
27
|
+
end
|
28
|
+
|
29
|
+
def association_array
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'grape-entity'
|
2
|
+
|
3
|
+
class ServiceEntity < Grape::Entity
|
4
|
+
|
5
|
+
# expose service additional info by default
|
6
|
+
expose :service_info, merge: true, if: :service
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def service_info
|
11
|
+
service = options[:service]
|
12
|
+
service_name = service.class.name.underscore
|
13
|
+
send(service_name) rescue nil || send(service_name.split('/').last) rescue {}
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: grape_serializer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- JiaRou Lee
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-11-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: grape-entity
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.10.2
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.10.2
|
27
|
+
description: A serializer base on grape-entity gem
|
28
|
+
email: laura34963@kdanmobile.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/grape_response.rb
|
34
|
+
- lib/grape_serializer.rb
|
35
|
+
- lib/service_entity.rb
|
36
|
+
homepage: https://github.com/kdan-mobile-software-ltd/grape_serializer
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubygems_version: 3.2.3
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: Serializer for Grape Entity
|
59
|
+
test_files: []
|