ruby-oembed 0.17.0 → 0.18.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1069e6bb460642bffc61ef34c7fed08f099a0549ddfe3c56e6ad625c7037b2ea
4
- data.tar.gz: 903a06ee3df23939394d9479c0ebe487c3d9c15becbae332a9929a81b7a323dd
3
+ metadata.gz: 3fd19dd48be31e59b8f3ba84d08649883ca77fb4b83ddcc5a1755824ccbf84bd
4
+ data.tar.gz: 76989959365cd58bc897196fd6fbc808ce0d8c532b27f5cc3b934def57f58bbe
5
5
  SHA512:
6
- metadata.gz: ddae8f1d85297a686fa368af3fa64e9c58f78bbfdb6c83cf7aa52f3e6fcaaa6d44dd6a1d24a93925e29ff802895ae7399e8591d408a9c089967402e890568d38
7
- data.tar.gz: 198299b6e80a9e6723b5f72a12015bac7ea488075a3c27c457a87230c18882ab3dfc4371ea34201f192070e747f83d53237fd0c4ff55f3e5bb85ecb8a6a72c08
6
+ metadata.gz: 6edcb673c5d7b0d24b2b514449f6ac983166d0e0c243641fc450781ffe73c75e58ed2f8d40d8706eceb5183e97a95973777531c92615fba94d9e0eb842481b06
7
+ data.tar.gz: 439e312c8debf3b6c5ec859392f1bd50bf63967b6eec3325b2b099e12894a63262622dec7602e8f6df464180a62aec5cd5679218191abd7c08315e4abb49e382
data/CHANGELOG.rdoc CHANGED
@@ -1,6 +1,16 @@
1
1
  = CHANGELOG
2
2
 
3
- == Unreleased (0.17.1)
3
+ == Unreleased (0.18.2)
4
+
5
+ == 0.18.1 - 25 November 2024
6
+
7
+ * Fix the built-in Spotify provider; Pull #95 & #92 (Lewis Buckley)
8
+ * Update the built-in Spotify provider to use a new API endpoint; Pull #95 (Marcos Wright-Kuhns)
9
+
10
+ == 0.18.0 - 31 August 2024
11
+
12
+ * Add support for `x.com` URLs to `OEmbed::Providers::Twitter`; Pull #97 (Maxime)
13
+ * Refresh a few test casettes; Pull #96 (Marcos Wright-Kuhns)
4
14
 
5
15
  == 0.17.0 - 25 February 2024
6
16
 
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Test Coverage](https://github.com/ruby-oembed/ruby-oembed/actions/workflows/ruby.yml/badge.svg)](https://github.com/ruby-oembed/ruby-oembed/actions/workflows/ruby.yml)
5
5
  [![Code Climate](https://img.shields.io/codeclimate/maintainability/ruby-oembed/ruby-oembed.svg)](https://codeclimate.com/github/ruby-oembed/ruby-oembed)
6
6
  [![Coveralls](https://coveralls.io/repos/github/ruby-oembed/ruby-oembed/badge.svg?branch=coveralls)](https://coveralls.io/github/ruby-oembed/ruby-oembed?branch=coveralls)
7
- ![Maintenance](https://img.shields.io/maintenance/yes/2024.svg)
7
+ ![Maintenance](https://img.shields.io/maintenance/yes/2025.svg)
8
8
 
9
9
 
10
10
  An oEmbed consumer library written in Ruby, letting you easily get embeddable HTML representations of supported web pages, based on their URLs. See [oembed.com](http://oembed.com) for more about the protocol.
@@ -13,9 +13,10 @@ module OEmbed
13
13
  def http_get(uri, options = {})
14
14
  found = false
15
15
  remaining_redirects = options[:max_redirects] ? options[:max_redirects].to_i : 4
16
+ scheme, host, port = uri.scheme, uri.host, uri.port
16
17
  until found
17
- http = Net::HTTP.new(uri.host, uri.port)
18
- http.use_ssl = uri.scheme == 'https'
18
+ http = Net::HTTP.new(host, port)
19
+ http.use_ssl = scheme == 'https'
19
20
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
20
21
  http.read_timeout = http.open_timeout = options[:timeout] if options[:timeout]
21
22
 
@@ -33,6 +34,10 @@ module OEmbed
33
34
  found = true
34
35
  elsif res.is_a?(Net::HTTPRedirection) && res.header['location']
35
36
  uri = URI.parse(res.header['location'])
37
+ # If the 'location' is a relative path, keep the last scheme, host, & port.
38
+ scheme = uri.scheme || scheme
39
+ host = uri.host || host
40
+ port = uri.port || port
36
41
  remaining_redirects -= 1
37
42
  else
38
43
  found = true
@@ -6,6 +6,7 @@ require 'oembed/providers/facebook_post'
6
6
  require 'oembed/providers/facebook_video'
7
7
  require 'oembed/providers/instagram'
8
8
  require 'oembed/providers/matterport'
9
+ require 'oembed/providers/spotify'
9
10
  require 'oembed/providers/tiktok'
10
11
 
11
12
  module OEmbed
@@ -76,6 +77,7 @@ module OEmbed
76
77
  # https://dev.twitter.com/rest/reference/get/statuses/oembed
77
78
  Twitter = OEmbed::Provider.new("https://publish.twitter.com/oembed", format: :json)
78
79
  Twitter << "https://*.twitter.com/*/status/*"
80
+ Twitter << "https://*.x.com/*/status/*"
79
81
  add_official_provider(Twitter)
80
82
 
81
83
  # Provider for vine.co
@@ -182,17 +184,6 @@ module OEmbed
182
184
  SoundCloud << "https://*.soundcloud.com/*"
183
185
  add_official_provider(SoundCloud)
184
186
 
185
- # Provider for spotify.com
186
- # https://twitter.com/nicklas2k/status/330094611202723840
187
- # http://blog.embed.ly/post/45149936446/oembed-for-spotify
188
- Spotify = OEmbed::Provider.new("https://embed.spotify.com/oembed/")
189
- Spotify << "http://open.spotify.com/*"
190
- Spotify << "https://open.spotify.com/*"
191
- Spotify << "http://play.spotify.com/*"
192
- Spotify << "https://play.spotify.com/*"
193
- Spotify << /^spotify\:(.*?)/
194
- add_official_provider(Spotify)
195
-
196
187
  # Provider for skitch.com
197
188
  # http://skitch.com/oembed/%3C/endpoint
198
189
  Skitch = OEmbed::Provider.new("http://skitch.com/oembed")
@@ -0,0 +1,19 @@
1
+ module OEmbed
2
+ class Providers
3
+ # Provider for spotify.com
4
+ # https://developer.spotify.com/documentation/embeds/reference/oembed
5
+ # https://developer.spotify.com/documentation/embeds/tutorials/using-the-oembed-api
6
+ Spotify = OEmbed::Provider.new(
7
+ "https://open.spotify.com/oembed",
8
+ format: :json
9
+ )
10
+ Spotify << "http://open.spotify.com/*"
11
+ Spotify << "https://open.spotify.com/*"
12
+ Spotify << "http://play.spotify.com/*"
13
+ Spotify << "https://play.spotify.com/*"
14
+ # https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids
15
+ Spotify << /^spotify\:(.*?)/
16
+
17
+ add_official_provider(Spotify)
18
+ end
19
+ end
@@ -1,8 +1,8 @@
1
1
  module OEmbed
2
2
  class Version
3
3
  MAJOR = 0
4
- MINOR = 17
5
- PATCH = 0
4
+ MINOR = 18
5
+ PATCH = 1
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
 
8
8
  class << self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-oembed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magnus Holm
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2024-02-25 00:00:00.000000000 Z
14
+ date: 2024-11-25 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: xml-simple
@@ -84,6 +84,7 @@ files:
84
84
  - lib/oembed/providers/facebook_video.rb
85
85
  - lib/oembed/providers/instagram.rb
86
86
  - lib/oembed/providers/matterport.rb
87
+ - lib/oembed/providers/spotify.rb
87
88
  - lib/oembed/providers/tiktok.rb
88
89
  - lib/oembed/response.rb
89
90
  - lib/oembed/response/link.rb
@@ -103,7 +104,7 @@ rdoc_options:
103
104
  - "--main"
104
105
  - README.rdoc
105
106
  - "--title"
106
- - ruby-oembed-0.17.0
107
+ - ruby-oembed-0.18.1
107
108
  - "--inline-source"
108
109
  - "--exclude"
109
110
  - tasks