onebox 1.9.24 → 1.9.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.github/workflows/ci.yml +39 -0
 - data/lib/onebox/engine/amazon_onebox.rb +1 -1
 - data/lib/onebox/engine/cloudapp_onebox.rb +3 -3
 - data/lib/onebox/engine/github_blob_onebox.rb +1 -1
 - data/lib/onebox/engine/gitlab_blob_onebox.rb +1 -1
 - data/lib/onebox/helpers.rb +23 -47
 - data/lib/onebox/version.rb +1 -1
 - data/onebox.gemspec +2 -1
 - data/templates/instagram.mustache +3 -3
 - metadata +20 -6
 - data/.travis.yml +0 -17
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 6261462665816f1ed15b3da351e0fa160342038955023b1548be3af10ebd3a96
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 70174996ce5669ff406f2970bec253112dadcfababe3caeaa4f35f615379629c
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: e120c498fc253c6863a6437282d5d922c6a89e6c23b59144441326c1c2f4bcf1ab33a215873e07a6d7bd2a6b51d32ac6b7ad592e58b3bb6798e44e1cf07c30cd
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: d245616280be4f55c0a245a7466aef9a7290cd48b7abec83a2120c664dc8ed1e117cbd02226fa4c0c6bb49ccb5250dd5e3e5e6161cbb4c78fb41858a37961438
         
     | 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: CI
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on:
         
     | 
| 
      
 4 
     | 
    
         
            +
              pull_request:
         
     | 
| 
      
 5 
     | 
    
         
            +
              push:
         
     | 
| 
      
 6 
     | 
    
         
            +
                branches:
         
     | 
| 
      
 7 
     | 
    
         
            +
                  - master
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 10 
     | 
    
         
            +
              build:
         
     | 
| 
      
 11 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                strategy:
         
     | 
| 
      
 14 
     | 
    
         
            +
                  matrix:
         
     | 
| 
      
 15 
     | 
    
         
            +
                    ruby:
         
     | 
| 
      
 16 
     | 
    
         
            +
                      - 2.4
         
     | 
| 
      
 17 
     | 
    
         
            +
                      - 2.5
         
     | 
| 
      
 18 
     | 
    
         
            +
                      - 2.6
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - uses: actions/checkout@v1
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  - name: Setup ruby
         
     | 
| 
      
 24 
     | 
    
         
            +
                    uses: actions/setup-ruby@v1
         
     | 
| 
      
 25 
     | 
    
         
            +
                    with:
         
     | 
| 
      
 26 
     | 
    
         
            +
                      ruby-version: ${{ matrix.ruby }}
         
     | 
| 
      
 27 
     | 
    
         
            +
                      architecture: 'x64'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  - name: Setup bundler
         
     | 
| 
      
 30 
     | 
    
         
            +
                    run: gem install bundler
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  - name: Setup gems
         
     | 
| 
      
 33 
     | 
    
         
            +
                    run: bundle install
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  - name: Rubocop
         
     | 
| 
      
 36 
     | 
    
         
            +
                    run: bundle exec rubocop
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  - name: RSpec
         
     | 
| 
      
 39 
     | 
    
         
            +
                    run: bundle exec rspec
         
     | 
| 
         @@ -13,11 +13,11 @@ module Onebox 
     | 
|
| 
       13 
13 
     | 
    
         
             
                    og = get_opengraph
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
                    if !og.image.nil?
         
     | 
| 
       16 
     | 
    
         
            -
                       
     | 
| 
      
 16 
     | 
    
         
            +
                      image_html(og)
         
     | 
| 
       17 
17 
     | 
    
         
             
                    elsif og.title.to_s[/\.(mp4|ogv|webm)$/]
         
     | 
| 
       18 
     | 
    
         
            -
                       
     | 
| 
      
 18 
     | 
    
         
            +
                      video_html(og)
         
     | 
| 
       19 
19 
     | 
    
         
             
                    else
         
     | 
| 
       20 
     | 
    
         
            -
                       
     | 
| 
      
 20 
     | 
    
         
            +
                      link_html(og)
         
     | 
| 
       21 
21 
     | 
    
         
             
                    end
         
     | 
| 
       22 
22 
     | 
    
         
             
                  end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
         @@ -20,7 +20,7 @@ module Onebox 
     | 
|
| 
       20 
20 
     | 
    
         
             
                    "https://raw.githubusercontent.com/#{m[:user]}/#{m[:repo]}/#{m[:sha1]}/#{m[:file]}"
         
     | 
| 
       21 
21 
     | 
    
         
             
                  end
         
     | 
| 
       22 
22 
     | 
    
         
             
                  def title
         
     | 
| 
       23 
     | 
    
         
            -
                    Sanitize.fragment( 
     | 
| 
      
 23 
     | 
    
         
            +
                    Sanitize.fragment(Onebox::Helpers.uri_unencode(link).sub(/^https?\:\/\/github\.com\//, ''))
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         
             
                end
         
     | 
| 
       26 
26 
     | 
    
         
             
              end
         
     | 
| 
         @@ -20,7 +20,7 @@ module Onebox 
     | 
|
| 
       20 
20 
     | 
    
         
             
                    "https://gitlab.com/#{m[:user]}/#{m[:repo]}/raw/#{m[:sha1]}/#{m[:file]}"
         
     | 
| 
       21 
21 
     | 
    
         
             
                  end
         
     | 
| 
       22 
22 
     | 
    
         
             
                  def title
         
     | 
| 
       23 
     | 
    
         
            -
                    Sanitize.fragment( 
     | 
| 
      
 23 
     | 
    
         
            +
                    Sanitize.fragment(Onebox::Helpers.uri_unencode(link).sub(/^https?\:\/\/gitlab\.com\//, ''))
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         
             
                end
         
     | 
| 
       26 
26 
     | 
    
         
             
              end
         
     | 
    
        data/lib/onebox/helpers.rb
    CHANGED
    
    | 
         @@ -1,10 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            require "addressable"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
            module Onebox
         
     | 
| 
       4 
6 
     | 
    
         
             
              module Helpers
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
       6 
8 
     | 
    
         
             
                class DownloadTooLarge < StandardError; end
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
                IGNORE_CANONICAL_DOMAINS ||= ['www.instagram.com']
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       8 
12 
     | 
    
         
             
                def self.symbolize_keys(hash)
         
     | 
| 
       9 
13 
     | 
    
         
             
                  return {} if hash.nil?
         
     | 
| 
       10 
14 
     | 
    
         | 
| 
         @@ -23,12 +27,15 @@ module Onebox 
     | 
|
| 
       23 
27 
     | 
    
         
             
                def self.fetch_html_doc(url, headers = nil)
         
     | 
| 
       24 
28 
     | 
    
         
             
                  response = (fetch_response(url, nil, nil, headers) rescue nil)
         
     | 
| 
       25 
29 
     | 
    
         
             
                  doc = Nokogiri::HTML(response)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  uri = URI(url)
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  ignore_canonical_tag = doc.at('meta[property="og:ignore_canonical"]')
         
     | 
| 
      
 33 
     | 
    
         
            +
                  should_ignore_canonical = IGNORE_CANONICAL_DOMAINS.map { |hostname| uri.hostname.match?(hostname) }.any?
         
     | 
| 
       26 
34 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                   
     | 
| 
       28 
     | 
    
         
            -
                  unless ignore_canonical && ignore_canonical['content'].to_s == 'true'
         
     | 
| 
      
 35 
     | 
    
         
            +
                  unless (ignore_canonical_tag && ignore_canonical_tag['content'].to_s == 'true') || should_ignore_canonical
         
     | 
| 
       29 
36 
     | 
    
         
             
                    # prefer canonical link
         
     | 
| 
       30 
37 
     | 
    
         
             
                    canonical_link = doc.at('//link[@rel="canonical"]/@href')
         
     | 
| 
       31 
     | 
    
         
            -
                    if canonical_link && "#{URI(canonical_link).host}#{URI(canonical_link).path}" != "#{ 
     | 
| 
      
 38 
     | 
    
         
            +
                    if canonical_link && "#{URI(canonical_link).host}#{URI(canonical_link).path}" != "#{uri.host}#{uri.path}"
         
     | 
| 
       32 
39 
     | 
    
         
             
                      response = (fetch_response(canonical_link, nil, nil, headers) rescue nil)
         
     | 
| 
       33 
40 
     | 
    
         
             
                      doc = Nokogiri::HTML(response) if response
         
     | 
| 
       34 
41 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -188,56 +195,25 @@ module Onebox 
     | 
|
| 
       188 
195 
     | 
    
         
             
                  src
         
     | 
| 
       189 
196 
     | 
    
         
             
                end
         
     | 
| 
       190 
197 
     | 
    
         | 
| 
       191 
     | 
    
         
            -
                RFC_3986_URI_REGEX ||= /^(?<scheme>([^:\/?#]+):)?(?<authority>\/\/([^\/?#]*))?(?<path>[^?#]*)(\?(?<query>[^#]*))?(#(?<fragment>.*))?$/
         
     | 
| 
       192 
     | 
    
         
            -
                DOUBLE_ESCAPED_REGEXP ||= /%25([0-9a-f]{2})/i
         
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
                # Percent-encodes a URI query parameter per RFC3986 - https://tools.ietf.org/html/rfc3986
         
     | 
| 
       195 
     | 
    
         
            -
                def self.uri_query_encode(query_string)
         
     | 
| 
       196 
     | 
    
         
            -
                  return "" unless query_string
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
                  # query can encode space to %20 OR +
         
     | 
| 
       199 
     | 
    
         
            -
                  # + MUST be encoded as %2B
         
     | 
| 
       200 
     | 
    
         
            -
                  # in RFC3968 both query and fragment are defined as:
         
     | 
| 
       201 
     | 
    
         
            -
                  # = *( pchar / "/" / "?" )
         
     | 
| 
       202 
     | 
    
         
            -
                  # CGI.escape turns space into + which is the most backward compatible
         
     | 
| 
       203 
     | 
    
         
            -
                  # however it doesn't roundtrip through URI.unescape which prefers %20
         
     | 
| 
       204 
     | 
    
         
            -
                  CGI.escape(query_string).gsub('%25', '%').gsub('+', '%20')
         
     | 
| 
       205 
     | 
    
         
            -
                end
         
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
       207 
198 
     | 
    
         
             
                # Percent-encodes a URI string per RFC3986 - https://tools.ietf.org/html/rfc3986
         
     | 
| 
       208 
199 
     | 
    
         
             
                def self.uri_encode(url)
         
     | 
| 
       209 
200 
     | 
    
         
             
                  return "" unless url
         
     | 
| 
       210 
201 
     | 
    
         | 
| 
       211 
     | 
    
         
            -
                   
     | 
| 
       212 
     | 
    
         
            -
                  parts = url.match(RFC_3986_URI_REGEX)
         
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
       214 
     | 
    
         
            -
                  encoded = ""
         
     | 
| 
       215 
     | 
    
         
            -
                  encoded += parts[:scheme] unless parts[:scheme].nil?
         
     | 
| 
       216 
     | 
    
         
            -
                  encoded += parts[:authority] unless parts[:authority].nil?
         
     | 
| 
       217 
     | 
    
         
            -
             
     | 
| 
       218 
     | 
    
         
            -
                  # path requires space to be encoded as %20 (NEVER +)
         
     | 
| 
       219 
     | 
    
         
            -
                  # + should be left unencoded
         
     | 
| 
       220 
     | 
    
         
            -
                  # URI::parse and URI::Generic.build don't like paths encoded with CGI.escape
         
     | 
| 
       221 
     | 
    
         
            -
                  # URI.escape does not change / to %2F and : to %3A like CGI.escape
         
     | 
| 
       222 
     | 
    
         
            -
                  encoded += URI.escape(parts[:path]) unless parts[:path].nil?
         
     | 
| 
       223 
     | 
    
         
            -
                  encoded.gsub!(DOUBLE_ESCAPED_REGEXP, '%\1')
         
     | 
| 
       224 
     | 
    
         
            -
             
     | 
| 
       225 
     | 
    
         
            -
                  # each query parameter
         
     | 
| 
       226 
     | 
    
         
            -
                  if !parts[:query].nil?
         
     | 
| 
       227 
     | 
    
         
            -
                    query_string = parts[:query].split('&').map do |pair|
         
     | 
| 
       228 
     | 
    
         
            -
                      # can optionally be separated by an =
         
     | 
| 
       229 
     | 
    
         
            -
                      pair.split('=').map do |v|
         
     | 
| 
       230 
     | 
    
         
            -
                        uri_query_encode(v)
         
     | 
| 
       231 
     | 
    
         
            -
                      end.join('=')
         
     | 
| 
       232 
     | 
    
         
            -
                    end.join('&')
         
     | 
| 
       233 
     | 
    
         
            -
                    encoded += '?' + query_string
         
     | 
| 
       234 
     | 
    
         
            -
                  end
         
     | 
| 
      
 202 
     | 
    
         
            +
                  uri = Addressable::URI.parse(url)
         
     | 
| 
       235 
203 
     | 
    
         | 
| 
       236 
     | 
    
         
            -
                   
     | 
| 
       237 
     | 
    
         
            -
                     
     | 
| 
       238 
     | 
    
         
            -
             
     | 
| 
      
 204 
     | 
    
         
            +
                  encoded_uri = Addressable::URI.new(
         
     | 
| 
      
 205 
     | 
    
         
            +
                    scheme: Addressable::URI.encode_component(uri.scheme, Addressable::URI::CharacterClasses::SCHEME),
         
     | 
| 
      
 206 
     | 
    
         
            +
                    authority: Addressable::URI.encode_component(uri.authority, Addressable::URI::CharacterClasses::AUTHORITY),
         
     | 
| 
      
 207 
     | 
    
         
            +
                    path: Addressable::URI.encode_component(uri.path, Addressable::URI::CharacterClasses::PATH + "\\%"),
         
     | 
| 
      
 208 
     | 
    
         
            +
                    query: Addressable::URI.encode_component(uri.query, "a-zA-Z0-9\\-\\.\\_\\~\\$\\&\\*\\,\\=\\:\\@\\?\\%"),
         
     | 
| 
      
 209 
     | 
    
         
            +
                    fragment: Addressable::URI.encode_component(uri.fragment, "a-zA-Z0-9\\-\\.\\_\\~\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=\\:\\/\\?\\%")
         
     | 
| 
      
 210 
     | 
    
         
            +
                  )
         
     | 
| 
      
 211 
     | 
    
         
            +
             
     | 
| 
      
 212 
     | 
    
         
            +
                  encoded_uri.to_s
         
     | 
| 
      
 213 
     | 
    
         
            +
                end
         
     | 
| 
       239 
214 
     | 
    
         | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
      
 215 
     | 
    
         
            +
                def self.uri_unencode(url)
         
     | 
| 
      
 216 
     | 
    
         
            +
                  Addressable::URI.unencode(url)
         
     | 
| 
       241 
217 
     | 
    
         
             
                end
         
     | 
| 
       242 
218 
     | 
    
         | 
| 
       243 
219 
     | 
    
         
             
                def self.video_placeholder_html
         
     | 
    
        data/lib/onebox/version.rb
    CHANGED
    
    
    
        data/onebox.gemspec
    CHANGED
    
    | 
         @@ -20,6 +20,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       20 
20 
     | 
    
         
             
              spec.files         = `git ls-files`.split($/).reject { |s| s =~ /^(spec|web)/ }
         
     | 
| 
       21 
21 
     | 
    
         
             
              spec.require_paths = ['lib']
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
              spec.add_runtime_dependency 'addressable', '~> 2.7.0'
         
     | 
| 
       23 
24 
     | 
    
         
             
              spec.add_runtime_dependency 'multi_json', '~> 1.11'
         
     | 
| 
       24 
25 
     | 
    
         
             
              spec.add_runtime_dependency 'mustache'
         
     | 
| 
       25 
26 
     | 
    
         
             
              spec.add_runtime_dependency 'nokogiri', '~> 1.7'
         
     | 
| 
         @@ -32,7 +33,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       32 
33 
     | 
    
         
             
              spec.add_development_dependency 'fakeweb', '~> 1.3'
         
     | 
| 
       33 
34 
     | 
    
         
             
              spec.add_development_dependency 'pry', '~> 0.10'
         
     | 
| 
       34 
35 
     | 
    
         
             
              spec.add_development_dependency 'mocha', '~> 1.1'
         
     | 
| 
       35 
     | 
    
         
            -
              spec.add_development_dependency 'rubocop', '~> 0. 
     | 
| 
      
 36 
     | 
    
         
            +
              spec.add_development_dependency 'rubocop', '~> 0.78.0'
         
     | 
| 
       36 
37 
     | 
    
         
             
              spec.add_development_dependency 'rubocop-discourse', '~> 1.0.1'
         
     | 
| 
       37 
38 
     | 
    
         
             
              spec.add_development_dependency 'twitter', '~> 4.8'
         
     | 
| 
       38 
39 
     | 
    
         
             
              spec.add_development_dependency 'guard-rspec', '~> 4.2.8'
         
     | 
| 
         @@ -1,9 +1,9 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <h3><a href="{{link}}" target="_blank">{{title}}</a></h3>
         
     | 
| 
      
 1 
     | 
    
         
            +
            <h3><a href="{{{link}}}" target="_blank">{{title}}</a></h3>
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            {{#image}}
         
     | 
| 
       4 
4 
     | 
    
         
             
              <div class="instagram-images">
         
     | 
| 
       5 
     | 
    
         
            -
                {{#video_link}} <a href="{{video_link}}" target="_blank"> {{/video_link}}
         
     | 
| 
       6 
     | 
    
         
            -
                  <img class="instagram-image" src="{{image}}"/>
         
     | 
| 
      
 5 
     | 
    
         
            +
                {{#video_link}} <a href="{{{video_link}}}" target="_blank"> {{/video_link}}
         
     | 
| 
      
 6 
     | 
    
         
            +
                  <img class="instagram-image" src="{{{image}}}"/>
         
     | 
| 
       7 
7 
     | 
    
         
             
                {{#video_link}} <span class="instagram-video-icon"></span></a> {{/video_link}}
         
     | 
| 
       8 
8 
     | 
    
         
             
              </div>
         
     | 
| 
       9 
9 
     | 
    
         
             
            {{/image}}
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: onebox
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.9. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.9.25
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Joanna Zeta
         
     | 
| 
         @@ -10,8 +10,22 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       11 
11 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       12 
12 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       13 
     | 
    
         
            -
            date:  
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2020-01-13 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: addressable
         
     | 
| 
      
 17 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 18 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 19 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 20 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 21 
     | 
    
         
            +
                    version: 2.7.0
         
     | 
| 
      
 22 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 23 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 26 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 27 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 28 
     | 
    
         
            +
                    version: 2.7.0
         
     | 
| 
       15 
29 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
30 
     | 
    
         
             
              name: multi_json
         
     | 
| 
       17 
31 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -172,14 +186,14 @@ dependencies: 
     | 
|
| 
       172 
186 
     | 
    
         
             
                requirements:
         
     | 
| 
       173 
187 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       174 
188 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       175 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 189 
     | 
    
         
            +
                    version: 0.78.0
         
     | 
| 
       176 
190 
     | 
    
         
             
              type: :development
         
     | 
| 
       177 
191 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       178 
192 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       179 
193 
     | 
    
         
             
                requirements:
         
     | 
| 
       180 
194 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       181 
195 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       182 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 196 
     | 
    
         
            +
                    version: 0.78.0
         
     | 
| 
       183 
197 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       184 
198 
     | 
    
         
             
              name: rubocop-discourse
         
     | 
| 
       185 
199 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -287,11 +301,11 @@ executables: [] 
     | 
|
| 
       287 
301 
     | 
    
         
             
            extensions: []
         
     | 
| 
       288 
302 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       289 
303 
     | 
    
         
             
            files:
         
     | 
| 
      
 304 
     | 
    
         
            +
            - ".github/workflows/ci.yml"
         
     | 
| 
       290 
305 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       291 
306 
     | 
    
         
             
            - ".rspec"
         
     | 
| 
       292 
307 
     | 
    
         
             
            - ".rubocop.yml"
         
     | 
| 
       293 
308 
     | 
    
         
             
            - ".ruby-gemset"
         
     | 
| 
       294 
     | 
    
         
            -
            - ".travis.yml"
         
     | 
| 
       295 
309 
     | 
    
         
             
            - CHANGELOG.md
         
     | 
| 
       296 
310 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       297 
311 
     | 
    
         
             
            - Guardfile
         
     | 
| 
         @@ -421,7 +435,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       421 
435 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       422 
436 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       423 
437 
     | 
    
         
             
            requirements: []
         
     | 
| 
       424 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 438 
     | 
    
         
            +
            rubygems_version: 3.1.2
         
     | 
| 
       425 
439 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       426 
440 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       427 
441 
     | 
    
         
             
            summary: A gem for generating embeddable HTML previews from URLs.
         
     | 
    
        data/.travis.yml
    DELETED
    
    | 
         @@ -1,17 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            language: ruby
         
     | 
| 
       2 
     | 
    
         
            -
            sudo: false
         
     | 
| 
       3 
     | 
    
         
            -
            rvm:
         
     | 
| 
       4 
     | 
    
         
            -
              - 2.4
         
     | 
| 
       5 
     | 
    
         
            -
              - 2.5
         
     | 
| 
       6 
     | 
    
         
            -
              - 2.6
         
     | 
| 
       7 
     | 
    
         
            -
            notifications:
         
     | 
| 
       8 
     | 
    
         
            -
              email:
         
     | 
| 
       9 
     | 
    
         
            -
                on_success: change
         
     | 
| 
       10 
     | 
    
         
            -
                on_failure: change
         
     | 
| 
       11 
     | 
    
         
            -
            script:
         
     | 
| 
       12 
     | 
    
         
            -
              - bundle exec rubocop
         
     | 
| 
       13 
     | 
    
         
            -
              - bundle exec rspec
         
     | 
| 
       14 
     | 
    
         
            -
            cache:
         
     | 
| 
       15 
     | 
    
         
            -
              bundler: true
         
     | 
| 
       16 
     | 
    
         
            -
            before_install:
         
     | 
| 
       17 
     | 
    
         
            -
              - gem install bundler
         
     |