ApplicationFollow -> SeverFollow
This commit is contained in:
parent
21e0727a84
commit
4610bc5b12
|
@ -13,7 +13,7 @@ export const FollowsRoutes: Routes = [
|
||||||
component: FollowsComponent,
|
component: FollowsComponent,
|
||||||
canActivate: [ UserRightGuard ],
|
canActivate: [ UserRightGuard ],
|
||||||
data: {
|
data: {
|
||||||
userRight: UserRight.MANAGE_APPLICATION_FOLLOW
|
userRight: UserRight.MANAGE_SERVER_FOLLOW
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,7 +11,7 @@ import { AccountFollow, ResultList } from '../../../../../../shared'
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FollowService {
|
export class FollowService {
|
||||||
private static BASE_APPLICATION_URL = API_URL + '/api/v1/application'
|
private static BASE_APPLICATION_URL = API_URL + '/api/v1/server'
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
private authHttp: HttpClient,
|
private authHttp: HttpClient,
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
List users
|
List users
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a *ngIf="hasApplicationFollowRight()" routerLink="/admin/follows" routerLinkActive="active">
|
<a *ngIf="hasServerFollowRight()" routerLink="/admin/follows" routerLinkActive="active">
|
||||||
<span class="hidden-xs glyphicon glyphicon-cloud"></span>
|
<span class="hidden-xs glyphicon glyphicon-cloud"></span>
|
||||||
Manage follows
|
Manage follows
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -15,8 +15,8 @@ export class MenuAdminComponent {
|
||||||
return this.auth.getUser().hasRight(UserRight.MANAGE_USERS)
|
return this.auth.getUser().hasRight(UserRight.MANAGE_USERS)
|
||||||
}
|
}
|
||||||
|
|
||||||
hasApplicationFollowRight () {
|
hasServerFollowRight () {
|
||||||
return this.auth.getUser().hasRight(UserRight.MANAGE_APPLICATION_FOLLOW)
|
return this.auth.getUser().hasRight(UserRight.MANAGE_SERVER_FOLLOW)
|
||||||
}
|
}
|
||||||
|
|
||||||
hasVideoAbusesRight () {
|
hasVideoAbusesRight () {
|
||||||
|
|
|
@ -16,7 +16,7 @@ export class MenuComponent implements OnInit {
|
||||||
|
|
||||||
private routesPerRight = {
|
private routesPerRight = {
|
||||||
[UserRight.MANAGE_USERS]: '/admin/users',
|
[UserRight.MANAGE_USERS]: '/admin/users',
|
||||||
[UserRight.MANAGE_APPLICATION_FOLLOW]: '/admin/friends',
|
[UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends',
|
||||||
[UserRight.MANAGE_VIDEO_ABUSES]: '/admin/video-abuses',
|
[UserRight.MANAGE_VIDEO_ABUSES]: '/admin/video-abuses',
|
||||||
[UserRight.MANAGE_VIDEO_BLACKLIST]: '/admin/video-blacklist'
|
[UserRight.MANAGE_VIDEO_BLACKLIST]: '/admin/video-blacklist'
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ export class MenuComponent implements OnInit {
|
||||||
|
|
||||||
const adminRights = [
|
const adminRights = [
|
||||||
UserRight.MANAGE_USERS,
|
UserRight.MANAGE_USERS,
|
||||||
UserRight.MANAGE_APPLICATION_FOLLOW,
|
UserRight.MANAGE_SERVER_FOLLOW,
|
||||||
UserRight.MANAGE_VIDEO_ABUSES,
|
UserRight.MANAGE_VIDEO_ABUSES,
|
||||||
UserRight.MANAGE_VIDEO_BLACKLIST
|
UserRight.MANAGE_VIDEO_BLACKLIST
|
||||||
]
|
]
|
||||||
|
|
|
@ -4,13 +4,13 @@ import { badRequest } from '../../helpers'
|
||||||
|
|
||||||
import { oauthClientsRouter } from './oauth-clients'
|
import { oauthClientsRouter } from './oauth-clients'
|
||||||
import { configRouter } from './config'
|
import { configRouter } from './config'
|
||||||
import { applicationRouter } from './server'
|
import { serverRouter } from './server'
|
||||||
import { usersRouter } from './users'
|
import { usersRouter } from './users'
|
||||||
import { videosRouter } from './videos'
|
import { videosRouter } from './videos'
|
||||||
|
|
||||||
const apiRouter = express.Router()
|
const apiRouter = express.Router()
|
||||||
|
|
||||||
apiRouter.use('/application', applicationRouter)
|
apiRouter.use('/server', serverRouter)
|
||||||
apiRouter.use('/oauth-clients', oauthClientsRouter)
|
apiRouter.use('/oauth-clients', oauthClientsRouter)
|
||||||
apiRouter.use('/config', configRouter)
|
apiRouter.use('/config', configRouter)
|
||||||
apiRouter.use('/users', usersRouter)
|
apiRouter.use('/users', usersRouter)
|
||||||
|
|
|
@ -15,9 +15,9 @@ import { ensureUserHasRight } from '../../../middlewares/user-right'
|
||||||
import { followValidator } from '../../../middlewares/validators/servers'
|
import { followValidator } from '../../../middlewares/validators/servers'
|
||||||
import { followersSortValidator, followingSortValidator } from '../../../middlewares/validators/sort'
|
import { followersSortValidator, followingSortValidator } from '../../../middlewares/validators/sort'
|
||||||
|
|
||||||
const applicationFollowsRouter = express.Router()
|
const serverFollowsRouter = express.Router()
|
||||||
|
|
||||||
applicationFollowsRouter.get('/following',
|
serverFollowsRouter.get('/following',
|
||||||
paginationValidator,
|
paginationValidator,
|
||||||
followingSortValidator,
|
followingSortValidator,
|
||||||
setFollowingSort,
|
setFollowingSort,
|
||||||
|
@ -25,15 +25,15 @@ applicationFollowsRouter.get('/following',
|
||||||
asyncMiddleware(listFollowing)
|
asyncMiddleware(listFollowing)
|
||||||
)
|
)
|
||||||
|
|
||||||
applicationFollowsRouter.post('/follow',
|
serverFollowsRouter.post('/follow',
|
||||||
authenticate,
|
authenticate,
|
||||||
ensureUserHasRight(UserRight.MANAGE_APPLICATION_FOLLOW),
|
ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW),
|
||||||
followValidator,
|
followValidator,
|
||||||
setBodyHostsPort,
|
setBodyHostsPort,
|
||||||
asyncMiddleware(follow)
|
asyncMiddleware(follow)
|
||||||
)
|
)
|
||||||
|
|
||||||
applicationFollowsRouter.get('/followers',
|
serverFollowsRouter.get('/followers',
|
||||||
paginationValidator,
|
paginationValidator,
|
||||||
followersSortValidator,
|
followersSortValidator,
|
||||||
setFollowersSort,
|
setFollowersSort,
|
||||||
|
@ -44,21 +44,21 @@ applicationFollowsRouter.get('/followers',
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
export {
|
export {
|
||||||
applicationFollowsRouter
|
serverFollowsRouter
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) {
|
async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||||
const applicationAccount = await getServerAccount()
|
const serverAccount = await getServerAccount()
|
||||||
const resultList = await db.AccountFollow.listFollowingForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort)
|
const resultList = await db.AccountFollow.listFollowingForApi(serverAccount.id, req.query.start, req.query.count, req.query.sort)
|
||||||
|
|
||||||
return res.json(getFormattedObjects(resultList.data, resultList.total))
|
return res.json(getFormattedObjects(resultList.data, resultList.total))
|
||||||
}
|
}
|
||||||
|
|
||||||
async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) {
|
async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||||
const applicationAccount = await getServerAccount()
|
const serverAccount = await getServerAccount()
|
||||||
const resultList = await db.AccountFollow.listFollowersForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort)
|
const resultList = await db.AccountFollow.listFollowersForApi(serverAccount.id, req.query.start, req.query.count, req.query.sort)
|
||||||
|
|
||||||
return res.json(getFormattedObjects(resultList.data, resultList.total))
|
return res.json(getFormattedObjects(resultList.data, resultList.total))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import * as express from 'express'
|
import * as express from 'express'
|
||||||
import { applicationFollowsRouter } from './follows'
|
import { serverFollowsRouter } from './follows'
|
||||||
|
|
||||||
const applicationRouter = express.Router()
|
const serverRouter = express.Router()
|
||||||
|
|
||||||
applicationRouter.use('/', applicationFollowsRouter)
|
serverRouter.use('/', serverFollowsRouter)
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
export {
|
export {
|
||||||
applicationRouter
|
serverRouter
|
||||||
}
|
}
|
||||||
|
|
|
@ -322,7 +322,7 @@ const OPENGRAPH_AND_OEMBED_COMMENT = '<!-- open graph and oembed tags -->'
|
||||||
if (isTestInstance() === true) {
|
if (isTestInstance() === true) {
|
||||||
CONSTRAINTS_FIELDS.VIDEOS.DURATION.max = 14
|
CONSTRAINTS_FIELDS.VIDEOS.DURATION.max = 14
|
||||||
FRIEND_SCORE.BASE = 20
|
FRIEND_SCORE.BASE = 20
|
||||||
JOBS_FETCHING_INTERVAL = 10000
|
JOBS_FETCHING_INTERVAL = 2000
|
||||||
REMOTE_SCHEME.HTTP = 'http'
|
REMOTE_SCHEME.HTTP = 'http'
|
||||||
REMOTE_SCHEME.WS = 'ws'
|
REMOTE_SCHEME.WS = 'ws'
|
||||||
STATIC_MAX_AGE = '0'
|
STATIC_MAX_AGE = '0'
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
import * as request from 'supertest'
|
||||||
|
|
||||||
|
import { wait } from './miscs'
|
||||||
|
|
||||||
|
function getFollowersListPaginationAndSort (url: string, start: number, count: number, sort: string) {
|
||||||
|
const path = '/api/v1/servers/followers'
|
||||||
|
|
||||||
|
return request(url)
|
||||||
|
.get(path)
|
||||||
|
.query({ start })
|
||||||
|
.query({ count })
|
||||||
|
.query({ sort })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFollowingListPaginationAndSort (url: string, start: number, count: number, sort: string) {
|
||||||
|
const path = '/api/v1/servers/following'
|
||||||
|
|
||||||
|
return request(url)
|
||||||
|
.get(path)
|
||||||
|
.query({ start })
|
||||||
|
.query({ count })
|
||||||
|
.query({ sort })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function follow (follower: string, following: string[], accessToken: string, expectedStatus = 204) {
|
||||||
|
const path = '/api/v1/servers/follow'
|
||||||
|
|
||||||
|
const res = await request(follower)
|
||||||
|
.post(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.send({ 'hosts': following })
|
||||||
|
.expect(expectedStatus)
|
||||||
|
|
||||||
|
// Wait request propagation
|
||||||
|
await wait(1000)
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
export {
|
||||||
|
getFollowersListPaginationAndSort,
|
||||||
|
getFollowingListPaginationAndSort,
|
||||||
|
follow
|
||||||
|
}
|
|
@ -1,103 +0,0 @@
|
||||||
import * as request from 'supertest'
|
|
||||||
|
|
||||||
import { wait } from './miscs'
|
|
||||||
|
|
||||||
function getFriendsList (url: string) {
|
|
||||||
const path = '/api/v1/pods/'
|
|
||||||
|
|
||||||
return request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getPodsListPaginationAndSort (url: string, start: number, count: number, sort: string) {
|
|
||||||
const path = '/api/v1/pods/'
|
|
||||||
|
|
||||||
return request(url)
|
|
||||||
.get(path)
|
|
||||||
.query({ start })
|
|
||||||
.query({ count })
|
|
||||||
.query({ sort })
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
}
|
|
||||||
|
|
||||||
async function makeFriends (url: string, accessToken: string, expectedStatus = 204) {
|
|
||||||
// Which pod makes friends with which pod
|
|
||||||
const friendsMatrix = {
|
|
||||||
'http://localhost:9001': [
|
|
||||||
'localhost:9002'
|
|
||||||
],
|
|
||||||
'http://localhost:9002': [
|
|
||||||
'localhost:9003'
|
|
||||||
],
|
|
||||||
'http://localhost:9003': [
|
|
||||||
'localhost:9001'
|
|
||||||
],
|
|
||||||
'http://localhost:9004': [
|
|
||||||
'localhost:9002'
|
|
||||||
],
|
|
||||||
'http://localhost:9005': [
|
|
||||||
'localhost:9001',
|
|
||||||
'localhost:9004'
|
|
||||||
],
|
|
||||||
'http://localhost:9006': [
|
|
||||||
'localhost:9001',
|
|
||||||
'localhost:9002',
|
|
||||||
'localhost:9003'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
const path = '/api/v1/pods/make-friends'
|
|
||||||
|
|
||||||
// The first pod make friend with the third
|
|
||||||
const res = await request(url)
|
|
||||||
.post(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.send({ 'hosts': friendsMatrix[url] })
|
|
||||||
.expect(expectedStatus)
|
|
||||||
|
|
||||||
// Wait request propagation
|
|
||||||
await wait(1000)
|
|
||||||
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
async function quitFriends (url: string, accessToken: string, expectedStatus = 204) {
|
|
||||||
const path = '/api/v1/pods/quit-friends'
|
|
||||||
|
|
||||||
// The first pod make friend with the third
|
|
||||||
const res = await request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.expect(expectedStatus)
|
|
||||||
|
|
||||||
// Wait request propagation
|
|
||||||
await wait(1000)
|
|
||||||
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
function quitOneFriend (url: string, accessToken: string, friendId: number, expectedStatus = 204) {
|
|
||||||
const path = '/api/v1/pods/' + friendId
|
|
||||||
|
|
||||||
return request(url)
|
|
||||||
.delete(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.expect(expectedStatus)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
export {
|
|
||||||
getFriendsList,
|
|
||||||
makeFriends,
|
|
||||||
quitFriends,
|
|
||||||
quitOneFriend,
|
|
||||||
getPodsListPaginationAndSort
|
|
||||||
}
|
|
|
@ -1,7 +1,7 @@
|
||||||
export enum UserRight {
|
export enum UserRight {
|
||||||
ALL,
|
ALL,
|
||||||
MANAGE_USERS,
|
MANAGE_USERS,
|
||||||
MANAGE_APPLICATION_FOLLOW,
|
MANAGE_SERVER_FOLLOW,
|
||||||
MANAGE_VIDEO_ABUSES,
|
MANAGE_VIDEO_ABUSES,
|
||||||
MANAGE_VIDEO_BLACKLIST,
|
MANAGE_VIDEO_BLACKLIST,
|
||||||
REMOVE_ANY_VIDEO,
|
REMOVE_ANY_VIDEO,
|
||||||
|
|
Loading…
Reference in New Issue