praxis 2.0.pre.9 → 2.0.pre.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +11 -0
- data/TODO.md +1 -4
- data/bin/praxis +11 -13
- data/lib/praxis.rb +10 -3
- data/lib/praxis/action_definition.rb +15 -13
- data/lib/praxis/action_definition/headers_dsl_compiler.rb +0 -7
- data/lib/praxis/api_general_info.rb +1 -1
- data/lib/praxis/application.rb +6 -2
- data/lib/praxis/blueprint.rb +357 -0
- data/lib/praxis/bootloader.rb +9 -3
- data/lib/praxis/bootloader_stages/environment.rb +15 -13
- data/lib/praxis/collection.rb +1 -11
- data/lib/praxis/config_hash.rb +44 -0
- data/lib/praxis/docs/{openapi → open_api}/info_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/media_type_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/operation_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/parameter_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/paths_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/request_body_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/response_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/responses_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/schema_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/server_object.rb +0 -0
- data/lib/praxis/docs/{openapi → open_api}/tag_object.rb +0 -0
- data/lib/praxis/docs/open_api_generator.rb +90 -5
- data/lib/praxis/endpoint_definition.rb +273 -0
- data/lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb +1 -1
- data/lib/praxis/extensions/attribute_filtering/filtering_params.rb +1 -1
- data/lib/praxis/extensions/field_expansion.rb +3 -36
- data/lib/praxis/extensions/pagination.rb +2 -2
- data/lib/praxis/extensions/pagination/ordering_params.rb +1 -1
- data/lib/praxis/extensions/pagination/pagination_params.rb +6 -4
- data/lib/praxis/field_expander.rb +90 -0
- data/lib/praxis/finalizable.rb +34 -0
- data/lib/praxis/mapper/selector_generator.rb +1 -1
- data/lib/praxis/media_type.rb +3 -68
- data/lib/praxis/plugin_concern.rb +1 -1
- data/lib/praxis/plugins/mapper_plugin.rb +7 -7
- data/lib/praxis/renderer.rb +88 -0
- data/lib/praxis/request.rb +1 -1
- data/lib/praxis/resource_definition.rb +2 -311
- data/lib/praxis/response_definition.rb +2 -10
- data/lib/praxis/response_template.rb +3 -3
- data/lib/praxis/router.rb +2 -2
- data/lib/praxis/routing_config.rb +1 -1
- data/lib/praxis/tasks/api_docs.rb +13 -63
- data/lib/praxis/tasks/routes.rb +1 -1
- data/lib/praxis/types/media_type_common.rb +1 -11
- data/lib/praxis/version.rb +1 -1
- data/praxis.gemspec +0 -1
- data/spec/functional_spec.rb +5 -9
- data/spec/praxis/action_definition_spec.rb +12 -20
- data/spec/praxis/blueprint_spec.rb +373 -0
- data/spec/praxis/bootloader_spec.rb +10 -2
- data/spec/praxis/collection_spec.rb +0 -13
- data/spec/praxis/config_hash_spec.rb +64 -0
- data/spec/praxis/{resource_definition_spec.rb → endpoint_definition_spec.rb} +37 -64
- data/spec/praxis/extensions/attribute_filtering/active_record_filter_query_builder_spec.rb +4 -6
- data/spec/praxis/extensions/field_expansion_spec.rb +5 -24
- data/spec/praxis/field_expander_spec.rb +149 -0
- data/spec/praxis/media_type_identifier_spec.rb +5 -4
- data/spec/praxis/media_type_spec.rb +4 -93
- data/spec/praxis/renderer_spec.rb +188 -0
- data/spec/praxis/response_definition_spec.rb +0 -31
- data/spec/praxis/response_spec.rb +1 -1
- data/spec/praxis/router_spec.rb +8 -8
- data/spec/praxis/routing_config_spec.rb +3 -3
- data/spec/spec_app/app/controllers/instances.rb +13 -7
- data/spec/spec_app/design/media_types/instance.rb +1 -19
- data/spec/spec_app/design/media_types/volume.rb +1 -1
- data/spec/spec_app/design/media_types/volume_snapshot.rb +2 -14
- data/spec/spec_app/design/resources/instances.rb +5 -8
- data/spec/spec_app/design/resources/volume_snapshots.rb +1 -1
- data/spec/spec_app/design/resources/volumes.rb +1 -1
- data/spec/support/spec_authorization_plugin.rb +1 -1
- data/spec/support/spec_blueprints.rb +72 -0
- data/spec/support/{spec_resource_definitions.rb → spec_endpoint_definitions.rb} +2 -2
- data/spec/support/spec_media_types.rb +6 -26
- data/tasks/thor/app.rb +8 -34
- data/tasks/thor/example.rb +45 -285
- data/tasks/thor/templates/generator/empty_app/.gitignore +0 -1
- data/tasks/thor/templates/generator/empty_app/Gemfile +7 -23
- data/tasks/thor/templates/generator/empty_app/README.md +1 -1
- data/tasks/thor/templates/generator/empty_app/Rakefile +4 -13
- data/tasks/thor/templates/generator/empty_app/{design/response_templates → app/v1/resources}/.empty_directory +0 -0
- data/tasks/thor/templates/generator/empty_app/{design/response_templates → app/v1/resources}/.gitkeep +0 -0
- data/tasks/thor/templates/generator/empty_app/config/environment.rb +25 -17
- data/tasks/thor/templates/generator/empty_app/{design/v1/resources → config/initializers}/.empty_directory +0 -0
- data/tasks/thor/templates/generator/empty_app/{design/v1/resources → config/initializers}/.gitkeep +0 -0
- data/tasks/thor/templates/generator/empty_app/design/v1/endpoints/.empty_directory +0 -0
- data/tasks/thor/templates/generator/empty_app/design/v1/endpoints/.gitkeep +0 -0
- data/tasks/thor/templates/generator/empty_app/docs/.empty_directory +0 -0
- data/tasks/thor/templates/generator/empty_app/docs/.gitkeep +0 -0
- data/tasks/thor/templates/generator/empty_app/spec/spec_helper.rb +14 -9
- data/tasks/thor/templates/generator/example_app/.gitignore +1 -0
- data/tasks/thor/templates/generator/example_app/Gemfile +19 -0
- data/tasks/thor/templates/generator/example_app/Rakefile +54 -0
- data/tasks/thor/templates/generator/example_app/app/models/user.rb +6 -0
- data/tasks/thor/templates/generator/example_app/app/v1/controllers/users.rb +17 -0
- data/tasks/thor/templates/generator/example_app/app/v1/resources/user.rb +46 -0
- data/tasks/thor/templates/generator/example_app/config.ru +31 -0
- data/tasks/thor/templates/generator/example_app/config/environment.rb +40 -0
- data/tasks/thor/templates/generator/example_app/db/migrate/20201010101010_create_users_table.rb +11 -0
- data/tasks/thor/templates/generator/example_app/design/api.rb +18 -0
- data/tasks/thor/templates/generator/example_app/design/v1/endpoints/users.rb +37 -0
- data/tasks/thor/templates/generator/example_app/design/v1/media_types/user.rb +26 -0
- data/tasks/thor/templates/generator/example_app/spec/helpers/database_helper.rb +18 -0
- data/tasks/thor/templates/generator/example_app/spec/spec_helper.rb +42 -0
- data/tasks/thor/templates/generator/example_app/spec/v1/controllers/users_spec.rb +37 -0
- metadata +49 -135
- data/lib/api_browser/.bowerrc +0 -3
- data/lib/api_browser/.editorconfig +0 -21
- data/lib/api_browser/Gruntfile.js +0 -581
- data/lib/api_browser/app/index.html +0 -59
- data/lib/api_browser/app/js/app.js +0 -48
- data/lib/api_browser/app/js/controllers/action.js +0 -47
- data/lib/api_browser/app/js/controllers/controller.js +0 -10
- data/lib/api_browser/app/js/controllers/menu.js +0 -93
- data/lib/api_browser/app/js/controllers/trait.js +0 -10
- data/lib/api_browser/app/js/controllers/type.js +0 -24
- data/lib/api_browser/app/js/directives/attribute_description.js +0 -56
- data/lib/api_browser/app/js/directives/attribute_table.js +0 -28
- data/lib/api_browser/app/js/directives/conditional_requirements.js +0 -13
- data/lib/api_browser/app/js/directives/fixed_if_fits.js +0 -38
- data/lib/api_browser/app/js/directives/highlight.js +0 -14
- data/lib/api_browser/app/js/directives/menu_item.js +0 -59
- data/lib/api_browser/app/js/directives/no_container.js +0 -8
- data/lib/api_browser/app/js/directives/readable_list.js +0 -87
- data/lib/api_browser/app/js/directives/request_examples.js +0 -31
- data/lib/api_browser/app/js/directives/type_placeholder.js +0 -30
- data/lib/api_browser/app/js/directives/url.js +0 -15
- data/lib/api_browser/app/js/factories/Configuration.js +0 -12
- data/lib/api_browser/app/js/factories/Documentation.js +0 -61
- data/lib/api_browser/app/js/factories/Example.js +0 -51
- data/lib/api_browser/app/js/factories/PageInfo.js +0 -9
- data/lib/api_browser/app/js/factories/normalize_attributes.js +0 -20
- data/lib/api_browser/app/js/factories/prepare_template.js +0 -15
- data/lib/api_browser/app/js/factories/template_for.js +0 -128
- data/lib/api_browser/app/js/filters/attribute_name.js +0 -10
- data/lib/api_browser/app/js/filters/friendly_json.js +0 -5
- data/lib/api_browser/app/js/filters/has_requirement.js +0 -14
- data/lib/api_browser/app/js/filters/header_info.js +0 -9
- data/lib/api_browser/app/js/filters/is_empty.js +0 -8
- data/lib/api_browser/app/js/filters/markdown.js +0 -6
- data/lib/api_browser/app/js/filters/resource_name.js +0 -5
- data/lib/api_browser/app/js/filters/tag_requirement.js +0 -13
- data/lib/api_browser/app/sass/modules/_body.scss +0 -40
- data/lib/api_browser/app/sass/modules/_cloke.scss +0 -8
- data/lib/api_browser/app/sass/modules/_header.scss +0 -10
- data/lib/api_browser/app/sass/modules/_nav.scss +0 -7
- data/lib/api_browser/app/sass/modules/_sidebar.scss +0 -134
- data/lib/api_browser/app/sass/modules/_switch.scss +0 -55
- data/lib/api_browser/app/sass/modules/_table.scss +0 -13
- data/lib/api_browser/app/sass/praxis.scss +0 -70
- data/lib/api_browser/app/sass/variables/_bootstrap-variables.scss +0 -774
- data/lib/api_browser/app/views/action.html +0 -97
- data/lib/api_browser/app/views/builtin/field-selector.html +0 -24
- data/lib/api_browser/app/views/controller.html +0 -55
- data/lib/api_browser/app/views/directives/attribute_description.html +0 -2
- data/lib/api_browser/app/views/directives/attribute_description/default.html +0 -2
- data/lib/api_browser/app/views/directives/attribute_description/example.html +0 -13
- data/lib/api_browser/app/views/directives/attribute_description/headers.html +0 -8
- data/lib/api_browser/app/views/directives/attribute_description/member_options.html +0 -4
- data/lib/api_browser/app/views/directives/attribute_description/values.html +0 -14
- data/lib/api_browser/app/views/directives/attribute_table.html +0 -17
- data/lib/api_browser/app/views/directives/menu_item.html +0 -8
- data/lib/api_browser/app/views/directives/url.html +0 -3
- data/lib/api_browser/app/views/examples/general.html +0 -26
- data/lib/api_browser/app/views/home.html +0 -5
- data/lib/api_browser/app/views/layout.html +0 -8
- data/lib/api_browser/app/views/menu.html +0 -42
- data/lib/api_browser/app/views/navbar.html +0 -9
- data/lib/api_browser/app/views/trait.html +0 -13
- data/lib/api_browser/app/views/type.html +0 -6
- data/lib/api_browser/app/views/type/details.html +0 -33
- data/lib/api_browser/app/views/types/embedded/array.html +0 -2
- data/lib/api_browser/app/views/types/embedded/default.html +0 -12
- data/lib/api_browser/app/views/types/embedded/field-selector.html +0 -13
- data/lib/api_browser/app/views/types/embedded/links.html +0 -11
- data/lib/api_browser/app/views/types/embedded/requirements.html +0 -6
- data/lib/api_browser/app/views/types/embedded/single_req.html +0 -9
- data/lib/api_browser/app/views/types/embedded/struct.html +0 -14
- data/lib/api_browser/app/views/types/label/link.html +0 -1
- data/lib/api_browser/app/views/types/label/primitive.html +0 -1
- data/lib/api_browser/app/views/types/label/primitive_collection.html +0 -1
- data/lib/api_browser/app/views/types/label/type.html +0 -1
- data/lib/api_browser/app/views/types/label/type_collection.html +0 -1
- data/lib/api_browser/app/views/types/main/array.html +0 -22
- data/lib/api_browser/app/views/types/main/default.html +0 -23
- data/lib/api_browser/app/views/types/main/hash.html +0 -23
- data/lib/api_browser/app/views/types/standalone/array.html +0 -3
- data/lib/api_browser/app/views/types/standalone/default.html +0 -18
- data/lib/api_browser/app/views/types/standalone/struct.html +0 -2
- data/lib/api_browser/bower_template.json +0 -41
- data/lib/api_browser/package-lock.json +0 -7110
- data/lib/api_browser/package.json +0 -43
- data/lib/praxis/docs/generator.rb +0 -243
- data/lib/praxis/docs/link_builder.rb +0 -30
- data/lib/praxis/links.rb +0 -135
- data/lib/praxis/types/multipart.rb +0 -109
- data/spec/api_browser/directives/type_placeholder_spec.js +0 -134
- data/spec/api_browser/factories/configuration_spec.js +0 -32
- data/spec/api_browser/factories/documentation_spec.js +0 -100
- data/spec/api_browser/factories/normalize_attributes_spec.js +0 -92
- data/spec/api_browser/factories/template_for_spec.js +0 -67
- data/spec/api_browser/filters/attribute_name_spec.js +0 -23
- data/spec/praxis/types/multipart_spec.rb +0 -112
- data/tasks/thor/templates/generator/empty_app/.rspec +0 -1
- data/tasks/thor/templates/generator/empty_app/Guardfile +0 -3
- data/tasks/thor/templates/generator/empty_app/config/rainbows.rb +0 -57
- data/tasks/thor/templates/generator/empty_app/docs/app.js +0 -1
- data/tasks/thor/templates/generator/empty_app/docs/styles.scss +0 -3
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module V1
|
4
|
+
module MediaTypes
|
5
|
+
class User < Praxis::MediaType
|
6
|
+
identifier 'application/json'
|
7
|
+
|
8
|
+
domain_model 'V1::Resources::User'
|
9
|
+
description 'A user in the system'
|
10
|
+
|
11
|
+
attributes do
|
12
|
+
attribute :uid, String
|
13
|
+
attribute :uuid, String
|
14
|
+
attribute :email, String
|
15
|
+
attribute :first_name, String
|
16
|
+
attribute :last_name, String
|
17
|
+
attribute :state, String, values: %i[pending active]
|
18
|
+
end
|
19
|
+
|
20
|
+
default_fieldset do
|
21
|
+
attribute :uid
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
|
3
|
+
class DatabaseHelper
|
4
|
+
# Simple DB seeding to avoid bringing in other gems like FactoryGirl etc.
|
5
|
+
# This does the job for an example seeder
|
6
|
+
def self.seed!
|
7
|
+
user_data = [
|
8
|
+
{id: 11, first_name: 'Peter', last_name: 'Praxis', uuid: 'deadbeef'},
|
9
|
+
{id: 12, first_name: 'Alice', last_name: 'Trellis', uuid: 'beefdead'}
|
10
|
+
]
|
11
|
+
(100..199).each do |i|
|
12
|
+
user_data.push id: i, first_name: "User-#{i}", last_name: "Last-#{i}", uuid: SecureRandom.hex(16).to_s
|
13
|
+
end
|
14
|
+
user_data.each_with_index do |data, i|
|
15
|
+
::User.create(**data)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
Bundler.setup :default, :test
|
2
|
+
Bundler.require :default, :test
|
3
|
+
ENV['RACK_ENV'] = 'test'
|
4
|
+
|
5
|
+
begin
|
6
|
+
APP=Rack::Builder.parse_file(File.expand_path('../config.ru', __dir__)).first
|
7
|
+
rescue => e
|
8
|
+
puts "Application failed to initialize:"
|
9
|
+
raise e
|
10
|
+
exit 1
|
11
|
+
end
|
12
|
+
|
13
|
+
# Migrate and seed the DB (only an empty in-memory DB)
|
14
|
+
require_relative 'helpers/database_helper'
|
15
|
+
ActiveRecord::Migration.verbose = false # ?? does not seem to work like this
|
16
|
+
ActiveRecord::Tasks::DatabaseTasks.migrate
|
17
|
+
DatabaseHelper.seed!
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.include Rack::Test::Methods
|
21
|
+
|
22
|
+
config.before(:suite) do
|
23
|
+
# Praxis::Blueprint.caching_enabled = true
|
24
|
+
DatabaseCleaner.strategy = :transaction
|
25
|
+
end
|
26
|
+
config.around(:each) do |example|
|
27
|
+
DatabaseCleaner.cleaning do
|
28
|
+
example.run
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# config.before(:each) do
|
33
|
+
# Praxis::Blueprint.cache = Hash.new do |hash, key|
|
34
|
+
# hash[key] = Hash.new
|
35
|
+
# end
|
36
|
+
# end
|
37
|
+
|
38
|
+
def app
|
39
|
+
APP
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
|
4
|
+
require 'spec_helper'
|
5
|
+
describe V1::Controllers::Users do
|
6
|
+
before do
|
7
|
+
header 'X-API-Version', '1'
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:response) { subject; last_response }
|
11
|
+
let(:json_payload) { JSON.dump(payload) }
|
12
|
+
let(:parsed_body) { JSON.parse(response.body, symbolize_names: true) }
|
13
|
+
|
14
|
+
context 'index' do
|
15
|
+
let(:filters_q) { '' }
|
16
|
+
let(:fields_q) { 'uid,uuid' }
|
17
|
+
let(:query_string) do
|
18
|
+
"filters=#{CGI.escape(filters_q)}&fields=#{CGI.escape(fields_q)}"
|
19
|
+
end
|
20
|
+
subject { get "/users?#{query_string}" }
|
21
|
+
|
22
|
+
context 'without filters' do
|
23
|
+
it { expect(response.status).to eq 200 }
|
24
|
+
it 'returns all users' do
|
25
|
+
expect(parsed_body.size).to eq(2+100)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
context 'using filters' do
|
29
|
+
let(:filters_q) { 'first_name=Peter' }
|
30
|
+
it 'returns only peter' do
|
31
|
+
expect(parsed_body.size).to eq(1)
|
32
|
+
# Peter has id 11 from our seeds
|
33
|
+
expect(parsed_body.map{|u| u[:uid]}).to eq(['11'])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
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: 2.0.pre.
|
4
|
+
version: 2.0.pre.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep M. Blanquer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-12-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -73,20 +73,6 @@ dependencies:
|
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: praxis-blueprints
|
78
|
-
requirement: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '3.5'
|
83
|
-
type: :runtime
|
84
|
-
prerelease: false
|
85
|
-
version_requirements: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '3.5'
|
90
76
|
- !ruby/object:Gem::Dependency
|
91
77
|
name: attributor
|
92
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -406,98 +392,13 @@ files:
|
|
406
392
|
- Rakefile
|
407
393
|
- TODO.md
|
408
394
|
- bin/praxis
|
409
|
-
- lib/api_browser/.bowerrc
|
410
|
-
- lib/api_browser/.editorconfig
|
411
|
-
- lib/api_browser/Gruntfile.js
|
412
|
-
- lib/api_browser/app/index.html
|
413
|
-
- lib/api_browser/app/js/app.js
|
414
|
-
- lib/api_browser/app/js/controllers/action.js
|
415
|
-
- lib/api_browser/app/js/controllers/controller.js
|
416
|
-
- lib/api_browser/app/js/controllers/menu.js
|
417
|
-
- lib/api_browser/app/js/controllers/trait.js
|
418
|
-
- lib/api_browser/app/js/controllers/type.js
|
419
|
-
- lib/api_browser/app/js/directives/attribute_description.js
|
420
|
-
- lib/api_browser/app/js/directives/attribute_table.js
|
421
|
-
- lib/api_browser/app/js/directives/conditional_requirements.js
|
422
|
-
- lib/api_browser/app/js/directives/fixed_if_fits.js
|
423
|
-
- lib/api_browser/app/js/directives/highlight.js
|
424
|
-
- lib/api_browser/app/js/directives/menu_item.js
|
425
|
-
- lib/api_browser/app/js/directives/no_container.js
|
426
|
-
- lib/api_browser/app/js/directives/readable_list.js
|
427
|
-
- lib/api_browser/app/js/directives/request_examples.js
|
428
|
-
- lib/api_browser/app/js/directives/type_placeholder.js
|
429
|
-
- lib/api_browser/app/js/directives/url.js
|
430
|
-
- lib/api_browser/app/js/factories/Configuration.js
|
431
|
-
- lib/api_browser/app/js/factories/Documentation.js
|
432
|
-
- lib/api_browser/app/js/factories/Example.js
|
433
|
-
- lib/api_browser/app/js/factories/PageInfo.js
|
434
|
-
- lib/api_browser/app/js/factories/normalize_attributes.js
|
435
|
-
- lib/api_browser/app/js/factories/prepare_template.js
|
436
|
-
- lib/api_browser/app/js/factories/template_for.js
|
437
|
-
- lib/api_browser/app/js/filters/attribute_name.js
|
438
|
-
- lib/api_browser/app/js/filters/friendly_json.js
|
439
|
-
- lib/api_browser/app/js/filters/has_requirement.js
|
440
|
-
- lib/api_browser/app/js/filters/header_info.js
|
441
|
-
- lib/api_browser/app/js/filters/is_empty.js
|
442
|
-
- lib/api_browser/app/js/filters/markdown.js
|
443
|
-
- lib/api_browser/app/js/filters/resource_name.js
|
444
|
-
- lib/api_browser/app/js/filters/tag_requirement.js
|
445
|
-
- lib/api_browser/app/sass/modules/_body.scss
|
446
|
-
- lib/api_browser/app/sass/modules/_cloke.scss
|
447
|
-
- lib/api_browser/app/sass/modules/_header.scss
|
448
|
-
- lib/api_browser/app/sass/modules/_nav.scss
|
449
|
-
- lib/api_browser/app/sass/modules/_sidebar.scss
|
450
|
-
- lib/api_browser/app/sass/modules/_switch.scss
|
451
|
-
- lib/api_browser/app/sass/modules/_table.scss
|
452
|
-
- lib/api_browser/app/sass/praxis.scss
|
453
|
-
- lib/api_browser/app/sass/variables/_bootstrap-variables.scss
|
454
|
-
- lib/api_browser/app/views/action.html
|
455
|
-
- lib/api_browser/app/views/builtin/field-selector.html
|
456
|
-
- lib/api_browser/app/views/controller.html
|
457
|
-
- lib/api_browser/app/views/directives/attribute_description.html
|
458
|
-
- lib/api_browser/app/views/directives/attribute_description/default.html
|
459
|
-
- lib/api_browser/app/views/directives/attribute_description/example.html
|
460
|
-
- lib/api_browser/app/views/directives/attribute_description/headers.html
|
461
|
-
- lib/api_browser/app/views/directives/attribute_description/member_options.html
|
462
|
-
- lib/api_browser/app/views/directives/attribute_description/values.html
|
463
|
-
- lib/api_browser/app/views/directives/attribute_table.html
|
464
|
-
- lib/api_browser/app/views/directives/menu_item.html
|
465
|
-
- lib/api_browser/app/views/directives/url.html
|
466
|
-
- lib/api_browser/app/views/examples/general.html
|
467
|
-
- lib/api_browser/app/views/home.html
|
468
|
-
- lib/api_browser/app/views/layout.html
|
469
|
-
- lib/api_browser/app/views/menu.html
|
470
|
-
- lib/api_browser/app/views/navbar.html
|
471
|
-
- lib/api_browser/app/views/trait.html
|
472
|
-
- lib/api_browser/app/views/type.html
|
473
|
-
- lib/api_browser/app/views/type/details.html
|
474
|
-
- lib/api_browser/app/views/types/embedded/array.html
|
475
|
-
- lib/api_browser/app/views/types/embedded/default.html
|
476
|
-
- lib/api_browser/app/views/types/embedded/field-selector.html
|
477
|
-
- lib/api_browser/app/views/types/embedded/links.html
|
478
|
-
- lib/api_browser/app/views/types/embedded/requirements.html
|
479
|
-
- lib/api_browser/app/views/types/embedded/single_req.html
|
480
|
-
- lib/api_browser/app/views/types/embedded/struct.html
|
481
|
-
- lib/api_browser/app/views/types/label/link.html
|
482
|
-
- lib/api_browser/app/views/types/label/primitive.html
|
483
|
-
- lib/api_browser/app/views/types/label/primitive_collection.html
|
484
|
-
- lib/api_browser/app/views/types/label/type.html
|
485
|
-
- lib/api_browser/app/views/types/label/type_collection.html
|
486
|
-
- lib/api_browser/app/views/types/main/array.html
|
487
|
-
- lib/api_browser/app/views/types/main/default.html
|
488
|
-
- lib/api_browser/app/views/types/main/hash.html
|
489
|
-
- lib/api_browser/app/views/types/standalone/array.html
|
490
|
-
- lib/api_browser/app/views/types/standalone/default.html
|
491
|
-
- lib/api_browser/app/views/types/standalone/struct.html
|
492
|
-
- lib/api_browser/bower_template.json
|
493
|
-
- lib/api_browser/package-lock.json
|
494
|
-
- lib/api_browser/package.json
|
495
395
|
- lib/praxis.rb
|
496
396
|
- lib/praxis/action_definition.rb
|
497
397
|
- lib/praxis/action_definition/headers_dsl_compiler.rb
|
498
398
|
- lib/praxis/api_definition.rb
|
499
399
|
- lib/praxis/api_general_info.rb
|
500
400
|
- lib/praxis/application.rb
|
401
|
+
- lib/praxis/blueprint.rb
|
501
402
|
- lib/praxis/bootloader.rb
|
502
403
|
- lib/praxis/bootloader_stages/environment.rb
|
503
404
|
- lib/praxis/bootloader_stages/file_loader.rb
|
@@ -511,22 +412,22 @@ files:
|
|
511
412
|
- lib/praxis/callbacks.rb
|
512
413
|
- lib/praxis/collection.rb
|
513
414
|
- lib/praxis/config.rb
|
415
|
+
- lib/praxis/config_hash.rb
|
514
416
|
- lib/praxis/controller.rb
|
515
417
|
- lib/praxis/dispatcher.rb
|
516
|
-
- lib/praxis/docs/
|
517
|
-
- lib/praxis/docs/
|
418
|
+
- lib/praxis/docs/open_api/info_object.rb
|
419
|
+
- lib/praxis/docs/open_api/media_type_object.rb
|
420
|
+
- lib/praxis/docs/open_api/operation_object.rb
|
421
|
+
- lib/praxis/docs/open_api/parameter_object.rb
|
422
|
+
- lib/praxis/docs/open_api/paths_object.rb
|
423
|
+
- lib/praxis/docs/open_api/request_body_object.rb
|
424
|
+
- lib/praxis/docs/open_api/response_object.rb
|
425
|
+
- lib/praxis/docs/open_api/responses_object.rb
|
426
|
+
- lib/praxis/docs/open_api/schema_object.rb
|
427
|
+
- lib/praxis/docs/open_api/server_object.rb
|
428
|
+
- lib/praxis/docs/open_api/tag_object.rb
|
518
429
|
- lib/praxis/docs/open_api_generator.rb
|
519
|
-
- lib/praxis/
|
520
|
-
- lib/praxis/docs/openapi/media_type_object.rb
|
521
|
-
- lib/praxis/docs/openapi/operation_object.rb
|
522
|
-
- lib/praxis/docs/openapi/parameter_object.rb
|
523
|
-
- lib/praxis/docs/openapi/paths_object.rb
|
524
|
-
- lib/praxis/docs/openapi/request_body_object.rb
|
525
|
-
- lib/praxis/docs/openapi/response_object.rb
|
526
|
-
- lib/praxis/docs/openapi/responses_object.rb
|
527
|
-
- lib/praxis/docs/openapi/schema_object.rb
|
528
|
-
- lib/praxis/docs/openapi/server_object.rb
|
529
|
-
- lib/praxis/docs/openapi/tag_object.rb
|
430
|
+
- lib/praxis/endpoint_definition.rb
|
530
431
|
- lib/praxis/error_handler.rb
|
531
432
|
- lib/praxis/exception.rb
|
532
433
|
- lib/praxis/exceptions/config.rb
|
@@ -561,12 +462,13 @@ files:
|
|
561
462
|
- lib/praxis/extensions/rails_compat.rb
|
562
463
|
- lib/praxis/extensions/rails_compat/request_methods.rb
|
563
464
|
- lib/praxis/extensions/rendering.rb
|
465
|
+
- lib/praxis/field_expander.rb
|
564
466
|
- lib/praxis/file_group.rb
|
467
|
+
- lib/praxis/finalizable.rb
|
565
468
|
- lib/praxis/handlers/json.rb
|
566
469
|
- lib/praxis/handlers/plain.rb
|
567
470
|
- lib/praxis/handlers/www_form.rb
|
568
471
|
- lib/praxis/handlers/xml-sample.rb
|
569
|
-
- lib/praxis/links.rb
|
570
472
|
- lib/praxis/mapper/active_model_compat.rb
|
571
473
|
- lib/praxis/mapper/resource.rb
|
572
474
|
- lib/praxis/mapper/selector_generator.rb
|
@@ -582,6 +484,7 @@ files:
|
|
582
484
|
- lib/praxis/plugins/mapper_plugin.rb
|
583
485
|
- lib/praxis/plugins/pagination_plugin.rb
|
584
486
|
- lib/praxis/plugins/rails_plugin.rb
|
487
|
+
- lib/praxis/renderer.rb
|
585
488
|
- lib/praxis/request.rb
|
586
489
|
- lib/praxis/request_stages/action.rb
|
587
490
|
- lib/praxis/request_stages/load_request.rb
|
@@ -614,30 +517,26 @@ files:
|
|
614
517
|
- lib/praxis/trait.rb
|
615
518
|
- lib/praxis/types/fuzzy_hash.rb
|
616
519
|
- lib/praxis/types/media_type_common.rb
|
617
|
-
- lib/praxis/types/multipart.rb
|
618
520
|
- lib/praxis/types/multipart_array.rb
|
619
521
|
- lib/praxis/types/multipart_array/part_definition.rb
|
620
522
|
- lib/praxis/validation_handler.rb
|
621
523
|
- lib/praxis/version.rb
|
622
524
|
- praxis.gemspec
|
623
|
-
- spec/api_browser/directives/type_placeholder_spec.js
|
624
|
-
- spec/api_browser/factories/configuration_spec.js
|
625
|
-
- spec/api_browser/factories/documentation_spec.js
|
626
|
-
- spec/api_browser/factories/normalize_attributes_spec.js
|
627
|
-
- spec/api_browser/factories/template_for_spec.js
|
628
|
-
- spec/api_browser/filters/attribute_name_spec.js
|
629
525
|
- spec/functional_spec.rb
|
630
526
|
- spec/praxis/action_definition_spec.rb
|
631
527
|
- spec/praxis/api_definition_spec.rb
|
632
528
|
- spec/praxis/api_general_info_spec.rb
|
633
529
|
- spec/praxis/api_resource_spec.rb
|
634
530
|
- spec/praxis/application_spec.rb
|
531
|
+
- spec/praxis/blueprint_spec.rb
|
635
532
|
- spec/praxis/bootloader_spec.rb
|
636
533
|
- spec/praxis/callbacks_spec.rb
|
637
534
|
- spec/praxis/collection_spec.rb
|
535
|
+
- spec/praxis/config_hash_spec.rb
|
638
536
|
- spec/praxis/config_spec.rb
|
639
537
|
- spec/praxis/controller_spec.rb
|
640
538
|
- spec/praxis/dispatcher_spec.rb
|
539
|
+
- spec/praxis/endpoint_definition_spec.rb
|
641
540
|
- spec/praxis/extensions/attribute_filtering/active_record_filter_query_builder_spec.rb
|
642
541
|
- spec/praxis/extensions/attribute_filtering/filter_tree_node_spec.rb
|
643
542
|
- spec/praxis/extensions/attribute_filtering/filtering_params_spec.rb
|
@@ -649,6 +548,7 @@ files:
|
|
649
548
|
- spec/praxis/extensions/rendering_spec.rb
|
650
549
|
- spec/praxis/extensions/support/spec_resources_active_model.rb
|
651
550
|
- spec/praxis/extensions/support/spec_resources_sequel.rb
|
551
|
+
- spec/praxis/field_expander_spec.rb
|
652
552
|
- spec/praxis/file_group_spec.rb
|
653
553
|
- spec/praxis/handlers/json_spec.rb
|
654
554
|
- spec/praxis/mapper/resource_spec.rb
|
@@ -659,11 +559,11 @@ files:
|
|
659
559
|
- spec/praxis/multipart/parser_spec.rb
|
660
560
|
- spec/praxis/notifications_spec.rb
|
661
561
|
- spec/praxis/plugin_concern_spec.rb
|
562
|
+
- spec/praxis/renderer_spec.rb
|
662
563
|
- spec/praxis/request_spec.rb
|
663
564
|
- spec/praxis/request_stages/action_spec.rb
|
664
565
|
- spec/praxis/request_stages/request_stage_spec.rb
|
665
566
|
- spec/praxis/request_stages/validate_spec.rb
|
666
|
-
- spec/praxis/resource_definition_spec.rb
|
667
567
|
- spec/praxis/response_definition_spec.rb
|
668
568
|
- spec/praxis/response_spec.rb
|
669
569
|
- spec/praxis/responses/internal_server_error_spec.rb
|
@@ -676,7 +576,6 @@ files:
|
|
676
576
|
- spec/praxis/types/fuzzy_hash_spec.rb
|
677
577
|
- spec/praxis/types/multipart_array/part_definition_spec.rb
|
678
578
|
- spec/praxis/types/multipart_array_spec.rb
|
679
|
-
- spec/praxis/types/multipart_spec.rb
|
680
579
|
- spec/spec_app/app/concerns/authenticated.rb
|
681
580
|
- spec/spec_app/app/concerns/basic_api.rb
|
682
581
|
- spec/spec_app/app/concerns/log_wrapper.rb
|
@@ -706,18 +605,17 @@ files:
|
|
706
605
|
- spec/spec_helper.rb
|
707
606
|
- spec/support/be_deep_equal_matcher.rb
|
708
607
|
- spec/support/spec_authorization_plugin.rb
|
608
|
+
- spec/support/spec_blueprints.rb
|
709
609
|
- spec/support/spec_complex_authentication_plugin.rb
|
610
|
+
- spec/support/spec_endpoint_definitions.rb
|
710
611
|
- spec/support/spec_media_types.rb
|
711
|
-
- spec/support/spec_resource_definitions.rb
|
712
612
|
- spec/support/spec_resources.rb
|
713
613
|
- spec/support/spec_simple_authentication_plugin.rb
|
714
614
|
- tasks/loader.thor
|
715
615
|
- tasks/thor/app.rb
|
716
616
|
- tasks/thor/example.rb
|
717
617
|
- tasks/thor/templates/generator/empty_app/.gitignore
|
718
|
-
- tasks/thor/templates/generator/empty_app/.rspec
|
719
618
|
- tasks/thor/templates/generator/empty_app/Gemfile
|
720
|
-
- tasks/thor/templates/generator/empty_app/Guardfile
|
721
619
|
- tasks/thor/templates/generator/empty_app/README.md
|
722
620
|
- tasks/thor/templates/generator/empty_app/Rakefile
|
723
621
|
- tasks/thor/templates/generator/empty_app/app/models/.empty_directory
|
@@ -726,19 +624,35 @@ files:
|
|
726
624
|
- tasks/thor/templates/generator/empty_app/app/responses/.gitkeep
|
727
625
|
- tasks/thor/templates/generator/empty_app/app/v1/controllers/.empty_directory
|
728
626
|
- tasks/thor/templates/generator/empty_app/app/v1/controllers/.gitkeep
|
627
|
+
- tasks/thor/templates/generator/empty_app/app/v1/resources/.empty_directory
|
628
|
+
- tasks/thor/templates/generator/empty_app/app/v1/resources/.gitkeep
|
729
629
|
- tasks/thor/templates/generator/empty_app/config.ru
|
730
630
|
- tasks/thor/templates/generator/empty_app/config/environment.rb
|
731
|
-
- tasks/thor/templates/generator/empty_app/config/
|
631
|
+
- tasks/thor/templates/generator/empty_app/config/initializers/.empty_directory
|
632
|
+
- tasks/thor/templates/generator/empty_app/config/initializers/.gitkeep
|
732
633
|
- tasks/thor/templates/generator/empty_app/design/api.rb
|
733
|
-
- tasks/thor/templates/generator/empty_app/design/
|
734
|
-
- tasks/thor/templates/generator/empty_app/design/
|
634
|
+
- tasks/thor/templates/generator/empty_app/design/v1/endpoints/.empty_directory
|
635
|
+
- tasks/thor/templates/generator/empty_app/design/v1/endpoints/.gitkeep
|
735
636
|
- tasks/thor/templates/generator/empty_app/design/v1/media_types/.empty_directory
|
736
637
|
- tasks/thor/templates/generator/empty_app/design/v1/media_types/.gitkeep
|
737
|
-
- tasks/thor/templates/generator/empty_app/
|
738
|
-
- tasks/thor/templates/generator/empty_app/
|
739
|
-
- tasks/thor/templates/generator/empty_app/docs/app.js
|
740
|
-
- tasks/thor/templates/generator/empty_app/docs/styles.scss
|
638
|
+
- tasks/thor/templates/generator/empty_app/docs/.empty_directory
|
639
|
+
- tasks/thor/templates/generator/empty_app/docs/.gitkeep
|
741
640
|
- tasks/thor/templates/generator/empty_app/spec/spec_helper.rb
|
641
|
+
- tasks/thor/templates/generator/example_app/.gitignore
|
642
|
+
- tasks/thor/templates/generator/example_app/Gemfile
|
643
|
+
- tasks/thor/templates/generator/example_app/Rakefile
|
644
|
+
- tasks/thor/templates/generator/example_app/app/models/user.rb
|
645
|
+
- tasks/thor/templates/generator/example_app/app/v1/controllers/users.rb
|
646
|
+
- tasks/thor/templates/generator/example_app/app/v1/resources/user.rb
|
647
|
+
- tasks/thor/templates/generator/example_app/config.ru
|
648
|
+
- tasks/thor/templates/generator/example_app/config/environment.rb
|
649
|
+
- tasks/thor/templates/generator/example_app/db/migrate/20201010101010_create_users_table.rb
|
650
|
+
- tasks/thor/templates/generator/example_app/design/api.rb
|
651
|
+
- tasks/thor/templates/generator/example_app/design/v1/endpoints/users.rb
|
652
|
+
- tasks/thor/templates/generator/example_app/design/v1/media_types/user.rb
|
653
|
+
- tasks/thor/templates/generator/example_app/spec/helpers/database_helper.rb
|
654
|
+
- tasks/thor/templates/generator/example_app/spec/spec_helper.rb
|
655
|
+
- tasks/thor/templates/generator/example_app/spec/v1/controllers/users_spec.rb
|
742
656
|
homepage: https://github.com/praxis/praxis
|
743
657
|
licenses:
|
744
658
|
- MIT
|
data/lib/api_browser/.bowerrc
DELETED