# All files / src/lib/markdown-it/plugins/markdown-it-block-embed/services VineService.ts

100% Statements 9/9
75% Branches 3/4
100% Functions 3/3
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36

    22x

    22x

    35x

    2x
    2x

    2x
    2x
    2x

    22x
     // Copyright (c) Rotorz Limited and portions by original markdown-it-video authors
    // Licensed under the MIT license. See LICENSE file in the project root.

    import VideoServiceBase, { VideoServiceOptions } from './VideoServiceBase';

    export interface VineOptions extends VideoServiceOptions {
      width?: number;
      height?: number;
      /**
       * The type of vine embed (e.g., 'simple').
       */
      embed?: string;
    }

    export default class VineService extends VideoServiceBase {

      getDefaultOptions(): VineOptions {
        return { width: 600, height: 600, embed: "simple" };
      }

      extractVideoID(reference: string): string {
        let match = reference.match(/^http(?:s?):\/\/(?:www\.)?vine\.co\/v\/([a-zA-Z0-9]{1,13}).*/);
        return match && match[1].length === 11 ? match[1] : reference;
      }

      getVideoUrl(videoID: string): string {
        let escapedVideoID = this.env.md.utils.escapeHtml(videoID);
        let escapedEmbed = this.env.md.utils.escapeHtml(this.options.embed);
        return `//vine.co/v/${escapedVideoID}/embed/${escapedEmbed}`;
      }

    }

    module.exports = VineService;