Sha256: 85c92d6e0b7be66bd6574de2e51b7da275a0f04c6c3190260a102cadec16e2ab

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

module Workarea
  module Storefront
    class VideoEmbedder
      class Vimeo
        def initialize(embed_code, options = {})
          @embed_code = embed_code
          @options = options
        end

        def attrs
          {
            id: vimeo_id,
            src: "#{url}?#{url_params}",
            webkitallowfullscreen: '',
            mozallowfullscreen: '',
            data: {
              vimeo_api: {
                player_id: vimeo_id,
                mute: @options[:mute]
              }.to_json
            }
          }
        end

        def url_params
          parsed_query = Rack::Utils.parse_query(uri.query)
          parsed_query['api'] = 1
          parsed_query['autoplay'] = @options[:autoplay]
          parsed_query['loop'] = @options[:loop_playback]
          parsed_query['player_id'] = vimeo_id
          uri.query = URI.encode_www_form(parsed_query)
        end

        private

          def vimeo_id
            uri.path.split('/').last
          end

          def url
            @url ||= @embed_code.attribute('src').value
          end

          def uri
            URI.parse(url)
          end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
workarea-super_hero-2.3.0 app/services/workarea/storefront/video_embedder/vimeo.rb
workarea-super_hero-2.2.2 app/services/workarea/storefront/video_embedder/vimeo.rb
workarea-super_hero-2.2.1 app/services/workarea/storefront/video_embedder/vimeo.rb