rest_framework 0.8.15 → 0.8.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/views/layouts/rest_framework.html.erb +149 -128
- data/app/views/rest_framework/_head.html.erb +249 -28
- data/app/views/rest_framework/_html_form.html.erb +55 -3
- data/app/views/rest_framework/_raw_form.html.erb +31 -3
- data/docs/CNAME +1 -0
- data/docs/Gemfile +4 -0
- data/docs/Gemfile.lock +264 -0
- data/docs/_config.yml +17 -0
- data/docs/_guide/1_routers.md +110 -0
- data/docs/_guide/2_controller_mixins.md +293 -0
- data/docs/_guide/3_serializers.md +60 -0
- data/docs/_guide/4_filtering_and_ordering.md +41 -0
- data/docs/_guide/5_pagination.md +21 -0
- data/docs/_includes/anchor_headings.html +144 -0
- data/docs/_includes/head.html +35 -0
- data/docs/_includes/header.html +58 -0
- data/docs/_layouts/default.html +11 -0
- data/docs/assets/css/rest_framework.css +159 -0
- data/docs/assets/images/favicon.ico +0 -0
- data/docs/assets/js/rest_framework.js +132 -0
- data/docs/index.md +133 -0
- data/lib/rest_framework/controller_mixins/base.rb +10 -3
- data/lib/rest_framework/controller_mixins/models.rb +120 -44
- data/lib/rest_framework/filters.rb +7 -9
- data/lib/rest_framework/serializers.rb +35 -12
- data/lib/rest_framework/utils.rb +11 -2
- data/lib/rest_framework/version.rb +4 -1
- data/lib/rest_framework.rb +2 -8
- metadata +22 -6
- data/app/views/rest_framework/_form_routes.html.erb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b8d9a14de396b6832c13e0f3e1f2627decb432af03c6a2cbb59ce27328cdd7c
|
4
|
+
data.tar.gz: 6d1e675245643d96e2b35aaaadd9118eb441025a1bb7acc303db63d6761dc79c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0ef4d98bec92656d0541f34aebd652d30b90af0bdde8ea91e0b1809b82ee381bdbfef0ea04235b2c24005ec43646ad59b7fce01d3eda1312e48e1a976bd8092
|
7
|
+
data.tar.gz: d64fdd4c884a6173c9df9f87074748290b1093917a053acfa70b5b6579bbe07f7479adf15b226178fb784181edfe28ac3cbce461c13b64372e988d5abbab5966
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.17
|
@@ -1,170 +1,191 @@
|
|
1
1
|
<!doctype html>
|
2
|
-
<html>
|
2
|
+
<html class="rrf-mode">
|
3
3
|
<head>
|
4
4
|
<title><%= @title %></title>
|
5
|
-
<%= render partial:
|
5
|
+
<%= render partial: "rest_framework/head" %>
|
6
6
|
</head>
|
7
7
|
|
8
8
|
<body>
|
9
|
-
<
|
10
|
-
<div class="w-100 m-0 p-0"
|
11
|
-
<nav class="navbar
|
9
|
+
<header>
|
10
|
+
<div class="w-100 m-0 p-0" id="rrfAccentBar"></div>
|
11
|
+
<nav class="navbar py-0" data-bs-theme="dark">
|
12
12
|
<div class="container">
|
13
13
|
<span class="navbar-brand p-0">
|
14
14
|
<h1 title="RRF v<%= RESTFramework::VERSION %>" class="text-light font-weight-light m-0 p-0" style="font-size: 1em">
|
15
|
-
<%= @template_logo_text ||
|
15
|
+
<%= @template_logo_text || "Rails REST Framework" %>
|
16
16
|
</h1>
|
17
17
|
</span>
|
18
|
+
<div class="dropdown ms-auto" id="rrfModeComponent">
|
19
|
+
<button class="btn btn-dark dropdown-toggle rounded-0 bg-black" style="border-color: black" data-bs-toggle="dropdown"></button>
|
20
|
+
<div class="rrf-mode dropdown-menu dropdown-menu-end py-0 rounded-0" style="font-size: .8em; min-width: 0">
|
21
|
+
<button class="dropdown-item text-end" data-rrf-mode-value="system">
|
22
|
+
System<i class="bi bi-circle-half ms-2"></i>
|
23
|
+
</button>
|
24
|
+
<button class="dropdown-item text-end" data-rrf-mode-value="light">
|
25
|
+
Light<i class="bi bi-sun-fill ms-2"></i>
|
26
|
+
</button>
|
27
|
+
<button class="dropdown-item text-end" data-rrf-mode-value="dark">
|
28
|
+
Dark<i class="bi bi-moon-stars-fill ms-2"></i>
|
29
|
+
</button>
|
30
|
+
</div>
|
31
|
+
</div>
|
18
32
|
</div>
|
19
33
|
</nav>
|
20
|
-
</
|
34
|
+
</header>
|
21
35
|
<div class="container py-3">
|
22
|
-
<div class="
|
23
|
-
<
|
24
|
-
<
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
next breadcrumbs if part.blank?
|
36
|
+
<div class="row">
|
37
|
+
<nav>
|
38
|
+
<ol class="breadcrumb">
|
39
|
+
<%
|
40
|
+
breadcrumbs = request.path.split("/").inject([]) { |breadcrumbs, part|
|
41
|
+
# Ignore blank parts of the path (leading slash or double-slashes).
|
42
|
+
next breadcrumbs if part.blank?
|
30
43
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
44
|
+
last_path = breadcrumbs.last&.first || "/"
|
45
|
+
breadcrumbs << [
|
46
|
+
[last_path, part].join(last_path[-1] == "/" ? "" : "/"),
|
47
|
+
part,
|
48
|
+
]
|
36
49
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
<% end %>
|
50
|
+
next breadcrumbs
|
51
|
+
}
|
52
|
+
%>
|
53
|
+
<% breadcrumbs.each_with_index do |(path, label), i| %>
|
54
|
+
<% if i != breadcrumbs.size - 1 %>
|
55
|
+
<li class="breadcrumb-item"><a href="<%= path %>"><%= label %></a></li>
|
56
|
+
<% else %>
|
57
|
+
<li class="breadcrumb-item active"><%= label %></li>
|
46
58
|
<% end %>
|
47
|
-
|
48
|
-
</
|
59
|
+
<% end %>
|
60
|
+
</ol>
|
61
|
+
</nav>
|
62
|
+
</div>
|
63
|
+
<div class="row">
|
64
|
+
<div>
|
65
|
+
<h1 class="m-0"><%= (@header_text if defined? @header_text) || @title %></h1>
|
66
|
+
<div style="float: right">
|
67
|
+
<% if @route_groups.values[0].any? { |r| r[:matches_path] && r[:verb] == "DELETE" } %>
|
68
|
+
<button type="button" class="btn btn-danger" onclick="rrfDelete(this)">DELETE</button>
|
69
|
+
<% end %>
|
70
|
+
<% if @route_groups.values[0].any? { |r| r[:matches_path] && r[:verb] == "OPTIONS" } %>
|
71
|
+
<button type="button" class="btn btn-primary" onclick="rrfOptions(this)">OPTIONS</button>
|
72
|
+
<% end %>
|
73
|
+
<button type="button" class="btn btn-primary" onclick="rrfGet(this)">GET</button>
|
74
|
+
</div>
|
75
|
+
<% if @description.present? %>
|
76
|
+
<br><br><p style="display: inline-block; margin-bottom: 0"><%= @description %></p>
|
77
|
+
<% end %>
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
<hr/>
|
81
|
+
<div class="row">
|
82
|
+
<div>
|
83
|
+
<pre style="white-space: normal">
|
84
|
+
<code>
|
85
|
+
<strong>
|
86
|
+
<%= request.request_method %>
|
87
|
+
<% if request.method != request.request_method %>
|
88
|
+
(via <%= request.method %>)
|
89
|
+
<% end %>
|
90
|
+
</strong> <%= request.path %><br>
|
91
|
+
</code>
|
92
|
+
</pre>
|
93
|
+
<pre style="white-space: normal">
|
94
|
+
<code>
|
95
|
+
<strong>HTTP <%= response.status %> <%= response.message %></strong><br>
|
96
|
+
<strong>Content-Type:</strong> <%= response.content_type %>
|
97
|
+
</code>
|
98
|
+
</pre>
|
49
99
|
</div>
|
100
|
+
</div>
|
101
|
+
<% if @json_payload.present? || @xml_payload.present? %>
|
50
102
|
<div class="row">
|
51
103
|
<div>
|
52
|
-
<
|
53
|
-
|
54
|
-
|
55
|
-
|
104
|
+
<ul class="nav nav-tabs">
|
105
|
+
<% if @json_payload.present? %>
|
106
|
+
<li class="nav-item">
|
107
|
+
<a class="nav-link active" href="#tab-json" data-bs-toggle="tab" role="tab">
|
108
|
+
.json
|
109
|
+
</a>
|
110
|
+
</li>
|
56
111
|
<% end %>
|
57
|
-
<% if @
|
58
|
-
<
|
112
|
+
<% if @xml_payload.present? %>
|
113
|
+
<li class="nav-item">
|
114
|
+
<a class="nav-link" href="#tab-xml" data-bs-toggle="tab" role="tab">
|
115
|
+
.xml
|
116
|
+
</a>
|
117
|
+
</li>
|
118
|
+
<% end %>
|
119
|
+
</ul>
|
120
|
+
</div>
|
121
|
+
<div class="tab-content pt-2">
|
122
|
+
<div class="tab-pane fade show active" id="tab-json" role="tabpanel">
|
123
|
+
<% if @json_payload.present? %>
|
124
|
+
<div><pre class="rrf-copy"><code class="auto-hljs language-json"><%=
|
125
|
+
JSON.pretty_generate(
|
126
|
+
JSON.parse(@json_payload)
|
127
|
+
) unless @json_payload == ''
|
128
|
+
%></code></pre></div>
|
129
|
+
<% end %>
|
130
|
+
</div>
|
131
|
+
<div class="tab-pane fade" id="tab-xml" role="tabpanel">
|
132
|
+
<% if @xml_payload.present? %>
|
133
|
+
<div><pre class="rrf-copy"><code class="auto-hljs language-xml"><%=
|
134
|
+
CGI.unescapeHTML(@xml_payload)
|
135
|
+
%></code></pre></div>
|
59
136
|
<% end %>
|
60
|
-
<button type="button" class="btn btn-primary" onclick="rrfRefresh(this)">GET</button>
|
61
137
|
</div>
|
62
|
-
<% if @description.present? %>
|
63
|
-
<br><br><p style="display: inline-block; margin-bottom: 0"><%= @description %></p>
|
64
|
-
<% end %>
|
65
138
|
</div>
|
66
139
|
</div>
|
67
|
-
|
140
|
+
<% end %>
|
141
|
+
<% if @route_groups.present? %>
|
142
|
+
<%
|
143
|
+
@is_model_controller = controller.class.included_modules.include?(RESTFramework::ModelControllerMixin)
|
144
|
+
%>
|
68
145
|
<div class="row">
|
69
146
|
<div>
|
70
|
-
<
|
71
|
-
<
|
72
|
-
<
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
</pre>
|
81
|
-
</div>
|
82
|
-
</div>
|
83
|
-
<% if @json_payload.present? || @xml_payload.present? %>
|
84
|
-
<div class="row">
|
85
|
-
<div>
|
86
|
-
<ul class="nav nav-tabs">
|
87
|
-
<% if @json_payload.present? %>
|
88
|
-
<li class="nav-item">
|
89
|
-
<a class="nav-link active" href="#tab-json" data-bs-toggle="tab" role="tab">
|
90
|
-
.json
|
91
|
-
</a>
|
92
|
-
</li>
|
93
|
-
<% end %>
|
94
|
-
<% if @xml_payload.present? %>
|
95
|
-
<li class="nav-item">
|
96
|
-
<a class="nav-link" href="#tab-xml" data-bs-toggle="tab" role="tab">
|
97
|
-
.xml
|
98
|
-
</a>
|
99
|
-
</li>
|
100
|
-
<% end %>
|
101
|
-
</ul>
|
102
|
-
</div>
|
103
|
-
<div class="tab-content pt-2">
|
104
|
-
<div class="tab-pane fade show active" id="tab-json" role="tab">
|
105
|
-
<% if @json_payload.present? %>
|
106
|
-
<div>
|
107
|
-
<pre class="rrf-copy"><code class="language-json"><%=
|
108
|
-
JSON.pretty_generate(
|
109
|
-
JSON.parse(@json_payload)
|
110
|
-
) unless @json_payload == '' %></code></pre>
|
111
|
-
</div>
|
112
|
-
<% end %>
|
113
|
-
</div>
|
114
|
-
<div class="tab-pane fade" id="tab-xml" role="tab">
|
115
|
-
<% if @xml_payload.present? %>
|
116
|
-
<div><pre class="rrf-copy"><code class="language-xml"><%= @xml_payload %></code></pre></div>
|
117
|
-
<% end %>
|
118
|
-
</div>
|
119
|
-
</div>
|
120
|
-
</div>
|
121
|
-
<% end %>
|
122
|
-
<% if @route_groups.present? %>
|
123
|
-
<div class="row">
|
124
|
-
<div>
|
125
|
-
<ul class="nav nav-tabs">
|
147
|
+
<ul class="nav nav-tabs">
|
148
|
+
<li class="nav-item">
|
149
|
+
<a class="nav-link active" href="#tab-routes" data-bs-toggle="tab" role="tab">
|
150
|
+
Routes
|
151
|
+
</a>
|
152
|
+
</li>
|
153
|
+
<% @_rrf_form_routes = @route_groups.values[0].select { |r|
|
154
|
+
r[:matches_params] && r[:verb].in?(["POST", "PUT", "PATCH"])
|
155
|
+
} %>
|
156
|
+
<% unless @_rrf_form_routes.empty? %>
|
126
157
|
<li class="nav-item">
|
127
|
-
<a class="nav-link
|
128
|
-
|
158
|
+
<a class="nav-link" href="#tab-raw-form" data-bs-toggle="tab" role="tab">
|
159
|
+
Raw Form
|
129
160
|
</a>
|
130
161
|
</li>
|
131
|
-
<%
|
132
|
-
r[:matches_params] && r[:verb].in?(["POST", "PUT", "PATCH"])
|
133
|
-
} %>
|
134
|
-
<% unless @_rrf_form_routes.empty? %>
|
162
|
+
<% if @is_model_controller %>
|
135
163
|
<li class="nav-item">
|
136
|
-
<a class="nav-link" href="#tab-
|
137
|
-
|
164
|
+
<a class="nav-link" href="#tab-html-form" data-bs-toggle="tab" role="tab">
|
165
|
+
HTML Form
|
138
166
|
</a>
|
139
167
|
</li>
|
140
|
-
<% if RESTFramework.features[:html_forms] %>
|
141
|
-
<li class="nav-item">
|
142
|
-
<a class="nav-link" href="#tab-raw-form" data-bs-toggle="tab" role="tab">
|
143
|
-
HTML Form
|
144
|
-
</a>
|
145
|
-
</li>
|
146
|
-
<% end %>
|
147
168
|
<% end %>
|
148
|
-
|
169
|
+
<% end %>
|
170
|
+
</ul>
|
171
|
+
</div>
|
172
|
+
<div class="tab-content pt-2">
|
173
|
+
<div class="tab-pane fade show active" id="tab-routes" role="tabpanel">
|
174
|
+
<%= render partial: "rest_framework/routes" %>
|
149
175
|
</div>
|
150
|
-
|
151
|
-
<div class="tab-pane fade
|
152
|
-
<%= render partial:
|
176
|
+
<% unless @_rrf_form_routes.empty? %>
|
177
|
+
<div class="tab-pane fade" id="tab-raw-form" role="tabpanel">
|
178
|
+
<%= render partial: "rest_framework/raw_form" %>
|
153
179
|
</div>
|
154
|
-
<%
|
155
|
-
<div class="tab-pane fade" id="tab-
|
156
|
-
<%= render partial:
|
180
|
+
<% if @is_model_controller %>
|
181
|
+
<div class="tab-pane fade" id="tab-html-form" role="tabpanel">
|
182
|
+
<%= render partial: "rest_framework/html_form" %>
|
157
183
|
</div>
|
158
|
-
<% if RESTFramework.features[:html_forms] %>
|
159
|
-
<div class="tab-pane fade" id="tab-raw-form" role="tab">
|
160
|
-
<%= render partial: 'rest_framework/html_form' %>
|
161
|
-
</div>
|
162
|
-
<% end %>
|
163
184
|
<% end %>
|
164
|
-
|
185
|
+
<% end %>
|
165
186
|
</div>
|
166
|
-
|
167
|
-
|
187
|
+
</div>
|
188
|
+
<% end %>
|
168
189
|
</div>
|
169
190
|
</body>
|
170
191
|
</html>
|