diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-11-16 17:04:19 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-11-27 19:40:52 +0100 |
commit | 21e0727a84734cb0c81c1c9bb22a49b13e46fe5f (patch) | |
tree | 088da51cadbffe3ac64414b407e161f58b53bde7 /server/models/video | |
parent | d7d5611c8a23de9b483f0437ad3469afef7b8805 (diff) | |
download | PeerTube-21e0727a84734cb0c81c1c9bb22a49b13e46fe5f.tar.gz PeerTube-21e0727a84734cb0c81c1c9bb22a49b13e46fe5f.tar.zst PeerTube-21e0727a84734cb0c81c1c9bb22a49b13e46fe5f.zip |
Federate video abuses
Diffstat (limited to 'server/models/video')
-rw-r--r-- | server/models/video/video-abuse-interface.ts | 3 | ||||
-rw-r--r-- | server/models/video/video-abuse.ts | 15 | ||||
-rw-r--r-- | server/models/video/video.ts | 4 |
3 files changed, 19 insertions, 3 deletions
diff --git a/server/models/video/video-abuse-interface.ts b/server/models/video/video-abuse-interface.ts index 96f0fbe4a..feafc4a19 100644 --- a/server/models/video/video-abuse-interface.ts +++ b/server/models/video/video-abuse-interface.ts | |||
@@ -5,15 +5,18 @@ import { VideoAbuse as FormattedVideoAbuse } from '../../../shared/models/videos | |||
5 | import { AccountInstance } from '../account/account-interface' | 5 | import { AccountInstance } from '../account/account-interface' |
6 | import { ServerInstance } from '../server/server-interface' | 6 | import { ServerInstance } from '../server/server-interface' |
7 | import { VideoInstance } from './video-interface' | 7 | import { VideoInstance } from './video-interface' |
8 | import { VideoAbuseObject } from '../../../shared/models/activitypub/objects/video-abuse-object' | ||
8 | 9 | ||
9 | export namespace VideoAbuseMethods { | 10 | export namespace VideoAbuseMethods { |
10 | export type ToFormattedJSON = (this: VideoAbuseInstance) => FormattedVideoAbuse | 11 | export type ToFormattedJSON = (this: VideoAbuseInstance) => FormattedVideoAbuse |
11 | 12 | ||
12 | export type ListForApi = (start: number, count: number, sort: string) => Promise< ResultList<VideoAbuseInstance> > | 13 | export type ListForApi = (start: number, count: number, sort: string) => Promise< ResultList<VideoAbuseInstance> > |
14 | export type ToActivityPubObject = () => VideoAbuseObject | ||
13 | } | 15 | } |
14 | 16 | ||
15 | export interface VideoAbuseClass { | 17 | export interface VideoAbuseClass { |
16 | listForApi: VideoAbuseMethods.ListForApi | 18 | listForApi: VideoAbuseMethods.ListForApi |
19 | toActivityPubObject: VideoAbuseMethods.ToActivityPubObject | ||
17 | } | 20 | } |
18 | 21 | ||
19 | export interface VideoAbuseAttributes { | 22 | export interface VideoAbuseAttributes { |
diff --git a/server/models/video/video-abuse.ts b/server/models/video/video-abuse.ts index f3fdeab52..e8f4f9a67 100644 --- a/server/models/video/video-abuse.ts +++ b/server/models/video/video-abuse.ts | |||
@@ -10,10 +10,12 @@ import { | |||
10 | 10 | ||
11 | VideoAbuseMethods | 11 | VideoAbuseMethods |
12 | } from './video-abuse-interface' | 12 | } from './video-abuse-interface' |
13 | import { VideoAbuseObject } from '../../../shared/models/activitypub/objects/video-abuse-object' | ||
13 | 14 | ||
14 | let VideoAbuse: Sequelize.Model<VideoAbuseInstance, VideoAbuseAttributes> | 15 | let VideoAbuse: Sequelize.Model<VideoAbuseInstance, VideoAbuseAttributes> |
15 | let toFormattedJSON: VideoAbuseMethods.ToFormattedJSON | 16 | let toFormattedJSON: VideoAbuseMethods.ToFormattedJSON |
16 | let listForApi: VideoAbuseMethods.ListForApi | 17 | let listForApi: VideoAbuseMethods.ListForApi |
18 | let toActivityPubObject: VideoAbuseMethods.ToActivityPubObject | ||
17 | 19 | ||
18 | export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { | 20 | export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { |
19 | VideoAbuse = sequelize.define<VideoAbuseInstance, VideoAbuseAttributes>('VideoAbuse', | 21 | VideoAbuse = sequelize.define<VideoAbuseInstance, VideoAbuseAttributes>('VideoAbuse', |
@@ -47,7 +49,8 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da | |||
47 | listForApi | 49 | listForApi |
48 | ] | 50 | ] |
49 | const instanceMethods = [ | 51 | const instanceMethods = [ |
50 | toFormattedJSON | 52 | toFormattedJSON, |
53 | toActivityPubObject | ||
51 | ] | 54 | ] |
52 | addMethodsToModel(VideoAbuse, classMethods, instanceMethods) | 55 | addMethodsToModel(VideoAbuse, classMethods, instanceMethods) |
53 | 56 | ||
@@ -80,6 +83,16 @@ toFormattedJSON = function (this: VideoAbuseInstance) { | |||
80 | return json | 83 | return json |
81 | } | 84 | } |
82 | 85 | ||
86 | toActivityPubObject = function (this: VideoAbuseInstance) { | ||
87 | const videoAbuseObject: VideoAbuseObject = { | ||
88 | type: 'Flag' as 'Flag', | ||
89 | content: this.reason, | ||
90 | object: this.Video.url | ||
91 | } | ||
92 | |||
93 | return videoAbuseObject | ||
94 | } | ||
95 | |||
83 | // ------------------------------ STATICS ------------------------------ | 96 | // ------------------------------ STATICS ------------------------------ |
84 | 97 | ||
85 | function associate (models) { | 98 | function associate (models) { |
diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 5b0377c2e..5fb254b2d 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts | |||
@@ -26,6 +26,7 @@ import { | |||
26 | unlinkPromise, | 26 | unlinkPromise, |
27 | writeFilePromise | 27 | writeFilePromise |
28 | } from '../../helpers' | 28 | } from '../../helpers' |
29 | import { isVideoUrlValid } from '../../helpers/custom-validators/videos' | ||
29 | import { | 30 | import { |
30 | API_VERSION, | 31 | API_VERSION, |
31 | CONFIG, | 32 | CONFIG, |
@@ -39,14 +40,13 @@ import { | |||
39 | VIDEO_LICENCES, | 40 | VIDEO_LICENCES, |
40 | VIDEO_PRIVACIES | 41 | VIDEO_PRIVACIES |
41 | } from '../../initializers' | 42 | } from '../../initializers' |
43 | import { sendDeleteVideo } from '../../lib/activitypub/send-request' | ||
42 | 44 | ||
43 | import { addMethodsToModel, getSort } from '../utils' | 45 | import { addMethodsToModel, getSort } from '../utils' |
44 | 46 | ||
45 | import { TagInstance } from './tag-interface' | 47 | import { TagInstance } from './tag-interface' |
46 | import { VideoFileInstance, VideoFileModel } from './video-file-interface' | 48 | import { VideoFileInstance, VideoFileModel } from './video-file-interface' |
47 | import { VideoAttributes, VideoInstance, VideoMethods } from './video-interface' | 49 | import { VideoAttributes, VideoInstance, VideoMethods } from './video-interface' |
48 | import { sendDeleteVideo } from '../../lib/activitypub/send-request' | ||
49 | import { isVideoUrlValid } from '../../helpers/custom-validators/videos' | ||
50 | 50 | ||
51 | const Buffer = safeBuffer.Buffer | 51 | const Buffer = safeBuffer.Buffer |
52 | 52 | ||