praxis 0.21 → 0.22.pre.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 +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.
|