mirror of https://github.com/Chocobozzz/PeerTube
Add api doc in html
parent
9ee83eb99e
commit
5e1c08eb94
|
@ -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",
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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]);
|
||||
}
|
||||
};
|
|
@ -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])};
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
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 New Issue