Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
b0f2ec78
Unverified
Commit
b0f2ec78
authored
Mar 17, 2017
by
José Padilla
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup and refactor docs api.js script
parent
d8507d3f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
219 additions
and
192 deletions
+219
-192
rest_framework/static/rest_framework/docs/js/api.js
+219
-192
No files found.
rest_framework/static/rest_framework/docs/js/api.js
View file @
b0f2ec78
var
responseDisplay
=
'data'
var
coreapi
=
window
.
coreapi
var
schema
=
window
.
schema
function
normalizeHTTPHeader
(
str
)
{
function
normalizeHTTPHeader
(
str
)
{
// Capitalize HTTP headers for display.
// Capitalize HTTP headers for display.
return
(
str
.
charAt
(
0
).
toUpperCase
()
+
str
.
substring
(
1
))
return
(
str
.
charAt
(
0
).
toUpperCase
()
+
str
.
substring
(
1
))
.
replace
(
/-
(
.
)
/g
,
function
(
$1
)
{
return
$1
.
toUpperCase
()
})
.
replace
(
/-
(
.
)
/g
,
function
(
$1
)
{
.
replace
(
/
(
Www
)
/g
,
function
(
$1
)
{
return
'WWW'
})
return
$1
.
toUpperCase
()
.
replace
(
/
(
Xss
)
/g
,
function
(
$1
)
{
return
'XSS'
})
})
.
replace
(
/
(
Md5
)
/g
,
function
(
$1
)
{
return
'MD5'
})
.
replace
(
/
(
Www
)
/g
,
function
(
$1
)
{
return
'WWW'
})
.
replace
(
/
(
Xss
)
/g
,
function
(
$1
)
{
return
'XSS'
})
.
replace
(
/
(
Md5
)
/g
,
function
(
$1
)
{
return
'MD5'
})
}
}
var
responseDisplay
=
'data'
const
coreapi
=
window
.
coreapi
const
schema
=
window
.
schema
// Language Control
$
(
'#language-control li'
).
click
(
function
(
event
)
{
event
.
preventDefault
();
const
languageMenuItem
=
$
(
this
).
find
(
'a'
);
var
language
=
languageMenuItem
.
data
(
"language"
)
var
languageControls
=
$
(
this
).
closest
(
'ul'
).
find
(
'li'
);
languageControls
.
find
(
'a'
).
not
(
'[data-language="'
+
language
+
'"]'
).
parent
().
removeClass
(
"active"
)
languageControls
.
find
(
'a'
).
filter
(
'[data-language="'
+
language
+
'"]'
).
parent
().
addClass
(
"active"
)
$
(
'#selected-language'
).
text
(
language
)
var
codeBlocks
=
$
(
'pre.highlight'
)
codeBlocks
.
not
(
'[data-language="'
+
language
+
'"]'
).
addClass
(
"hide"
)
codeBlocks
.
filter
(
'[data-language="'
+
language
+
'"]'
).
removeClass
(
"hide"
)
})
function
formEntries
(
form
)
{
function
formEntries
(
form
)
{
// Polyfill for new FormData(form).entries()
// Polyfill for new FormData(form).entries()
var
formData
=
new
FormData
(
form
)
var
formData
=
new
FormData
(
form
)
...
@@ -37,7 +28,7 @@ function formEntries (form) {
...
@@ -37,7 +28,7 @@ function formEntries (form) {
var
entries
=
[]
var
entries
=
[]
for
(
var
{
name
,
type
,
value
,
files
,
checked
,
selectedOptions
}
of
Array
.
from
(
form
.
elements
))
{
for
(
var
{
name
,
type
,
value
,
files
,
checked
,
selectedOptions
}
of
Array
.
from
(
form
.
elements
))
{
if
(
!
name
)
{
if
(
!
name
)
{
continue
continue
}
}
...
@@ -58,105 +49,138 @@ function formEntries (form) {
...
@@ -58,105 +49,138 @@ function formEntries (form) {
entries
.
push
([
name
,
value
])
entries
.
push
([
name
,
value
])
}
}
}
}
return
entries
return
entries
}
}
// API Explorer
$
(
function
()
{
$
(
'form.api-interaction'
).
submit
(
function
(
event
)
{
var
$selectedAuthentication
=
$
(
'#selected-authentication'
)
event
.
preventDefault
();
var
$authControl
=
$
(
'#auth-control'
)
var
$authTokenModal
=
$
(
'#auth_token_modal'
)
// Language Control
$
(
'#language-control li'
).
click
(
function
(
event
)
{
event
.
preventDefault
()
var
$languageMenuItem
=
$
(
this
).
find
(
'a'
)
var
$languageControls
=
$
(
this
).
closest
(
'ul'
).
find
(
'li'
)
var
$languageControlLinks
=
$languageControls
.
find
(
'a'
)
var
language
=
$languageMenuItem
.
data
(
'language'
)
$languageControlLinks
.
not
(
'[data-language="'
+
language
+
'"]'
).
parent
().
removeClass
(
'active'
)
$languageControlLinks
.
filter
(
'[data-language="'
+
language
+
'"]'
).
parent
().
addClass
(
'active'
)
$
(
'#selected-language'
).
text
(
language
)
var
$codeBlocks
=
$
(
'pre.highlight'
)
$codeBlocks
.
not
(
'[data-language="'
+
language
+
'"]'
).
addClass
(
'hide'
)
$codeBlocks
.
filter
(
'[data-language="'
+
language
+
'"]'
).
removeClass
(
'hide'
)
})
const
form
=
$
(
this
).
closest
(
"form"
);
// API Explorer
const
key
=
form
.
data
(
"key"
);
$
(
'form.api-interaction'
).
submit
(
function
(
event
)
{
var
params
=
{};
event
.
preventDefault
()
var
$form
=
$
(
this
).
closest
(
'form'
)
var
$requestMethod
=
$form
.
find
(
'.request-method'
)
var
$requestUrl
=
$form
.
find
(
'.request-url'
)
var
$toggleView
=
$form
.
closest
(
'.modal-content'
).
find
(
'.toggle-view'
)
var
$responseStatusCode
=
$form
.
find
(
'.response-status-code'
)
var
$meta
=
$form
.
find
(
'.meta'
)
var
$responseRawResponse
=
$form
.
find
(
'.response-raw-response'
)
var
$requestAwaiting
=
$form
.
find
(
'.request-awaiting'
)
var
$responseRaw
=
$form
.
find
(
'.response-raw'
)
var
$responseData
=
$form
.
find
(
'.response-data'
)
var
key
=
$form
.
data
(
'key'
)
var
params
=
{}
var
entries
=
formEntries
(
$form
.
get
()[
0
])
const
entries
=
formEntries
(
form
.
get
()[
0
]);
for
(
var
[
paramKey
,
paramValue
]
of
entries
)
{
for
(
var
[
paramKey
,
paramValue
]
of
entries
)
{
var
elem
=
form
.
find
(
"[name="
+
paramKey
+
"]"
)
var
$elem
=
$form
.
find
(
'[name='
+
paramKey
+
']'
)
var
dataType
=
elem
.
data
(
'type'
)
||
'string'
var
dataType
=
$elem
.
data
(
'type'
)
||
'string'
if
(
dataType
===
'integer'
&&
paramValue
)
{
if
(
dataType
===
'integer'
&&
paramValue
)
{
var
value
=
parseInt
(
paramValue
)
var
value
=
parseInt
(
paramValue
)
if
(
!
isNaN
(
value
))
{
if
(
!
isNaN
(
value
))
{
params
[
paramKey
]
=
value
params
[
paramKey
]
=
value
}
}
}
else
if
(
dataType
===
'number'
&&
paramValue
)
{
}
else
if
(
dataType
===
'number'
&&
paramValue
)
{
var
value
=
parseFloat
(
paramValue
)
var
value
=
parseFloat
(
paramValue
)
if
(
!
isNaN
(
value
))
{
if
(
!
isNaN
(
value
))
{
params
[
paramKey
]
=
value
params
[
paramKey
]
=
value
}
}
}
else
if
(
dataType
===
'boolean'
&&
paramValue
)
{
}
else
if
(
dataType
===
'boolean'
&&
paramValue
)
{
var
value
=
{
var
value
=
{
'true'
:
true
,
'true'
:
true
,
'false'
:
false
'false'
:
false
}[
paramValue
.
toLowerCase
()]
}[
paramValue
.
toLowerCase
()]
if
(
value
!==
undefined
)
{
if
(
value
!==
undefined
)
{
params
[
paramKey
]
params
[
paramKey
]
}
}
}
else
if
(
dataType
===
'array'
&&
paramValue
)
{
}
else
if
(
dataType
===
'array'
&&
paramValue
)
{
try
{
try
{
params
[
paramKey
]
=
JSON
.
parse
(
paramValue
)
params
[
paramKey
]
=
JSON
.
parse
(
paramValue
)
}
catch
(
err
)
{
}
catch
(
err
)
{
// Ignore malformed JSON
// Ignore malformed JSON
}
}
}
else
if
(
dataType
===
'object'
&&
paramValue
)
{
}
else
if
(
dataType
===
'object'
&&
paramValue
)
{
try
{
try
{
params
[
paramKey
]
=
JSON
.
parse
(
paramValue
)
params
[
paramKey
]
=
JSON
.
parse
(
paramValue
)
}
catch
(
err
)
{
}
catch
(
err
)
{
// Ignore malformed JSON
// Ignore malformed JSON
}
}
else
if
(
dataType
===
'string'
&&
paramValue
)
{
params
[
paramKey
]
=
paramValue
}
}
}
else
if
(
dataType
===
'string'
&&
paramValue
)
{
params
[
paramKey
]
=
paramValue
}
}
}
form
.
find
(
":checkbox"
).
each
(
function
(
index
)
{
$form
.
find
(
':checkbox'
).
each
(
function
(
index
)
{
// Handle unselected checkboxes
// Handle unselected checkboxes
var
name
=
$
(
this
).
attr
(
"name"
);
var
name
=
$
(
this
).
attr
(
'name'
)
if
(
!
params
.
hasOwnProperty
(
name
))
{
if
(
!
params
.
hasOwnProperty
(
name
))
{
params
[
name
]
=
false
params
[
name
]
=
false
}
}
})
})
function
requestCallback
(
request
)
{
function
requestCallback
(
request
)
{
// Fill in the "GET /foo/" display.
// Fill in the "GET /foo/" display.
var
parser
=
document
.
createElement
(
'a'
);
var
parser
=
document
.
createElement
(
'a'
)
parser
.
href
=
request
.
url
;
parser
.
href
=
request
.
url
const
method
=
request
.
options
.
method
var
method
=
request
.
options
.
method
const
path
=
parser
.
pathname
+
parser
.
hash
+
parser
.
search
var
path
=
parser
.
pathname
+
parser
.
hash
+
parser
.
search
form
.
find
(
".request-method"
)
.
text
(
method
)
$requestMethod
.
text
(
method
)
form
.
find
(
".request-url"
)
.
text
(
path
)
$requestUrl
.
text
(
path
)
}
}
function
responseCallback
(
response
,
responseText
)
{
function
responseCallback
(
response
,
responseText
)
{
// Display the 'Data'/'Raw' control.
// Display the 'Data'/'Raw' control.
form
.
closest
(
".modal-content"
).
find
(
".toggle-view"
).
removeClass
(
"hide"
)
$toggleView
.
removeClass
(
'hide'
)
// Fill in the "200 OK" display.
// Fill in the "200 OK" display.
form
.
find
(
".response-status-code"
).
removeClass
(
"label-success"
).
removeClass
(
"label-danger"
)
$responseStatusCode
.
removeClass
(
'label-success'
).
removeClass
(
'label-danger'
)
if
(
response
.
ok
)
{
if
(
response
.
ok
)
{
form
.
find
(
".response-status-code"
).
addClass
(
"label-success"
)
$responseStatusCode
.
addClass
(
'label-success'
)
}
else
{
}
else
{
form
.
find
(
".response-status-code"
).
addClass
(
"label-danger"
)
$responseStatusCode
.
addClass
(
'label-danger'
)
}
}
form
.
find
(
".response-status-code"
)
.
text
(
response
.
status
)
$responseStatusCode
.
text
(
response
.
status
)
form
.
find
(
".meta"
).
removeClass
(
"hide"
)
$meta
.
removeClass
(
'hide'
)
// Fill in the Raw HTTP response display.
// Fill in the Raw HTTP response display.
var
panelText
=
'HTTP/1.1 '
+
response
.
status
+
' '
+
response
.
statusText
+
'
\
n'
;
var
panelText
=
'HTTP/1.1 '
+
response
.
status
+
' '
+
response
.
statusText
+
'
\
n'
response
.
headers
.
forEach
(
function
(
header
,
key
)
{
response
.
headers
.
forEach
(
function
(
header
,
key
)
{
panelText
+=
normalizeHTTPHeader
(
key
)
+
': '
+
header
+
'
\
n'
panelText
+=
normalizeHTTPHeader
(
key
)
+
': '
+
header
+
'
\
n'
})
})
if
(
responseText
)
{
if
(
responseText
)
{
panelText
+=
'
\
n'
+
responseText
panelText
+=
'
\
n'
+
responseText
}
}
form
.
find
(
".response-raw-response"
)
.
text
(
panelText
)
$responseRawResponse
.
text
(
panelText
)
}
}
// Instantiate a client to make the outgoing request.
// Instantiate a client to make the outgoing request.
var
options
=
{
var
options
=
{
requestCallback
:
requestCallback
,
requestCallback
:
requestCallback
,
responseCallback
:
responseCallback
,
responseCallback
:
responseCallback
}
}
// Setup authentication options.
// Setup authentication options.
...
@@ -180,101 +204,104 @@ $('form.api-interaction').submit(function(event) {
...
@@ -180,101 +204,104 @@ $('form.api-interaction').submit(function(event) {
})
})
}
}
const
client
=
new
coreapi
.
Client
(
options
)
var
client
=
new
coreapi
.
Client
(
options
)
client
.
action
(
schema
,
key
,
params
).
then
(
function
(
data
)
{
client
.
action
(
schema
,
key
,
params
).
then
(
function
(
data
)
{
var
response
=
JSON
.
stringify
(
data
,
null
,
2
);
var
response
=
JSON
.
stringify
(
data
,
null
,
2
)
form
.
find
(
".request-awaiting"
).
addClass
(
"hide"
)
$requestAwaiting
.
addClass
(
'hide'
)
form
.
find
(
".response-raw"
).
addClass
(
"hide"
)
$responseRaw
.
addClass
(
'hide'
)
form
.
find
(
".response-data"
).
addClass
(
"hide"
)
$responseData
.
addClass
(
'hide'
).
text
(
''
).
jsonView
(
response
)
form
.
find
(
".response-data"
).
text
(
''
)
form
.
find
(
".response-data"
).
jsonView
(
response
)
if
(
responseDisplay
===
'data'
)
{
$responseData
.
removeClass
(
'hide'
)
if
(
responseDisplay
===
'data'
)
{
}
else
{
form
.
find
(
".response-data"
).
removeClass
(
"hide"
)
$responseRaw
.
removeClass
(
'hide'
)
}
else
{
}
form
.
find
(
".response-raw"
).
removeClass
(
"hide"
)
}
}).
catch
(
function
(
error
)
{
}).
catch
(
function
(
error
)
{
var
response
=
JSON
.
stringify
(
error
.
content
,
null
,
2
);
var
response
=
JSON
.
stringify
(
error
.
content
,
null
,
2
)
form
.
find
(
".request-awaiting"
).
addClass
(
"hide"
)
$requestAwaiting
.
addClass
(
'hide'
)
form
.
find
(
".response-raw"
).
addClass
(
"hide"
)
$responseRaw
.
addClass
(
'hide'
)
form
.
find
(
".response-data"
).
addClass
(
"hide"
)
$responseData
.
addClass
(
'hide'
).
text
(
''
).
jsonView
(
response
)
form
.
find
(
".response-data"
).
text
(
''
)
form
.
find
(
".response-data"
).
jsonView
(
response
)
if
(
responseDisplay
===
'data'
)
{
$responseData
.
removeClass
(
'hide'
)
if
(
responseDisplay
===
'data'
)
{
}
else
{
form
.
find
(
".response-data"
).
removeClass
(
"hide"
)
$responseRaw
.
removeClass
(
'hide'
)
}
else
{
}
form
.
find
(
".response-raw"
).
removeClass
(
"hide"
)
}
})
})
});
})
// 'Data'/'Raw' control
$
(
'.toggle-view button'
).
click
(
function
()
{
var
$modalContent
=
$
(
this
).
closest
(
'.modal-content'
)
var
$modalResponseRaw
=
$modalContent
.
find
(
'.response-raw'
)
var
$modalResponseData
=
$modalContent
.
find
(
'.response-data'
)
responseDisplay
=
$
(
this
).
data
(
'display-toggle'
)
$
(
this
).
removeClass
(
'btn-default'
).
addClass
(
'btn-info'
).
siblings
().
removeClass
(
'btn-info'
)
// 'Data'/'Raw' control
$
(
'.toggle-view button'
).
click
(
function
()
{
responseDisplay
=
$
(
this
).
data
(
"display-toggle"
);
$
(
this
).
removeClass
(
"btn-default"
).
addClass
(
'btn-info'
).
siblings
().
removeClass
(
'btn-info'
);
if
(
responseDisplay
===
'raw'
)
{
if
(
responseDisplay
===
'raw'
)
{
$
(
this
).
closest
(
".modal-content"
).
find
(
".response-raw"
).
removeClass
(
"hide"
);
$modalResponseRaw
.
removeClass
(
'hide'
)
$
(
this
).
closest
(
".modal-content"
).
find
(
".response-data"
).
addClass
(
"hide"
);
$modalResponseData
.
addClass
(
'hide'
)
}
else
{
}
else
{
$
(
this
).
closest
(
".modal-content"
).
find
(
".response-data"
).
removeClass
(
"hide"
);
$modalResponseData
.
removeClass
(
'hide'
)
$
(
this
).
closest
(
".modal-content"
).
find
(
".response-raw"
).
addClass
(
"hide"
);
$modalResponseRaw
.
addClass
(
'hide'
)
}
}
});
})
// Authentication: none
// Authentication: none
$
(
'#auth-control'
)
.
find
(
"[data-auth='none']"
).
click
(
function
(
event
)
{
$authControl
.
find
(
"[data-auth='none']"
).
click
(
function
(
event
)
{
event
.
preventDefault
()
;
event
.
preventDefault
()
window
.
auth
=
null
;
window
.
auth
=
null
$
(
'#selected-authentication'
).
text
(
'none'
);
$
selectedAuthentication
.
text
(
'none'
)
$
(
'#auth-control'
).
children
().
removeClass
(
'active'
);
$
authControl
.
children
().
removeClass
(
'active'
)
$
(
'#auth-control'
).
find
(
"[data-auth='none']"
).
addClass
(
'active'
);
$
authControl
.
find
(
"[data-auth='none']"
).
addClass
(
'active'
)
})
})
// Authentication: token
// Authentication: token
$
(
'form.authentication-token-form'
).
submit
(
function
(
event
)
{
$
(
'form.authentication-token-form'
).
submit
(
function
(
event
)
{
event
.
preventDefault
()
;
event
.
preventDefault
()
const
form
=
$
(
this
).
closest
(
"form"
);
var
$form
=
$
(
this
).
closest
(
'form'
)
const
scheme
=
form
.
find
(
'input#scheme'
).
val
();
var
scheme
=
$form
.
find
(
'input#scheme'
).
val
()
const
token
=
form
.
find
(
'input#token'
).
val
();
var
token
=
$form
.
find
(
'input#token'
).
val
()
window
.
auth
=
{
window
.
auth
=
{
'type'
:
'token'
,
'type'
:
'token'
,
'scheme'
:
scheme
,
'scheme'
:
scheme
,
'token'
:
token
'token'
:
token
}
;
}
$
(
'#selected-authentication'
).
text
(
'token'
);
$
selectedAuthentication
.
text
(
'token'
)
$
(
'#auth-control'
).
children
().
removeClass
(
'active'
);
$
authControl
.
children
().
removeClass
(
'active'
)
$
(
'#auth-control'
).
find
(
"[data-auth='token']"
).
addClass
(
'active'
);
$
authControl
.
find
(
"[data-auth='token']"
).
addClass
(
'active'
)
$
(
'#auth_token_modal'
).
modal
(
'hide'
);
$
authTokenModal
.
modal
(
'hide'
)
});
})
// Authentication: basic
// Authentication: basic
$
(
'form.authentication-basic-form'
).
submit
(
function
(
event
)
{
$
(
'form.authentication-basic-form'
).
submit
(
function
(
event
)
{
event
.
preventDefault
()
;
event
.
preventDefault
()
const
form
=
$
(
this
).
closest
(
"form"
);
var
$form
=
$
(
this
).
closest
(
'form'
)
const
username
=
form
.
find
(
'input#username'
).
val
();
var
username
=
$form
.
find
(
'input#username'
).
val
()
const
password
=
form
.
find
(
'input#password'
).
val
();
var
password
=
$form
.
find
(
'input#password'
).
val
()
window
.
auth
=
{
window
.
auth
=
{
'type'
:
'basic'
,
'type'
:
'basic'
,
'username'
:
username
,
'username'
:
username
,
'password'
:
password
'password'
:
password
}
;
}
$
(
'#selected-authentication'
).
text
(
'basic'
);
$
selectedAuthentication
.
text
(
'basic'
)
$
(
'#auth-control'
).
children
().
removeClass
(
'active'
);
$
authControl
.
children
().
removeClass
(
'active'
)
$
(
'#auth-control'
).
find
(
"[data-auth='basic']"
).
addClass
(
'active'
);
$
authControl
.
find
(
"[data-auth='basic']"
).
addClass
(
'active'
)
$
(
'#auth_basic_modal'
).
modal
(
'hide'
);
$
authTokenModal
.
modal
(
'hide'
)
});
})
// Authentication: session
// Authentication: session
$
(
'form.authentication-session-form'
).
submit
(
function
(
event
)
{
$
(
'form.authentication-session-form'
).
submit
(
function
(
event
)
{
event
.
preventDefault
()
;
event
.
preventDefault
()
window
.
auth
=
{
window
.
auth
=
{
'type'
:
'session'
,
'type'
:
'session'
};
}
$
(
'#selected-authentication'
).
text
(
'session'
);
$selectedAuthentication
.
text
(
'session'
)
$
(
'#auth-control'
).
children
().
removeClass
(
'active'
);
$authControl
.
children
().
removeClass
(
'active'
)
$
(
'#auth-control'
).
find
(
"[data-auth='session']"
).
addClass
(
'active'
);
$authControl
.
find
(
"[data-auth='session']"
).
addClass
(
'active'
)
$
(
'#auth_session_modal'
).
modal
(
'hide'
);
$authTokenModal
.
modal
(
'hide'
)
});
})
})
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment