Add api doc in html
This commit is contained in:
parent
9ee83eb99e
commit
5e1c08eb94
13 changed files with 11388 additions and 67 deletions
|
@ -37,9 +37,11 @@
|
|||
"update-host": "ts-node ./scripts/update-host.ts",
|
||||
"test": "scripty",
|
||||
"help": "scripty",
|
||||
"generate-api-doc": "scripty",
|
||||
"parse-log": "ts-node ./scripts/parse-log.ts",
|
||||
"postinstall": "cd client && yarn install --pure-lockfile",
|
||||
"tsc": "tsc",
|
||||
"spectacle-docs": "node_modules/spectacle-docs/bin/spectacle.js",
|
||||
"commander": "commander",
|
||||
"ng": "ng",
|
||||
"nodemon": "nodemon",
|
||||
|
@ -120,6 +122,7 @@
|
|||
"mocha": "^5.0.0",
|
||||
"nodemon": "^1.11.0",
|
||||
"source-map-support": "^0.5.0",
|
||||
"spectacle-docs": "^0.9.13",
|
||||
"standard": "^10.0.0",
|
||||
"supertest": "^3.0.0",
|
||||
"tslint": "^5.7.0",
|
||||
|
|
3
scripts/generate-api-doc.sh
Executable file
3
scripts/generate-api-doc.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
npm run spectacle-docs -- -t support/doc/api/html support/doc/api/openapi.yaml
|
|
@ -1,6 +1,5 @@
|
|||
/* tslint:disable:no-unused-expression */
|
||||
|
||||
import { expect } from 'chai'
|
||||
import { join } from 'path'
|
||||
import * as request from 'supertest'
|
||||
import * as WebTorrent from 'webtorrent'
|
||||
|
|
|
@ -7,7 +7,7 @@ import { extname, isAbsolute, join } from 'path'
|
|||
import * as request from 'supertest'
|
||||
import { getMyUserInformation, makeGetRequest, root, ServerInfo, testImage } from '../'
|
||||
import { VideoPrivacy } from '../../../../shared/models/videos'
|
||||
import { readdirPromise, readFileBufferPromise } from '../../../helpers/core-utils'
|
||||
import { readdirPromise } from '../../../helpers/core-utils'
|
||||
import { VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PRIVACIES } from '../../../initializers'
|
||||
import { dateIsValid, webtorrentAdd } from '../index'
|
||||
|
||||
|
|
5953
support/doc/api/html/index.html
Normal file
5953
support/doc/api/html/index.html
Normal file
File diff suppressed because it is too large
Load diff
242
support/doc/api/html/javascripts/spectacle.js
Normal file
242
support/doc/api/html/javascripts/spectacle.js
Normal file
|
@ -0,0 +1,242 @@
|
|||
$(function() {
|
||||
// $(document).foundation();
|
||||
|
||||
var $sidebar = $('#sidebar');
|
||||
if ($sidebar.length) {
|
||||
var $docs = $('#docs');
|
||||
var $nav = $sidebar.find('nav');
|
||||
|
||||
//
|
||||
// Setup sidebar navigation
|
||||
var traverse = new Traverse($nav, {
|
||||
threshold: 10,
|
||||
barOffset: $sidebar.position().top
|
||||
});
|
||||
|
||||
$nav.on('update.traverse', function(event, element) {
|
||||
$nav.find('section').removeClass('expand');
|
||||
var $section = element.parents('section:first');
|
||||
if ($section.length) {
|
||||
$section.addClass('expand');
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// Bind the drawer layout
|
||||
var $drawerLayout = $('.drawer-layout'),
|
||||
$drawer = $drawerLayout.find('.drawer'),
|
||||
closeDrawer = function() {
|
||||
$drawer.removeClass('slide-right slide-left');
|
||||
$drawer.find('.drawer-overlay').remove();
|
||||
$drawerLayout.removeClass('drawer-open drawer-slide-left-large drawer-slide-right-large');
|
||||
return false;
|
||||
};
|
||||
|
||||
// Drawer open buttons
|
||||
$drawerLayout.find('[data-drawer-slide]').click(function(e) {
|
||||
var $this = $(this),
|
||||
direction = $this.data('drawer-slide');
|
||||
$drawerLayout.addClass('drawer-open');
|
||||
$drawer.addClass('slide-' + direction);
|
||||
|
||||
var $overlay = $('<a href="#" class="drawer-overlay"></a>')
|
||||
$drawer.append($overlay);
|
||||
$overlay.click(closeDrawer);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// Drawer close buttons
|
||||
$drawerLayout.find('[data-drawer-close]').click(closeDrawer);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Creates a new instance of Traverse.
|
||||
* @class
|
||||
* @fires Traverse#init
|
||||
* @param {Object} element - jQuery object to add the trigger to.
|
||||
* @param {Object} options - Overrides to the default plugin settings.
|
||||
*/
|
||||
function Traverse(element, options) {
|
||||
this.$element = element;
|
||||
this.options = $.extend({}, Traverse.defaults, this.$element.data(), options);
|
||||
|
||||
this._init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Default settings for plugin
|
||||
*/
|
||||
Traverse.defaults = {
|
||||
/**
|
||||
* Amount of time, in ms, the animated scrolling should take between locations.
|
||||
* @option
|
||||
* @example 500
|
||||
*/
|
||||
animationDuration: 500,
|
||||
/**
|
||||
* Animation style to use when scrolling between locations.
|
||||
* @option
|
||||
* @example 'ease-in-out'
|
||||
*/
|
||||
animationEasing: 'linear',
|
||||
/**
|
||||
* Number of pixels to use as a marker for location changes.
|
||||
* @option
|
||||
* @example 50
|
||||
*/
|
||||
threshold: 50,
|
||||
/**
|
||||
* Class applied to the active locations link on the traverse container.
|
||||
* @option
|
||||
* @example 'active'
|
||||
*/
|
||||
activeClass: 'active',
|
||||
/**
|
||||
* Allows the script to manipulate the url of the current page, and if supported, alter the history.
|
||||
* @option
|
||||
* @example true
|
||||
*/
|
||||
deepLinking: false,
|
||||
/**
|
||||
* Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
|
||||
* @option
|
||||
* @example 25
|
||||
*/
|
||||
barOffset: 0
|
||||
};
|
||||
|
||||
/**
|
||||
* Initializes the Traverse plugin and calls functions to get equalizer functioning on load.
|
||||
* @private
|
||||
*/
|
||||
Traverse.prototype._init = function() {
|
||||
var id = this.$element[0].id, // || Foundation.GetYoDigits(6, 'traverse'),
|
||||
_this = this;
|
||||
this.$targets = $('[data-traverse-target]');
|
||||
this.$links = this.$element.find('a');
|
||||
this.$element.attr({
|
||||
'data-resize': id,
|
||||
'data-scroll': id,
|
||||
'id': id
|
||||
});
|
||||
this.$active = $();
|
||||
this.scrollPos = parseInt(window.pageYOffset, 10);
|
||||
|
||||
this._events();
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculates an array of pixel values that are the demarcation lines between locations on the page.
|
||||
* Can be invoked if new elements are added or the size of a location changes.
|
||||
* @function
|
||||
*/
|
||||
Traverse.prototype.calcPoints = function(){
|
||||
var _this = this,
|
||||
body = document.body,
|
||||
html = document.documentElement;
|
||||
|
||||
this.points = [];
|
||||
this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));
|
||||
this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));
|
||||
|
||||
this.$targets.each(function(){
|
||||
var $tar = $(this),
|
||||
pt = $tar.offset().top; // Math.round($tar.offset().top - _this.options.threshold);
|
||||
$tar.targetPoint = pt;
|
||||
_this.points.push(pt);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Initializes events for Traverse.
|
||||
* @private
|
||||
*/
|
||||
Traverse.prototype._events = function() {
|
||||
var _this = this,
|
||||
$body = $('html, body'),
|
||||
opts = {
|
||||
duration: _this.options.animationDuration,
|
||||
easing: _this.options.animationEasing
|
||||
};
|
||||
|
||||
$(window).one('load', function(){
|
||||
_this.calcPoints();
|
||||
_this._updateActive();
|
||||
|
||||
$(this).resize(function(e) {
|
||||
_this.reflow();
|
||||
}).scroll(function(e) {
|
||||
_this._updateActive();
|
||||
});
|
||||
})
|
||||
|
||||
this.$element.on('click', 'a[href^="#"]', function(e) { //'click.zf.traverse'
|
||||
e.preventDefault();
|
||||
var arrival = this.getAttribute('href').replace(".", "\\."),
|
||||
scrollPos = $(arrival).offset().top - _this.options.barOffset; // - _this.options.threshold / 2 - _this.options.barOffset;
|
||||
|
||||
$body.stop(true).animate({
|
||||
scrollTop: scrollPos
|
||||
}, opts);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Calls necessary functions to update Traverse upon DOM change
|
||||
* @function
|
||||
*/
|
||||
Traverse.prototype.reflow = function(){
|
||||
this.calcPoints();
|
||||
this._updateActive();
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates the visibility of an active location link,
|
||||
* and updates the url hash for the page, if deepLinking enabled.
|
||||
* @private
|
||||
* @function
|
||||
* @fires Traverse#update
|
||||
*/
|
||||
Traverse.prototype._updateActive = function(){
|
||||
var winPos = parseInt(window.pageYOffset, 10),
|
||||
curIdx;
|
||||
|
||||
if(winPos + this.winHeight === this.docHeight){ curIdx = this.points.length - 1; }
|
||||
else if(winPos < this.points[0]){ curIdx = 0; }
|
||||
else{
|
||||
var isDown = this.scrollPos < winPos,
|
||||
_this = this,
|
||||
curVisible = this.points.filter(function(p, i){
|
||||
return isDown ?
|
||||
p <= (winPos + _this.options.barOffset + _this.options.threshold) :
|
||||
(p - (_this.options.barOffset + _this.options.threshold)) <= winPos;
|
||||
// p <= (winPos - (offset - _this.options.threshold)) :
|
||||
// (p - (-offset + _this.options.threshold)) <= winPos;
|
||||
});
|
||||
curIdx = curVisible.length ? curVisible.length - 1 : 0;
|
||||
}
|
||||
|
||||
var $prev = this.$active;
|
||||
var $next = this.$links.eq(curIdx);
|
||||
this.$active.removeClass(this.options.activeClass);
|
||||
this.$active = $next.addClass(this.options.activeClass);
|
||||
|
||||
if(this.options.deepLinking){
|
||||
var hash = this.$active[0].getAttribute('href');
|
||||
if(window.history.pushState){
|
||||
window.history.pushState(null, null, hash);
|
||||
}else{
|
||||
window.location.hash = hash;
|
||||
}
|
||||
}
|
||||
|
||||
this.scrollPos = winPos;
|
||||
|
||||
// Fire event if the active element was changed
|
||||
var changed = $prev[0] !== $next[0];
|
||||
if (changed) {
|
||||
this.$element.trigger('update.traverse', [this.$active]);
|
||||
}
|
||||
};
|
1
support/doc/api/html/javascripts/spectacle.min.js
vendored
Normal file
1
support/doc/api/html/javascripts/spectacle.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
function Traverse(a,b){this.$element=a,this.options=$.extend({},Traverse.defaults,this.$element.data(),b),this._init()}$(function(){var a=$("#sidebar");if(a.length){var b=($("#docs"),a.find("nav"));new Traverse(b,{threshold:10,barOffset:a.position().top});b.on("update.traverse",function(a,c){b.find("section").removeClass("expand");var d=c.parents("section:first");d.length&&d.addClass("expand")});var c=$(".drawer-layout"),d=c.find(".drawer"),e=function(){return d.removeClass("slide-right slide-left"),d.find(".drawer-overlay").remove(),c.removeClass("drawer-open drawer-slide-left-large drawer-slide-right-large"),!1};c.find("[data-drawer-slide]").click(function(a){var b=$(this),f=b.data("drawer-slide");c.addClass("drawer-open"),d.addClass("slide-"+f);var g=$('<a href="#" class="drawer-overlay"></a>');return d.append(g),g.click(e),!1}),c.find("[data-drawer-close]").click(e)}}),Traverse.defaults={animationDuration:500,animationEasing:"linear",threshold:50,activeClass:"active",deepLinking:!1,barOffset:0},Traverse.prototype._init=function(){var a=this.$element[0].id;this.$targets=$("[data-traverse-target]"),this.$links=this.$element.find("a"),this.$element.attr({"data-resize":a,"data-scroll":a,id:a}),this.$active=$(),this.scrollPos=parseInt(window.pageYOffset,10),this._events()},Traverse.prototype.calcPoints=function(){var a=this,b=document.body,c=document.documentElement;this.points=[],this.winHeight=Math.round(Math.max(window.innerHeight,c.clientHeight)),this.docHeight=Math.round(Math.max(b.scrollHeight,b.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight)),this.$targets.each(function(){var b=$(this),c=b.offset().top;b.targetPoint=c,a.points.push(c)})},Traverse.prototype._events=function(){var a=this,b=$("html, body"),c={duration:a.options.animationDuration,easing:a.options.animationEasing};$(window).one("load",function(){a.calcPoints(),a._updateActive(),$(this).resize(function(b){a.reflow()}).scroll(function(b){a._updateActive()})}),this.$element.on("click",'a[href^="#"]',function(d){d.preventDefault();var e=this.getAttribute("href").replace(".","\\."),f=$(e).offset().top-a.options.barOffset;b.stop(!0).animate({scrollTop:f},c)})},Traverse.prototype.reflow=function(){this.calcPoints(),this._updateActive()},Traverse.prototype._updateActive=function(){var a,b=parseInt(window.pageYOffset,10);if(b+this.winHeight===this.docHeight)a=this.points.length-1;else if(b<this.points[0])a=0;else{var c=this.scrollPos<b,d=this,e=this.points.filter(function(a,e){return c?a<=b+d.options.barOffset+d.options.threshold:a-(d.options.barOffset+d.options.threshold)<=b});a=e.length?e.length-1:0}var f=this.$active,g=this.$links.eq(a);if(this.$active.removeClass(this.options.activeClass),this.$active=g.addClass(this.options.activeClass),this.options.deepLinking){var h=this.$active[0].getAttribute("href");window.history.pushState?window.history.pushState(null,null,h):window.location.hash=h}this.scrollPos=b;var i=f[0]!==g[0];i&&this.$element.trigger("update.traverse",[this.$active])};
|
2278
support/doc/api/html/stylesheets/foundation.css
vendored
Normal file
2278
support/doc/api/html/stylesheets/foundation.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
support/doc/api/html/stylesheets/foundation.min.css
vendored
Normal file
1
support/doc/api/html/stylesheets/foundation.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1335
support/doc/api/html/stylesheets/spectacle.css
Normal file
1335
support/doc/api/html/stylesheets/spectacle.css
Normal file
File diff suppressed because it is too large
Load diff
1
support/doc/api/html/stylesheets/spectacle.min.css
vendored
Normal file
1
support/doc/api/html/stylesheets/spectacle.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
|||
swagger: '2.0'
|
||||
info:
|
||||
title: peertube
|
||||
version: 0.0.13-alpha
|
||||
title: PeerTube
|
||||
version: 0.0.15-alpha
|
||||
description: Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.
|
||||
paths:
|
||||
'/accounts/{id}':
|
||||
|
@ -731,6 +731,10 @@ paths:
|
|||
responses:
|
||||
'200':
|
||||
description: successful operation
|
||||
schema:
|
||||
items:
|
||||
type: array
|
||||
$ref: '#/definitions/VideoComment'
|
||||
post:
|
||||
tags:
|
||||
- VideoComment
|
||||
|
@ -769,6 +773,8 @@ paths:
|
|||
responses:
|
||||
'200':
|
||||
description: successful operation
|
||||
schema:
|
||||
$ref: '#/definitions/VideoCommentThreadTree'
|
||||
"/video/{videoId}/comments/{commentId}":
|
||||
post:
|
||||
tags:
|
||||
|
@ -963,6 +969,14 @@ definitions:
|
|||
type: number
|
||||
account:
|
||||
$ref: "#/definitions/Account"
|
||||
VideoCommentThreadTree:
|
||||
properties:
|
||||
comment:
|
||||
$ref: "#/definitions/VideoComment"
|
||||
children:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/definitions/VideoCommentThreadTree"
|
||||
Avatar:
|
||||
properties:
|
||||
path:
|
||||
|
|
Loading…
Reference in a new issue