media_types 0.5.5 → 0.6.0
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/CHANGELOG.md +8 -0
- data/Gemfile.lock +62 -1
- data/README.md +37 -32
- data/lib/media_types.rb +3 -23
- data/lib/media_types/dsl.rb +7 -0
- data/lib/media_types/integrations.rb +32 -0
- data/lib/media_types/integrations/actionpack.rb +21 -0
- data/lib/media_types/integrations/http.rb +47 -0
- data/lib/media_types/scheme.rb +3 -2
- data/lib/media_types/scheme/rules.rb +2 -0
- data/lib/media_types/version.rb +1 -1
- data/lib/media_types/views.rb +12 -0
- data/media_types.gemspec +3 -0
- metadata +48 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51e9f9e92cf850d365ca58a68a04f6791b095c89
|
4
|
+
data.tar.gz: 9669e70024f81a716c39e8a494e1b653db29d761
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6580805136858569152b54e947a464791e67cb398c151f57fe3200fcc1274ab2305fddafe18c958c038c66bbd0667565870ca89e7d34f3a73b11ddbc15bcfdd0
|
7
|
+
data.tar.gz: 60606b31427128bbc4a5bdd13068e7f5d2af90db2d698f86d618acce8ca31989283112dfd08daae7d1cf6012635234745a97f0127e26a21157c79727c1f09565
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# 0.6.0
|
2
|
+
|
3
|
+
- Change default expected type for `attribute` to Object
|
4
|
+
- Remove default `actionpack` calls for `.register`
|
5
|
+
- Add integration for registering with `actionpack` (rails)
|
6
|
+
- Add integration for registering with `http` (http.rb)
|
7
|
+
- Fix stack overflow for cyclic schema
|
8
|
+
|
1
9
|
# 0.5.5
|
2
10
|
|
3
11
|
- Fix an issue with `attribute(optional:, &block)` not passing `optional:` to the created `collection`.
|
data/Gemfile.lock
CHANGED
@@ -1,16 +1,56 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
media_types (0.
|
4
|
+
media_types (0.6.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
actionpack (5.2.1)
|
10
|
+
actionview (= 5.2.1)
|
11
|
+
activesupport (= 5.2.1)
|
12
|
+
rack (~> 2.0)
|
13
|
+
rack-test (>= 0.6.3)
|
14
|
+
rails-dom-testing (~> 2.0)
|
15
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
16
|
+
actionview (5.2.1)
|
17
|
+
activesupport (= 5.2.1)
|
18
|
+
builder (~> 3.1)
|
19
|
+
erubi (~> 1.4)
|
20
|
+
rails-dom-testing (~> 2.0)
|
21
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
22
|
+
activesupport (5.2.1)
|
23
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
24
|
+
i18n (>= 0.7, < 2)
|
25
|
+
minitest (~> 5.1)
|
26
|
+
tzinfo (~> 1.1)
|
27
|
+
addressable (2.5.2)
|
28
|
+
public_suffix (>= 2.0.2, < 4.0)
|
9
29
|
ansi (1.5.0)
|
10
30
|
awesome_print (1.8.0)
|
11
31
|
builder (3.2.3)
|
32
|
+
concurrent-ruby (1.0.5)
|
33
|
+
crass (1.0.4)
|
12
34
|
docile (1.3.1)
|
35
|
+
domain_name (0.5.20180417)
|
36
|
+
unf (>= 0.0.5, < 1.0.0)
|
37
|
+
erubi (1.7.1)
|
38
|
+
http (3.3.0)
|
39
|
+
addressable (~> 2.3)
|
40
|
+
http-cookie (~> 1.0)
|
41
|
+
http-form_data (~> 2.0)
|
42
|
+
http_parser.rb (~> 0.6.0)
|
43
|
+
http-cookie (1.0.3)
|
44
|
+
domain_name (~> 0.5)
|
45
|
+
http-form_data (2.1.1)
|
46
|
+
http_parser.rb (0.6.0)
|
47
|
+
i18n (1.1.0)
|
48
|
+
concurrent-ruby (~> 1.0)
|
13
49
|
json (2.1.0)
|
50
|
+
loofah (2.2.2)
|
51
|
+
crass (~> 1.0.2)
|
52
|
+
nokogiri (>= 1.5.9)
|
53
|
+
mini_portile2 (2.3.0)
|
14
54
|
minitest (5.11.3)
|
15
55
|
minitest-ci (3.4.0)
|
16
56
|
minitest (>= 5.0.6)
|
@@ -19,6 +59,18 @@ GEM
|
|
19
59
|
builder
|
20
60
|
minitest (>= 5.0)
|
21
61
|
ruby-progressbar
|
62
|
+
nokogiri (1.8.4-x64-mingw32)
|
63
|
+
mini_portile2 (~> 2.3.0)
|
64
|
+
oj (3.6.11)
|
65
|
+
public_suffix (3.0.3)
|
66
|
+
rack (2.0.5)
|
67
|
+
rack-test (1.1.0)
|
68
|
+
rack (>= 1.0, < 3)
|
69
|
+
rails-dom-testing (2.0.3)
|
70
|
+
activesupport (>= 4.2.0)
|
71
|
+
nokogiri (>= 1.6)
|
72
|
+
rails-html-sanitizer (1.0.4)
|
73
|
+
loofah (~> 2.2, >= 2.2.2)
|
22
74
|
rake (10.5.0)
|
23
75
|
ruby-progressbar (1.10.0)
|
24
76
|
simplecov (0.16.1)
|
@@ -26,17 +78,26 @@ GEM
|
|
26
78
|
json (>= 1.8, < 3)
|
27
79
|
simplecov-html (~> 0.10.0)
|
28
80
|
simplecov-html (0.10.2)
|
81
|
+
thread_safe (0.3.6)
|
82
|
+
tzinfo (1.2.5)
|
83
|
+
thread_safe (~> 0.1)
|
84
|
+
unf (0.1.4)
|
85
|
+
unf_ext
|
86
|
+
unf_ext (0.0.7.5-x64-mingw32)
|
29
87
|
|
30
88
|
PLATFORMS
|
31
89
|
x64-mingw32
|
32
90
|
|
33
91
|
DEPENDENCIES
|
92
|
+
actionpack
|
34
93
|
awesome_print
|
35
94
|
bundler (~> 1.16)
|
95
|
+
http
|
36
96
|
media_types!
|
37
97
|
minitest (~> 5.0)
|
38
98
|
minitest-ci
|
39
99
|
minitest-reporters
|
100
|
+
oj
|
40
101
|
rake (~> 10.0)
|
41
102
|
simplecov
|
42
103
|
|
data/README.md
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
[](http://opensource.org/licenses/MIT)
|
5
5
|
[](https://codeclimate.com/github/SleeplessByte/media-types-ruby/maintainability)
|
6
6
|
|
7
|
+
Media Types based on scheme, with versioning, views, suffixes and validations. Integrations available for [Rails](https://github.com/rails/rails) / ActionPack and [http.rb](https://github.com/httprb/http).
|
8
|
+
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
@@ -25,8 +27,7 @@ Or install it yourself as:
|
|
25
27
|
By default there are no media types registered or defined, except for an abstract base type.
|
26
28
|
|
27
29
|
## Definition
|
28
|
-
You can define media types by inheriting from this base type, or create your own base type with a class method
|
29
|
-
`.base_format` that is used to create the final media type string by injecting formatted parameters:
|
30
|
+
You can define media types by inheriting from this base type, or create your own base type with a class method `.base_format` that is used to create the final media type string by injecting formatted parameters:
|
30
31
|
|
31
32
|
- `%<type>s`: the type `media_type` received
|
32
33
|
- `%<version>s`: the version, defaults to `:current_version`
|
@@ -104,7 +105,7 @@ Adds an attribute to the schema, if a +block+ is given, uses that to test agains
|
|
104
105
|
|-------|------|-------------|
|
105
106
|
| key | `Symbol` | the attribute name |
|
106
107
|
| opts | `Hash` | options to pass to `Scheme` or `Attribute` |
|
107
|
-
| type | `Class`, `===`, Scheme | The type of the value, can be anything that responds to `===`, or scheme to use if no `&block` is given. Defaults to `
|
108
|
+
| type | `Class`, `===`, Scheme | The type of the value, can be anything that responds to `===`, or scheme to use if no `&block` is given. Defaults to `Object` without a `&block` and to Hash with a `&block`. |
|
108
109
|
| optional: | `TrueClass`, `FalseClass` | if true, key may be absent, defaults to `false` |
|
109
110
|
| &block | `Block` | defines the scheme of the value of this attribute |
|
110
111
|
|
@@ -261,23 +262,6 @@ MyMedia.valid?({ _links: { self: { href: 'https://example.org/s' }, image: { hre
|
|
261
262
|
# => true
|
262
263
|
```
|
263
264
|
|
264
|
-
|
265
|
-
#### Link with extra attributes
|
266
|
-
```Ruby
|
267
|
-
class MyMedia
|
268
|
-
include MediaTypes::Dsl
|
269
|
-
|
270
|
-
validations do
|
271
|
-
link :image do
|
272
|
-
attribute :templated, TrueClass
|
273
|
-
end
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
|
-
MyMedia.valid?({ _links: { self: { href: 'https://example.org/s' }, image: { href: 'https://image.org/i' }} })
|
278
|
-
# => true
|
279
|
-
```
|
280
|
-
|
281
265
|
#### Link with extra attributes
|
282
266
|
```Ruby
|
283
267
|
class MyMedia
|
@@ -351,27 +335,48 @@ Venue.mime_type.view('active').to_s
|
|
351
335
|
# => "application/vnd.mydomain.venue.v2.active+json"
|
352
336
|
```
|
353
337
|
|
354
|
-
##
|
355
|
-
|
356
|
-
|
357
|
-
|
338
|
+
## Integrations
|
339
|
+
The integrations are not loaded by default, so you need to require them:
|
340
|
+
```ruby
|
341
|
+
# For Rails / ActionPack
|
342
|
+
require 'media_types/integrations/actionpack'
|
343
|
+
|
344
|
+
# For HTTP.rb
|
345
|
+
require 'media_types/integrations/http'
|
346
|
+
```
|
347
|
+
|
348
|
+
Define a `registrations` block on your media type, indicating the symbol for the base type (`registrations :symbol do`) and inside use the registrations dsl to define which media types to register. `versions array_of_numbers` determines which versions, `suffix name` adds a suffix, `type_alias name` adds an alias and `view name, symbol` adds a view.
|
358
349
|
|
359
|
-
As long as `action_dispatch` is available, you can register the mime type with `action_dispatch/http/mime_type`:
|
360
350
|
```Ruby
|
361
351
|
Venue.register
|
362
|
-
# => Mime type is now available using the symbol, or lookup the actual mimetype
|
363
352
|
```
|
364
353
|
|
365
|
-
|
366
|
-
(by default `<type>_v<version>_<suffix>`) can now be used in your `format` blocks, or as extension in the url.
|
354
|
+
### Rails
|
355
|
+
Load the `actionpack` integration and call `.register` on all the media types you want to be available in Rails. You can do this in the `mime_types` initializer, or anywhere before your controllers are instantiated. Yes, the symbol (by default `<type>_v<version>_<suffix>`) can now be used in your `format` blocks, or as extension in the url.
|
356
|
+
|
357
|
+
Rails only has a default serializer for `application/json`, and content with your `+json` media types (or different once) will not be deserialized by default. A way to overcome this is to set the JSON parameter parser for all new symbols. `.register` gives you back an array of `Registerable` objects that responds to `#to_sym` to get that symbol.
|
358
|
+
|
359
|
+
```ruby
|
360
|
+
symbols = Venue.register.map(&:to_sym)
|
361
|
+
|
362
|
+
original_parsers = ActionDispatch::Request.parameter_parsers
|
363
|
+
new_parser = original_parsers[Mime[:json].symbol]
|
364
|
+
new_parsers = original_parsers.merge(Hash[*symbols.map { |s| [s, new_parser] }])
|
365
|
+
ActionDispatch::Request.parameter_parsers = new_parsers
|
366
|
+
```
|
367
|
+
|
368
|
+
If you want to validate the content-type and not have your errors be `Rack::Error` but be handled by your controllers, leave this out and add a `before_action` to your controller that deserializes + validates for you.
|
369
|
+
|
370
|
+
### HTTP.rb
|
371
|
+
Load the `http` integration and call `.register` on all media types you want to be able to serialize and deserialize. The media type validations will run both before serialization and after deserialization.
|
372
|
+
|
373
|
+
Currently uses `oj` under the hood and this can not be changed.
|
367
374
|
|
368
375
|
## Development
|
369
376
|
|
370
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can
|
371
|
-
also run `bin/console` for an interactive prompt that will allow you to experiment.
|
377
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
372
378
|
|
373
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the
|
374
|
-
version number in `version.rb`, call `bundle exec rake release` to create a new git tag, push git commits and tags, and
|
379
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, call `bundle exec rake release` to create a new git tag, push git commits and tags, and
|
375
380
|
push the `.gem` file to rubygems.org.
|
376
381
|
|
377
382
|
## Contributing
|
data/lib/media_types.rb
CHANGED
@@ -8,30 +8,10 @@ require 'media_types/object'
|
|
8
8
|
require 'media_types/scheme'
|
9
9
|
require 'media_types/dsl'
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
COLLECTION_VIEW = 'collection'
|
14
|
-
|
15
|
-
# Shortcut used by #index to #view('index')
|
16
|
-
INDEX_VIEW = 'index'
|
17
|
-
|
18
|
-
# Shortcut used by #create to #view('create')
|
19
|
-
CREATE_VIEW = 'create'
|
20
|
-
|
21
|
-
module_function
|
11
|
+
require 'media_types/views'
|
12
|
+
require 'media_types/integrations'
|
22
13
|
|
23
|
-
|
24
|
-
# Called when Registerar#register is called
|
25
|
-
# @param [Registerable] registerable
|
26
|
-
def register(registerable)
|
27
|
-
require 'action_dispatch/http/mime_type'
|
28
|
-
|
29
|
-
mime_type = registerable.to_s
|
30
|
-
symbol = registerable.to_sym
|
31
|
-
synonyms = registerable.aliases
|
32
|
-
|
33
|
-
Mime::Type.register(mime_type, symbol, synonyms)
|
34
|
-
end
|
14
|
+
module MediaTypes
|
35
15
|
end
|
36
16
|
|
37
17
|
|
data/lib/media_types/dsl.rb
CHANGED
@@ -59,21 +59,28 @@ module MediaTypes
|
|
59
59
|
.version(defaults.fetch(:version) { nil })
|
60
60
|
.suffix(defaults.fetch(:suffix) { nil })
|
61
61
|
.view(defaults.fetch(:view) { nil })
|
62
|
+
self
|
62
63
|
end
|
63
64
|
|
64
65
|
def defaults(&block)
|
65
66
|
return media_type_constructable unless block_given?
|
66
67
|
self.media_type_constructable = Defaults.new(to_constructable, &block).to_constructable
|
68
|
+
|
69
|
+
self
|
67
70
|
end
|
68
71
|
|
69
72
|
def registrations(symbol = nil, &block)
|
70
73
|
return media_type_registrar unless block_given?
|
71
74
|
self.media_type_registrar = Registrar.new(self, symbol: symbol, &block)
|
75
|
+
|
76
|
+
self
|
72
77
|
end
|
73
78
|
|
74
79
|
def validations(&block)
|
75
80
|
return media_type_validations unless block_given?
|
76
81
|
self.media_type_validations = Validations.new(to_constructable, &block)
|
82
|
+
|
83
|
+
self
|
77
84
|
end
|
78
85
|
end
|
79
86
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MediaTypes
|
4
|
+
INTEGRATION_METHODS = %i[register].freeze
|
5
|
+
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def integrate(integration)
|
9
|
+
INTEGRATION_METHODS.each do |method|
|
10
|
+
next unless integration.respond_to?(method)
|
11
|
+
self.integrations = (integrations || {}).tap do |x|
|
12
|
+
x.merge!(method => (x[method] || []).concat([integration]))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# @!method register(registerable)
|
18
|
+
INTEGRATION_METHODS.each do |method|
|
19
|
+
define_singleton_method method do |*args, &block|
|
20
|
+
(integrations || {}).fetch(method) { [] }.each do |integration|
|
21
|
+
integration.send(method, *args, &block)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
class << self
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_accessor :integrations
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'action_dispatch/http/mime_type'
|
4
|
+
|
5
|
+
module MediaTypes
|
6
|
+
module ActionPackIntegration
|
7
|
+
|
8
|
+
module_function
|
9
|
+
|
10
|
+
def register(registerable)
|
11
|
+
mime_type = registerable.to_s
|
12
|
+
symbol = registerable.to_sym
|
13
|
+
synonyms = registerable.aliases
|
14
|
+
|
15
|
+
Mime::Type.register(mime_type, symbol, synonyms)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
integrate ActionPackIntegration
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'http/mime_type'
|
4
|
+
require 'oj'
|
5
|
+
|
6
|
+
module MediaTypes
|
7
|
+
module HttpIntegration
|
8
|
+
|
9
|
+
module_function
|
10
|
+
|
11
|
+
def register(registerable)
|
12
|
+
mime_type = registerable.to_s
|
13
|
+
|
14
|
+
HTTP::MimeType.register_adapter mime_type, AdapterFor(registerable.media_type)
|
15
|
+
HTTP::MimeType.register_alias mime_type, registerable.to_sym
|
16
|
+
|
17
|
+
registerable.aliases.each do |alias_mime_type|
|
18
|
+
HTTP::MimeType.register_alias mime_type, alias_mime_type
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
private
|
24
|
+
|
25
|
+
# noinspection RubyInstanceMethodNamingConvention
|
26
|
+
def AdapterFor(media_type) # rubocop:disable Naming/MethodName
|
27
|
+
adapter_name = media_type.split(%r{[./_+-]}).map(&:capitalize).join('').tr('^A-z0-9', '_')
|
28
|
+
|
29
|
+
adapter = MediaTypes::HttpIntegration.const_set(adapter_name, Module.new)
|
30
|
+
adapter.define_singleton_method('encode') do |obj|
|
31
|
+
media_type.validate!(obj)
|
32
|
+
Oj.dump(obj, mode: :compat)
|
33
|
+
end
|
34
|
+
|
35
|
+
adapter.define_singleton_method('decode') do |str|
|
36
|
+
Oj.load(str, mode: :strict).tap do |result|
|
37
|
+
media_type.validate!(result)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
adapter
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
integrate HttpIntegration
|
47
|
+
end
|
data/lib/media_types/scheme.rb
CHANGED
@@ -115,7 +115,8 @@ module MediaTypes
|
|
115
115
|
# @param key [Symbol] the attribute name
|
116
116
|
# @param opts [Hash] options to pass to Scheme or Attribute
|
117
117
|
# @param type [Class, #===, Scheme] The type of the value, can be anything that responds to #===,
|
118
|
-
# or scheme to use if no +&block+ is given. Defaults to
|
118
|
+
# or scheme to use if no +&block+ is given. Defaults to Object without a +&block+ and to Hash with a +&block+.
|
119
|
+
# or scheme to use if no +&block+ is given. Defaults to Object without a +&block+ and to Hash with a +&block+.
|
119
120
|
#
|
120
121
|
# @see Scheme::Attribute
|
121
122
|
# @see Scheme
|
@@ -148,7 +149,7 @@ module MediaTypes
|
|
148
149
|
# MyMedia.valid?({ foo: { bar: 'my-string' }})
|
149
150
|
# # => true
|
150
151
|
#
|
151
|
-
def attribute(key, type =
|
152
|
+
def attribute(key, type = ::Object, optional: false, **opts, &block)
|
152
153
|
if block_given?
|
153
154
|
return collection(key, expected_type: ::Hash, optional: optional, **opts, &block)
|
154
155
|
end
|
@@ -88,6 +88,8 @@ module MediaTypes
|
|
88
88
|
|
89
89
|
def inspect(indent = 0)
|
90
90
|
prefix = ' ' * indent
|
91
|
+
return "#{prefix}[Error]Depth limit reached[/Error]" if indent > 5_000
|
92
|
+
|
91
93
|
[
|
92
94
|
"#{prefix}[Rules n=#{keys.length} optional=#{optional_keys.length}]",
|
93
95
|
"#{prefix} #{inspect_format_attribute(indent, '*', default)}",
|
data/lib/media_types/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MediaTypes
|
4
|
+
# Shortcut used by #collection to #view('collection')
|
5
|
+
COLLECTION_VIEW = 'collection'
|
6
|
+
|
7
|
+
# Shortcut used by #index to #view('index')
|
8
|
+
INDEX_VIEW = 'index'
|
9
|
+
|
10
|
+
# Shortcut used by #create to #view('create')
|
11
|
+
CREATE_VIEW = 'create'
|
12
|
+
end
|
data/media_types.gemspec
CHANGED
@@ -23,11 +23,14 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
|
+
spec.add_development_dependency 'actionpack'
|
26
27
|
spec.add_development_dependency 'awesome_print'
|
27
28
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
29
|
+
spec.add_development_dependency 'http'
|
28
30
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
29
31
|
spec.add_development_dependency 'minitest-ci'
|
30
32
|
spec.add_development_dependency 'minitest-reporters'
|
33
|
+
spec.add_development_dependency 'oj'
|
31
34
|
spec.add_development_dependency 'rake', '~> 10.0'
|
32
35
|
spec.add_development_dependency 'simplecov'
|
33
36
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: media_types
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derk-Jan Karrenbeld
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: actionpack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: awesome_print
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +52,20 @@ dependencies:
|
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '1.16'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: http
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: minitest
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +108,20 @@ dependencies:
|
|
80
108
|
- - ">="
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: oj
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: rake
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,6 +174,9 @@ files:
|
|
132
174
|
- lib/media_types/dsl.rb
|
133
175
|
- lib/media_types/formatter.rb
|
134
176
|
- lib/media_types/hash.rb
|
177
|
+
- lib/media_types/integrations.rb
|
178
|
+
- lib/media_types/integrations/actionpack.rb
|
179
|
+
- lib/media_types/integrations/http.rb
|
135
180
|
- lib/media_types/minitest/assert_media_type_format.rb
|
136
181
|
- lib/media_types/minitest/assert_media_types_registered.rb
|
137
182
|
- lib/media_types/object.rb
|
@@ -154,6 +199,7 @@ files:
|
|
154
199
|
- lib/media_types/scheme/validation_options.rb
|
155
200
|
- lib/media_types/validations.rb
|
156
201
|
- lib/media_types/version.rb
|
202
|
+
- lib/media_types/views.rb
|
157
203
|
- media_types.gemspec
|
158
204
|
homepage: https://github.com/SleeplessByte/media-types-ruby
|
159
205
|
licenses: []
|