Class: JSONAPI::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/jsonapi/configuration.rb', line 29

def initialize  #:underscored_key, :camelized_key, :dasherized_key, or custom

  self.json_key_format = :dasherized_key

  #:underscored_route, :camelized_route, :dasherized_route, or custom
  self.route_format = :dasherized_route

  #:integer, :uuid, :string, or custom (provide a proc)
  self.resource_key_type = :integer

  # optional request features
  self.allow_include = true
  self.allow_sort = true
  self.allow_filter = true

  self.raise_if_parameters_not_allowed = true

  # :none, :offset, :paged, or a custom paginator name
  self.default_paginator = :none

  # Output pagination links at top level
  self.top_level_links_include_pagination = true

  self.default_page_size = 10
  self.maximum_page_size = 20

  # Metadata
  # Output record count in top level meta for find operation
  self.top_level_meta_include_record_count = false
  self.top_level_meta_record_count_key = :record_count

  self.top_level_meta_include_page_count = false
  self.top_level_meta_page_count_key = :page_count

  self.use_text_errors = false

  # List of classes that should not be rescued by the operations processor.
  # For example, if you use Pundit for authorization, you might
  # raise a Pundit::NotAuthorizedError at some point during operations
  # processing. If you want to use Rails' `rescue_from` macro to
  # catch this error and render a 403 status code, you should add
  # the `Pundit::NotAuthorizedError` to the `exception_class_whitelist`.
  self.exception_class_whitelist = []

  # Resource Linkage
  # Controls the serialization of resource linkage for non compound documents
  # NOTE: always_include_to_many_linkage_data is not currently implemented
  self.always_include_to_one_linkage_data = false
  self.always_include_to_many_linkage_data = false

  # The default Operation Processor to use if one is not defined specifically
  # for a Resource.
  self.default_processor_klass = JSONAPI::Processor

  # Formatter Caching
  # Set to false to disable caching of string operations on keys and links.
  self.cache_formatters = true
end

Instance Attribute Details

#allow_filterObject

Returns the value of attribute allow_filter


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def allow_filter
  @allow_filter
end

#allow_includeObject

Returns the value of attribute allow_include


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def allow_include
  @allow_include
end

#allow_sortObject

Returns the value of attribute allow_sort


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def allow_sort
  @allow_sort
end

#always_include_to_many_linkage_dataObject

Returns the value of attribute always_include_to_many_linkage_data


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def always_include_to_many_linkage_data
  @always_include_to_many_linkage_data
end

#always_include_to_one_linkage_dataObject

Returns the value of attribute always_include_to_one_linkage_data


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def always_include_to_one_linkage_data
  @always_include_to_one_linkage_data
end

#cache_formattersObject

Returns the value of attribute cache_formatters


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def cache_formatters
  @cache_formatters
end

#default_page_sizeObject

Returns the value of attribute default_page_size


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def default_page_size
  @default_page_size
end

#default_paginatorObject

Returns the value of attribute default_paginator


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def default_paginator
  @default_paginator
end

#default_processor_klassObject

Returns the value of attribute default_processor_klass


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def default_processor_klass
  @default_processor_klass
end

#exception_class_whitelistObject

Returns the value of attribute exception_class_whitelist


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def exception_class_whitelist
  @exception_class_whitelist
end

#json_key_formatObject

Returns the value of attribute json_key_format


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def json_key_format
  @json_key_format
end

#maximum_page_sizeObject

Returns the value of attribute maximum_page_size


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def maximum_page_size
  @maximum_page_size
end

#raise_if_parameters_not_allowedObject

Returns the value of attribute raise_if_parameters_not_allowed


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def raise_if_parameters_not_allowed
  @raise_if_parameters_not_allowed
end

#resource_key_typeObject

Returns the value of attribute resource_key_type


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def resource_key_type
  @resource_key_type
end

#route_formatObject

Returns the value of attribute route_format


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def route_format
  @route_format
end

Returns the value of attribute top_level_links_include_pagination


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def top_level_links_include_pagination
  @top_level_links_include_pagination
end

#top_level_meta_include_page_countObject

Returns the value of attribute top_level_meta_include_page_count


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def top_level_meta_include_page_count
  @top_level_meta_include_page_count
end

#top_level_meta_include_record_countObject

Returns the value of attribute top_level_meta_include_record_count


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def top_level_meta_include_record_count
  @top_level_meta_include_record_count
end

#top_level_meta_page_count_keyObject

Returns the value of attribute top_level_meta_page_count_key


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def top_level_meta_page_count_key
  @top_level_meta_page_count_key
end

#top_level_meta_record_count_keyObject

Returns the value of attribute top_level_meta_record_count_key


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def top_level_meta_record_count_key
  @top_level_meta_record_count_key
end

#use_text_errorsObject

Returns the value of attribute use_text_errors


7
8
9
# File 'lib/jsonapi/configuration.rb', line 7

def use_text_errors
  @use_text_errors
end

Instance Method Details

#exception_class_whitelisted?(e) ⇒ Boolean

Returns:

  • (Boolean)

147
148
149
# File 'lib/jsonapi/configuration.rb', line 147

def exception_class_whitelisted?(e)
  @exception_class_whitelist.flatten.any? { |k| e.class.ancestors.include?(k) }
end

#key_formatterObject


113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/jsonapi/configuration.rb', line 113

def key_formatter
  if self.cache_formatters
    formatter = @key_formatter_tlv.value
    return formatter if formatter
  end

  formatter = JSONAPI::Formatter.formatter_for(self.json_key_format)

  if self.cache_formatters
    formatter = @key_formatter_tlv.value = formatter.cached
  end

  return formatter
end

#route_formatterObject


132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/jsonapi/configuration.rb', line 132

def route_formatter
  if self.cache_formatters
    formatter = @route_formatter_tlv.value
    return formatter if formatter
  end

  formatter = JSONAPI::Formatter.formatter_for(self.route_format)

  if self.cache_formatters
    formatter = @route_formatter_tlv.value = formatter.cached
  end

  return formatter
end