media_types-serialization 0.8.1 → 1.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 +4 -4
- data/.github/workflows/ci.yml +10 -1
- data/.gitignore +12 -12
- data/.idea/.rakeTasks +5 -5
- data/.idea/inspectionProfiles/Project_Default.xml +5 -5
- data/.idea/runConfigurations/test.xml +19 -19
- data/CHANGELOG.md +18 -0
- data/CODE_OF_CONDUCT.md +74 -74
- data/Gemfile +4 -4
- data/Gemfile.lock +58 -61
- data/LICENSE.txt +21 -21
- data/README.md +640 -173
- data/Rakefile +10 -10
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/lib/media_types/problem.rb +64 -0
- data/lib/media_types/serialization.rb +431 -172
- data/lib/media_types/serialization/base.rb +111 -91
- data/lib/media_types/serialization/error.rb +178 -0
- data/lib/media_types/serialization/fake_validator.rb +52 -0
- data/lib/media_types/serialization/serialization_dsl.rb +117 -0
- data/lib/media_types/serialization/serialization_registration.rb +235 -0
- data/lib/media_types/serialization/serializers/api_viewer.rb +133 -0
- data/lib/media_types/serialization/serializers/common_css.rb +168 -0
- data/lib/media_types/serialization/serializers/endpoint_description_serializer.rb +80 -0
- data/lib/media_types/serialization/serializers/fallback_not_acceptable_serializer.rb +85 -0
- data/lib/media_types/serialization/serializers/fallback_unsupported_media_type_serializer.rb +58 -0
- data/lib/media_types/serialization/serializers/input_validation_error_serializer.rb +89 -0
- data/lib/media_types/serialization/serializers/problem_serializer.rb +87 -0
- data/lib/media_types/serialization/version.rb +1 -1
- data/media_types-serialization.gemspec +50 -50
- metadata +40 -43
- data/.travis.yml +0 -17
- data/lib/generators/media_types/serialization/api_viewer/api_viewer_generator.rb +0 -25
- data/lib/generators/media_types/serialization/api_viewer/templates/api_viewer.html.erb +0 -98
- data/lib/generators/media_types/serialization/api_viewer/templates/initializer.rb +0 -33
- data/lib/generators/media_types/serialization/api_viewer/templates/template_controller.rb +0 -23
- data/lib/media_types/serialization/media_type/register.rb +0 -4
- data/lib/media_types/serialization/migrations_command.rb +0 -38
- data/lib/media_types/serialization/migrations_support.rb +0 -50
- data/lib/media_types/serialization/mime_type_support.rb +0 -64
- data/lib/media_types/serialization/no_content_type_given.rb +0 -11
- data/lib/media_types/serialization/no_media_type_serializers.rb +0 -11
- data/lib/media_types/serialization/no_serializer_for_content_type.rb +0 -15
- data/lib/media_types/serialization/renderer.rb +0 -41
- data/lib/media_types/serialization/renderer/register.rb +0 -4
- data/lib/media_types/serialization/wrapper.rb +0 -13
- data/lib/media_types/serialization/wrapper/html_wrapper.rb +0 -45
- data/lib/media_types/serialization/wrapper/media_collection_wrapper.rb +0 -61
- data/lib/media_types/serialization/wrapper/media_index_wrapper.rb +0 -61
- data/lib/media_types/serialization/wrapper/media_object_wrapper.rb +0 -55
- data/lib/media_types/serialization/wrapper_support.rb +0 -38
@@ -1,55 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'delegate'
|
4
|
-
|
5
|
-
require 'active_support/core_ext/string/inflections'
|
6
|
-
|
7
|
-
module MediaTypes
|
8
|
-
module Serialization
|
9
|
-
module Wrapper
|
10
|
-
class MediaObjectWrapper < SimpleDelegator
|
11
|
-
|
12
|
-
delegate :to_json, to: :to_hash
|
13
|
-
delegate :class, :set, :current_view, :current_media_type, to: :__getobj__
|
14
|
-
|
15
|
-
mattr_accessor :auto_unwrap_klazzes
|
16
|
-
|
17
|
-
self.auto_unwrap_klazzes = [Array, defined?(ActiveRecord) ? ActiveRecord::Relation : nil].compact
|
18
|
-
|
19
|
-
def initialize(serializer)
|
20
|
-
__setobj__ serializer
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_hash
|
24
|
-
set unwrapped_serializable
|
25
|
-
{ root_key => serializable && super || nil }
|
26
|
-
end
|
27
|
-
|
28
|
-
alias to_h to_hash
|
29
|
-
|
30
|
-
def header_links(view: current_view)
|
31
|
-
__getobj__.send(:header_links, view: view)
|
32
|
-
end
|
33
|
-
|
34
|
-
def inspect
|
35
|
-
"#{__getobj__.inspect} (wrapped by MediaObjectWrapper #{self.object_id})"
|
36
|
-
end
|
37
|
-
|
38
|
-
protected
|
39
|
-
|
40
|
-
def unwrapped_serializable
|
41
|
-
return __getobj__.unwrapped_serializable if __getobj__.respond_to?(:unwrapped_serializable)
|
42
|
-
auto_unwrap_klazzes.any? { |klazz| serializable.is_a?(klazz) } ? serializable.first : serializable
|
43
|
-
end
|
44
|
-
|
45
|
-
def extract_links(view: current_view)
|
46
|
-
__getobj__.send(:extract_set_links, view: view)
|
47
|
-
end
|
48
|
-
|
49
|
-
def root_key(view: current_view)
|
50
|
-
__getobj__.class.root_key(view: view)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
require 'media_types/views'
|
4
|
-
require 'media_types/serialization/wrapper'
|
5
|
-
|
6
|
-
module MediaTypes
|
7
|
-
module Serialization
|
8
|
-
module WrapperSupport
|
9
|
-
extend ActiveSupport::Concern
|
10
|
-
|
11
|
-
AUTO_WRAPPER_MAPPING = {
|
12
|
-
::MediaTypes::INDEX_VIEW => ::MediaTypes::Serialization::Wrapper::MediaIndexWrapper,
|
13
|
-
::MediaTypes::COLLECTION_VIEW => ::MediaTypes::Serialization::Wrapper::MediaCollectionWrapper,
|
14
|
-
::MediaTypes::CREATE_VIEW => ::MediaTypes::Serialization::Wrapper::MediaObjectWrapper,
|
15
|
-
nil => ::MediaTypes::Serialization::Wrapper::MediaObjectWrapper
|
16
|
-
}.freeze
|
17
|
-
|
18
|
-
DEFAULT_WRAPPER = ::MediaTypes::Serialization::Wrapper::MediaObjectWrapper
|
19
|
-
|
20
|
-
class_methods do
|
21
|
-
def wrap(serializer, view: nil)
|
22
|
-
wrapper = AUTO_WRAPPER_MAPPING.fetch(String(view)) { DEFAULT_WRAPPER }
|
23
|
-
wrapper.new(serializer)
|
24
|
-
end
|
25
|
-
|
26
|
-
def root_key(view:)
|
27
|
-
chomped = name.demodulize.chomp(::MediaTypes::Serialization.common_suffix || 'Serializer')
|
28
|
-
base = (chomped.presence || parent.name.demodulize).underscore
|
29
|
-
collection_view?(view) ? base.pluralize : base.singularize
|
30
|
-
end
|
31
|
-
|
32
|
-
def collection_view?(view)
|
33
|
-
view == ::MediaTypes::INDEX_VIEW || view == ::MediaTypes::COLLECTION_VIEW
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|