praxis 0.21 → 0.22.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +20 -12
- data/CHANGELOG.md +24 -0
- data/CONTRIBUTING.md +4 -4
- data/README.md +11 -9
- data/lib/api_browser/app/js/directives/attribute_table.js +2 -1
- data/lib/api_browser/app/js/directives/conditional_requirements.js +13 -0
- data/lib/api_browser/app/js/directives/type_placeholder.js +10 -1
- data/lib/api_browser/app/js/factories/normalize_attributes.js +4 -2
- data/lib/api_browser/app/js/factories/template_for.js +5 -2
- data/lib/api_browser/app/js/filters/has_requirement.js +14 -0
- data/lib/api_browser/app/js/filters/tag_requirement.js +13 -0
- data/lib/api_browser/app/sass/praxis.scss +11 -0
- data/lib/api_browser/app/views/action.html +2 -2
- data/lib/api_browser/app/views/directives/attribute_description/member_options.html +2 -2
- data/lib/api_browser/app/views/directives/attribute_table.html +1 -1
- data/lib/api_browser/app/views/type.html +1 -1
- data/lib/api_browser/app/views/type/details.html +2 -2
- data/lib/api_browser/app/views/types/embedded/array.html +2 -0
- data/lib/api_browser/app/views/types/embedded/default.html +3 -1
- data/lib/api_browser/app/views/types/embedded/requirements.html +6 -0
- data/lib/api_browser/app/views/types/embedded/single_req.html +9 -0
- data/lib/api_browser/app/views/types/embedded/struct.html +14 -2
- data/lib/api_browser/app/views/types/standalone/array.html +1 -1
- data/lib/api_browser/app/views/types/standalone/struct.html +2 -1
- data/lib/api_browser/package.json +1 -1
- data/lib/praxis.rb +8 -6
- data/lib/praxis/action_definition.rb +9 -7
- data/lib/praxis/api_definition.rb +44 -27
- data/lib/praxis/api_general_info.rb +3 -2
- data/lib/praxis/application.rb +139 -20
- data/lib/praxis/bootloader.rb +2 -4
- data/lib/praxis/bootloader_stages/environment.rb +0 -13
- data/lib/praxis/controller.rb +2 -0
- data/lib/praxis/dispatcher.rb +16 -10
- data/lib/praxis/docs/generator.rb +20 -9
- data/lib/praxis/docs/link_builder.rb +1 -1
- data/lib/praxis/error_handler.rb +5 -5
- data/lib/praxis/extensions/attribute_filtering.rb +28 -0
- data/lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb +180 -0
- data/lib/praxis/extensions/attribute_filtering/filtering_params.rb +273 -0
- data/lib/praxis/extensions/attribute_filtering/query_builder.rb +39 -0
- data/lib/praxis/extensions/field_selection.rb +3 -0
- data/lib/praxis/extensions/field_selection/active_record_query_selector.rb +57 -0
- data/lib/praxis/extensions/field_selection/sequel_query_selector.rb +65 -0
- data/lib/praxis/extensions/rails_compat.rb +2 -0
- data/lib/praxis/extensions/rails_compat/request_methods.rb +19 -0
- data/lib/praxis/extensions/rendering.rb +1 -1
- data/lib/praxis/file_group.rb +1 -1
- data/lib/praxis/middleware_app.rb +26 -6
- data/lib/praxis/multipart/parser.rb +14 -2
- data/lib/praxis/multipart/part.rb +5 -3
- data/lib/praxis/plugins/praxis_mapper_plugin.rb +2 -2
- data/lib/praxis/plugins/rails_plugin.rb +104 -0
- data/lib/praxis/request.rb +8 -9
- data/lib/praxis/request_stages/response.rb +3 -2
- data/lib/praxis/request_superclassing.rb +11 -0
- data/lib/praxis/resource_definition.rb +14 -10
- data/lib/praxis/response.rb +6 -7
- data/lib/praxis/response_definition.rb +7 -5
- data/lib/praxis/response_template.rb +4 -3
- data/lib/praxis/responses/http.rb +0 -36
- data/lib/praxis/responses/internal_server_error.rb +3 -12
- data/lib/praxis/responses/multipart_ok.rb +4 -11
- data/lib/praxis/responses/validation_error.rb +1 -10
- data/lib/praxis/router.rb +3 -3
- data/lib/praxis/tasks/api_docs.rb +10 -2
- data/lib/praxis/tasks/routes.rb +1 -0
- data/lib/praxis/version.rb +1 -1
- data/praxis.gemspec +4 -5
- data/spec/functional_spec.rb +4 -6
- data/spec/praxis/action_definition_spec.rb +26 -15
- data/spec/praxis/api_definition_spec.rb +13 -8
- data/spec/praxis/api_general_info_spec.rb +3 -8
- data/spec/praxis/application_spec.rb +13 -7
- data/spec/praxis/middleware_app_spec.rb +24 -10
- data/spec/praxis/request_spec.rb +17 -7
- data/spec/praxis/request_stages/validate_spec.rb +1 -1
- data/spec/praxis/resource_definition_spec.rb +12 -10
- data/spec/praxis/response_definition_spec.rb +22 -5
- data/spec/praxis/response_spec.rb +12 -5
- data/spec/praxis/responses/internal_server_error_spec.rb +4 -7
- data/spec/praxis/responses/validation_error_spec.rb +2 -2
- data/spec/praxis/router_spec.rb +8 -4
- data/spec/spec_app/config.ru +1 -6
- data/spec/spec_helper.rb +3 -3
- data/tasks/thor/templates/generator/empty_app/Gemfile +3 -3
- metadata +36 -32
- data/.ruby-version +0 -1
- data/lib/praxis/stats.rb +0 -113
- data/spec/praxis/stats_spec.rb +0 -9
@@ -1,7 +1,24 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Praxis::ResponseDefinition do
|
4
|
-
|
4
|
+
let(:praxis_app) do
|
5
|
+
app = Praxis::Application.new(skip_registration: true)
|
6
|
+
app.versioning_scheme = [:header, :params]
|
7
|
+
app.handler 'json' , Praxis::Handlers::JSON
|
8
|
+
app.handler 'x-www-form-urlencoded', Praxis::Handlers::WWWForm
|
9
|
+
app.handler 'xml', Praxis::Handlers::XML
|
10
|
+
app.api_definition.instance_eval do |api_def|
|
11
|
+
api_def.info do
|
12
|
+
base_path "/api"
|
13
|
+
produces 'json','xml'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
app
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
subject(:response_definition) { Praxis::ResponseDefinition.new(name, praxis_app, &block) }
|
5
22
|
let(:name) { 'response_name' }
|
6
23
|
|
7
24
|
let(:block) do
|
@@ -482,7 +499,7 @@ describe Praxis::ResponseDefinition do
|
|
482
499
|
context 'with invalid definitions' do
|
483
500
|
it 'raises an error if status code is not part of the definition' do
|
484
501
|
expect do
|
485
|
-
Praxis::ResponseDefinition.new('response name') do
|
502
|
+
Praxis::ResponseDefinition.new('response name',praxis_app) do
|
486
503
|
description "testing"
|
487
504
|
end
|
488
505
|
end.to raise_error(Praxis::Exceptions::InvalidConfiguration)
|
@@ -496,7 +513,7 @@ describe Praxis::ResponseDefinition do
|
|
496
513
|
let(:parts) { nil }
|
497
514
|
|
498
515
|
let(:response) do
|
499
|
-
Praxis::ResponseDefinition.new(:custom) do
|
516
|
+
Praxis::ResponseDefinition.new(:custom, praxis_app) do
|
500
517
|
status 300
|
501
518
|
end
|
502
519
|
end
|
@@ -524,8 +541,8 @@ describe Praxis::ResponseDefinition do
|
|
524
541
|
its(['xml', :content_type]) { should eq('application/vnd.acme.instance+xml') }
|
525
542
|
|
526
543
|
it 'properly encodes the example bodies' do
|
527
|
-
json =
|
528
|
-
xml =
|
544
|
+
json = praxis_app.handlers['json'].parse(examples['json'][:body])
|
545
|
+
xml = praxis_app.handlers['xml'].parse(examples['xml'][:body])
|
529
546
|
expect(json).to eq xml
|
530
547
|
end
|
531
548
|
|
@@ -49,7 +49,14 @@ describe Praxis::Response do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
subject(:response) { Praxis::Responses::Ok.new(status: response_status, headers: response_headers) }
|
52
|
-
|
52
|
+
let(:application) do
|
53
|
+
double("PraxisApp", handlers: handlers, config: praxis_config)
|
54
|
+
end
|
55
|
+
let(:handlers) do
|
56
|
+
{'json' => Praxis::Handlers::JSON.new }
|
57
|
+
end
|
58
|
+
let(:praxis_config){ double(praxis: double("...") ) }
|
59
|
+
|
53
60
|
describe '#validate' do
|
54
61
|
before do
|
55
62
|
allow(action).to receive(:responses).and_return({response_spec.name => response_spec })
|
@@ -86,7 +93,7 @@ describe Praxis::Response do
|
|
86
93
|
before { response.body = response_body_entity }
|
87
94
|
|
88
95
|
it 'leaves well enough alone' do
|
89
|
-
response.encode!
|
96
|
+
response.encode!(handlers: handlers)
|
90
97
|
expect(response.body).to eq(response_body_entity)
|
91
98
|
end
|
92
99
|
end
|
@@ -95,7 +102,7 @@ describe Praxis::Response do
|
|
95
102
|
before { response.body = response_body_structured_data }
|
96
103
|
|
97
104
|
it 'encodes using a suitable handler' do
|
98
|
-
response.encode!
|
105
|
+
response.encode!(handlers: handlers)
|
99
106
|
expect(JSON.load(response.body)).to eq(response_body_structured_data)
|
100
107
|
end
|
101
108
|
end
|
@@ -108,7 +115,7 @@ describe Praxis::Response do
|
|
108
115
|
'Location' => '/api/resources/123' }
|
109
116
|
}
|
110
117
|
it 'still defaults to the default handler' do
|
111
|
-
response.encode!
|
118
|
+
response.encode!(handlers: handlers)
|
112
119
|
expect(JSON.load(response.body)).to eq(response_body_structured_data)
|
113
120
|
end
|
114
121
|
end
|
@@ -158,7 +165,7 @@ describe Praxis::Response do
|
|
158
165
|
response.status = 500
|
159
166
|
end
|
160
167
|
|
161
|
-
let!(:finished_response) { response.finish }
|
168
|
+
let!(:finished_response) { response.finish(application: application) }
|
162
169
|
|
163
170
|
it 'returns status, headers, body' do
|
164
171
|
expect(finished_response).to eq([response.status, response.headers, response.body])
|
@@ -8,7 +8,7 @@ describe Praxis::Responses::InternalServerError do
|
|
8
8
|
it 'always sets the json content type' do
|
9
9
|
expect(response.name).to be(:internal_server_error)
|
10
10
|
expect(response.status).to be(500)
|
11
|
-
expect(response.body).to
|
11
|
+
expect(response.body).to be_nil
|
12
12
|
expect(response.headers).to have_key('Content-Type')
|
13
13
|
expect(response.headers['Content-Type']).to eq('application/json')
|
14
14
|
expect(response.instance_variable_get(:@error)).to be(nil)
|
@@ -17,15 +17,12 @@ describe Praxis::Responses::InternalServerError do
|
|
17
17
|
|
18
18
|
|
19
19
|
context '.format!' do
|
20
|
+
let(:app){ double("PraxisApp", config: double(praxis: config)) }
|
20
21
|
let(:error) { double('error', message: 'error message', backtrace: [1, 2], cause: cause) }
|
21
22
|
|
22
23
|
let(:show_exceptions) { true }
|
23
24
|
let(:config) { double("config", show_exceptions: show_exceptions) }
|
24
25
|
|
25
|
-
before do
|
26
|
-
allow(Praxis::Application.instance.config).to receive(:praxis).and_return(config)
|
27
|
-
end
|
28
|
-
|
29
26
|
context 'with show_exceptions false' do
|
30
27
|
end
|
31
28
|
|
@@ -52,8 +49,8 @@ describe Praxis::Responses::InternalServerError do
|
|
52
49
|
|
53
50
|
subject(:response) { Praxis::Responses::InternalServerError.new(error: error) }
|
54
51
|
before do
|
55
|
-
expect(response.body).to
|
56
|
-
response.format!
|
52
|
+
expect(response.body).to be_nil
|
53
|
+
response.format!(config: app.config)
|
57
54
|
end
|
58
55
|
|
59
56
|
end
|
@@ -9,7 +9,7 @@ describe Praxis::Responses::ValidationError do
|
|
9
9
|
it 'always sets the json content type' do
|
10
10
|
expect(response.name).to be(:validation_error)
|
11
11
|
expect(response.status).to be(400)
|
12
|
-
expect(response.body).to
|
12
|
+
expect(response.body).to be_nil
|
13
13
|
expect(response.headers).to have_key('Content-Type')
|
14
14
|
expect(response.headers['Content-Type']).to eq('application/json')
|
15
15
|
expect(response.instance_variable_get(:@errors)).to be(nil)
|
@@ -24,7 +24,7 @@ describe Praxis::Responses::ValidationError do
|
|
24
24
|
let(:exception){ nil }
|
25
25
|
subject(:response) { Praxis::Responses::ValidationError.new(summary: summary, errors: errors, exception: exception) }
|
26
26
|
before do
|
27
|
-
expect(response.body).to
|
27
|
+
expect(response.body).to be_nil
|
28
28
|
end
|
29
29
|
context 'when errors' do
|
30
30
|
it 'it fills the errors key' do
|
data/spec/praxis/router_spec.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Praxis::Router do
|
4
|
+
let(:application) do
|
5
|
+
app = Praxis::Application.new(skip_registration: true)
|
6
|
+
app.versioning_scheme = [:header, :params]
|
7
|
+
app
|
8
|
+
end
|
4
9
|
describe Praxis::Router::VersionMatcher do
|
5
10
|
let(:resource_definition){ double("resource_definition", version_options: { using: [:header, :params] }) }
|
6
11
|
let(:action){ double("action", resource_definition: resource_definition ) }
|
@@ -17,7 +22,7 @@ describe Praxis::Router do
|
|
17
22
|
|
18
23
|
context '.call' do
|
19
24
|
let(:env){ {"HTTP_X_API_VERSION" => request_version } }
|
20
|
-
let(:request) {Praxis::Request.new(env)}
|
25
|
+
let(:request) {Praxis::Request.new(env,application: application)}
|
21
26
|
|
22
27
|
context 'with matching versions' do
|
23
28
|
let(:request_version) { "1.0" }
|
@@ -67,7 +72,6 @@ describe Praxis::Router do
|
|
67
72
|
end
|
68
73
|
end
|
69
74
|
|
70
|
-
let(:application) { instance_double('Praxis::Application')}
|
71
75
|
subject(:router) {Praxis::Router.new(application)}
|
72
76
|
|
73
77
|
context "attributes" do
|
@@ -104,7 +108,7 @@ describe Praxis::Router do
|
|
104
108
|
let(:request_verb) { 'POST' }
|
105
109
|
let(:request_path_info) { '/' }
|
106
110
|
let(:request_version){ nil }
|
107
|
-
let(:request) {Praxis::Request.new(env)}
|
111
|
+
let(:request) {Praxis::Request.new(env, application: application)}
|
108
112
|
let(:router_response){ 1 }
|
109
113
|
let(:router_response_for_post){ "POST result" }
|
110
114
|
let(:router_response_for_wildcard){ "* result" }
|
@@ -185,7 +189,7 @@ describe Praxis::Router do
|
|
185
189
|
end
|
186
190
|
|
187
191
|
context 'with X-Cascade disabled' do
|
188
|
-
let(:config) {
|
192
|
+
let(:config) { application.config.praxis }
|
189
193
|
before do
|
190
194
|
expect(config).to receive(:x_cascade).and_return(false)
|
191
195
|
end
|
data/spec/spec_app/config.ru
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -20,22 +20,21 @@ require 'rspec/its'
|
|
20
20
|
require 'rspec/collection_matchers'
|
21
21
|
|
22
22
|
|
23
|
-
|
24
23
|
Dir["#{File.dirname(__FILE__)}/../lib/praxis/plugins/*.rb"].each do |file|
|
25
24
|
require file
|
26
25
|
end
|
27
26
|
|
27
|
+
APP = Praxis::Application.instance
|
28
28
|
Dir["#{File.dirname(__FILE__)}/support/*.rb"].each do |file|
|
29
29
|
require file
|
30
30
|
end
|
31
31
|
|
32
|
-
|
33
32
|
RSpec.configure do |config|
|
34
33
|
config.include Rack::Test::Methods
|
35
34
|
|
36
35
|
config.before(:suite) do
|
37
36
|
Praxis::Blueprint.caching_enabled = true
|
38
|
-
|
37
|
+
APP.setup(root:'spec/spec_app')
|
39
38
|
|
40
39
|
# create the table
|
41
40
|
setup_database!
|
@@ -50,6 +49,7 @@ RSpec.configure do |config|
|
|
50
49
|
config.before(:all) do
|
51
50
|
# disable logging below warn level
|
52
51
|
Praxis::Application.instance.logger.level = 2 # warn
|
52
|
+
Thread.current[:praxis_instance] = APP
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
gem 'praxis', github: '
|
4
|
-
gem 'attributor', github: '
|
5
|
-
gem 'praxis-blueprints', github: '
|
3
|
+
gem 'praxis', github: 'praxis/praxis'
|
4
|
+
gem 'attributor', github: 'praxis/attributor'
|
5
|
+
gem 'praxis-blueprints', github: 'praxis/praxis-blueprints'
|
6
6
|
|
7
7
|
gem 'rainbows', require: false
|
8
8
|
gem 'rake'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: praxis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.22.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep M. Blanquer
|
@@ -9,36 +9,42 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-09-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '1'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '1'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: mustermann
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '0'
|
35
|
+
- - "<="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '1'
|
35
38
|
type: :runtime
|
36
39
|
prerelease: false
|
37
40
|
version_requirements: !ruby/object:Gem::Requirement
|
38
41
|
requirements:
|
39
|
-
- - "
|
42
|
+
- - ">="
|
40
43
|
- !ruby/object:Gem::Version
|
41
44
|
version: '0'
|
45
|
+
- - "<="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1'
|
42
48
|
- !ruby/object:Gem::Dependency
|
43
49
|
name: activesupport
|
44
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,34 +143,20 @@ dependencies:
|
|
137
143
|
- - "~>"
|
138
144
|
- !ruby/object:Gem::Version
|
139
145
|
version: '1.4'
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: harness
|
142
|
-
requirement: !ruby/object:Gem::Requirement
|
143
|
-
requirements:
|
144
|
-
- - "~>"
|
145
|
-
- !ruby/object:Gem::Version
|
146
|
-
version: '2'
|
147
|
-
type: :runtime
|
148
|
-
prerelease: false
|
149
|
-
version_requirements: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - "~>"
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '2'
|
154
146
|
- !ruby/object:Gem::Dependency
|
155
147
|
name: bundler
|
156
148
|
requirement: !ruby/object:Gem::Requirement
|
157
149
|
requirements:
|
158
|
-
- - "
|
150
|
+
- - ">="
|
159
151
|
- !ruby/object:Gem::Version
|
160
|
-
version: '
|
152
|
+
version: '0'
|
161
153
|
type: :development
|
162
154
|
prerelease: false
|
163
155
|
version_requirements: !ruby/object:Gem::Requirement
|
164
156
|
requirements:
|
165
|
-
- - "
|
157
|
+
- - ">="
|
166
158
|
- !ruby/object:Gem::Version
|
167
|
-
version: '
|
159
|
+
version: '0'
|
168
160
|
- !ruby/object:Gem::Dependency
|
169
161
|
name: rake
|
170
162
|
requirement: !ruby/object:Gem::Requirement
|
@@ -414,7 +406,6 @@ extra_rdoc_files: []
|
|
414
406
|
files:
|
415
407
|
- ".gitignore"
|
416
408
|
- ".rspec"
|
417
|
-
- ".ruby-version"
|
418
409
|
- ".simplecov"
|
419
410
|
- ".travis.yml"
|
420
411
|
- CHANGELOG.md
|
@@ -439,6 +430,7 @@ files:
|
|
439
430
|
- lib/api_browser/app/js/controllers/type.js
|
440
431
|
- lib/api_browser/app/js/directives/attribute_description.js
|
441
432
|
- lib/api_browser/app/js/directives/attribute_table.js
|
433
|
+
- lib/api_browser/app/js/directives/conditional_requirements.js
|
442
434
|
- lib/api_browser/app/js/directives/fixed_if_fits.js
|
443
435
|
- lib/api_browser/app/js/directives/highlight.js
|
444
436
|
- lib/api_browser/app/js/directives/menu_item.js
|
@@ -456,10 +448,12 @@ files:
|
|
456
448
|
- lib/api_browser/app/js/factories/template_for.js
|
457
449
|
- lib/api_browser/app/js/filters/attribute_name.js
|
458
450
|
- lib/api_browser/app/js/filters/friendly_json.js
|
451
|
+
- lib/api_browser/app/js/filters/has_requirement.js
|
459
452
|
- lib/api_browser/app/js/filters/header_info.js
|
460
453
|
- lib/api_browser/app/js/filters/is_empty.js
|
461
454
|
- lib/api_browser/app/js/filters/markdown.js
|
462
455
|
- lib/api_browser/app/js/filters/resource_name.js
|
456
|
+
- lib/api_browser/app/js/filters/tag_requirement.js
|
463
457
|
- lib/api_browser/app/sass/modules/_body.scss
|
464
458
|
- lib/api_browser/app/sass/modules/_cloke.scss
|
465
459
|
- lib/api_browser/app/sass/modules/_header.scss
|
@@ -489,9 +483,12 @@ files:
|
|
489
483
|
- lib/api_browser/app/views/trait.html
|
490
484
|
- lib/api_browser/app/views/type.html
|
491
485
|
- lib/api_browser/app/views/type/details.html
|
486
|
+
- lib/api_browser/app/views/types/embedded/array.html
|
492
487
|
- lib/api_browser/app/views/types/embedded/default.html
|
493
488
|
- lib/api_browser/app/views/types/embedded/field-selector.html
|
494
489
|
- lib/api_browser/app/views/types/embedded/links.html
|
490
|
+
- lib/api_browser/app/views/types/embedded/requirements.html
|
491
|
+
- lib/api_browser/app/views/types/embedded/single_req.html
|
495
492
|
- lib/api_browser/app/views/types/embedded/struct.html
|
496
493
|
- lib/api_browser/app/views/types/label/link.html
|
497
494
|
- lib/api_browser/app/views/types/label/primitive.html
|
@@ -539,10 +536,18 @@ files:
|
|
539
536
|
- lib/praxis/exceptions/invalid_trait.rb
|
540
537
|
- lib/praxis/exceptions/stage_not_found.rb
|
541
538
|
- lib/praxis/exceptions/validation.rb
|
539
|
+
- lib/praxis/extensions/attribute_filtering.rb
|
540
|
+
- lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb
|
541
|
+
- lib/praxis/extensions/attribute_filtering/filtering_params.rb
|
542
|
+
- lib/praxis/extensions/attribute_filtering/query_builder.rb
|
542
543
|
- lib/praxis/extensions/field_expansion.rb
|
543
544
|
- lib/praxis/extensions/field_selection.rb
|
545
|
+
- lib/praxis/extensions/field_selection/active_record_query_selector.rb
|
544
546
|
- lib/praxis/extensions/field_selection/field_selector.rb
|
547
|
+
- lib/praxis/extensions/field_selection/sequel_query_selector.rb
|
545
548
|
- lib/praxis/extensions/mapper_selectors.rb
|
549
|
+
- lib/praxis/extensions/rails_compat.rb
|
550
|
+
- lib/praxis/extensions/rails_compat/request_methods.rb
|
546
551
|
- lib/praxis/extensions/rendering.rb
|
547
552
|
- lib/praxis/file_group.rb
|
548
553
|
- lib/praxis/handlers/json.rb
|
@@ -560,6 +565,7 @@ files:
|
|
560
565
|
- lib/praxis/plugin.rb
|
561
566
|
- lib/praxis/plugin_concern.rb
|
562
567
|
- lib/praxis/plugins/praxis_mapper_plugin.rb
|
568
|
+
- lib/praxis/plugins/rails_plugin.rb
|
563
569
|
- lib/praxis/request.rb
|
564
570
|
- lib/praxis/request_stages/action.rb
|
565
571
|
- lib/praxis/request_stages/load_request.rb
|
@@ -568,6 +574,7 @@ files:
|
|
568
574
|
- lib/praxis/request_stages/validate.rb
|
569
575
|
- lib/praxis/request_stages/validate_params_and_headers.rb
|
570
576
|
- lib/praxis/request_stages/validate_payload.rb
|
577
|
+
- lib/praxis/request_superclassing.rb
|
571
578
|
- lib/praxis/resource_definition.rb
|
572
579
|
- lib/praxis/response.rb
|
573
580
|
- lib/praxis/response_definition.rb
|
@@ -583,7 +590,6 @@ files:
|
|
583
590
|
- lib/praxis/routing_config.rb
|
584
591
|
- lib/praxis/simple_media_type.rb
|
585
592
|
- lib/praxis/stage.rb
|
586
|
-
- lib/praxis/stats.rb
|
587
593
|
- lib/praxis/tasks.rb
|
588
594
|
- lib/praxis/tasks/api_docs.rb
|
589
595
|
- lib/praxis/tasks/console.rb
|
@@ -644,7 +650,6 @@ files:
|
|
644
650
|
- spec/praxis/router_spec.rb
|
645
651
|
- spec/praxis/routing_config_spec.rb
|
646
652
|
- spec/praxis/stage_spec.rb
|
647
|
-
- spec/praxis/stats_spec.rb
|
648
653
|
- spec/praxis/trait_spec.rb
|
649
654
|
- spec/praxis/types/fuzzy_hash_spec.rb
|
650
655
|
- spec/praxis/types/multipart_array/part_definition_spec.rb
|
@@ -711,7 +716,7 @@ files:
|
|
711
716
|
- tasks/thor/templates/generator/empty_app/docs/app.js
|
712
717
|
- tasks/thor/templates/generator/empty_app/docs/styles.scss
|
713
718
|
- tasks/thor/templates/generator/empty_app/spec/spec_helper.rb
|
714
|
-
homepage: https://github.com/
|
719
|
+
homepage: https://github.com/praxis/praxis
|
715
720
|
licenses:
|
716
721
|
- MIT
|
717
722
|
metadata: {}
|
@@ -726,12 +731,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
726
731
|
version: '2.1'
|
727
732
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
728
733
|
requirements:
|
729
|
-
- - "
|
734
|
+
- - ">"
|
730
735
|
- !ruby/object:Gem::Version
|
731
|
-
version:
|
736
|
+
version: 1.3.1
|
732
737
|
requirements: []
|
733
|
-
|
734
|
-
rubygems_version: 2.5.1
|
738
|
+
rubygems_version: 3.0.3
|
735
739
|
signing_key:
|
736
740
|
specification_version: 4
|
737
741
|
summary: Building APIs the way you want it.
|