yt-url 0.0.0 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e68fc2eb199540deae8de3a789ea678e526410af
4
- data.tar.gz: 3a1e8277a6be6d959a9707072dfc5496cdcabcf9
3
+ metadata.gz: 739b0b8d6c91fc1762f33f0b0323c7c4909b71fb
4
+ data.tar.gz: 98637af9de0e03bde5c6257da8e65a2542fb25ad
5
5
  SHA512:
6
- metadata.gz: 51b9dae1fe376f96771972fe815a43f3ea87e62d7fa957a7d874305677c435b173968f51b741577878cba495bbe7ef42fd92d8ca69487b66a290ed46737e6190
7
- data.tar.gz: be83a1bae0836965ef6444fdf792b402844697a01fd84e6eac8cd052e642ef9448ac4bc6324a2d73efa1015719bef9b171d32fe57ff0f6dff3c0cfa20223b543
6
+ metadata.gz: 189cdefce9251aa7c49a8e843d5f3eaa79b614c52a49942fbc898b59d043a47a8cdcf486c4b27e2f32ee3733b7e20cfc619ef2d2ce54f859c23669631871eb85
7
+ data.tar.gz: 6341364c63066cfeb5041395f7b9be342add569a3dbdda5134497d2011ed5b2ce9af97c1374b82ce558361c3ab562fd23c27571c8927e22f1a945d8c5712b238
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --fail-fast
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ notifications:
3
+ email: false
4
+ rvm:
5
+ - 2.2.2
6
+ script:
7
+ - bundle exec rspec
8
+ - bundle exec yard stats | grep "100.00% documented"
@@ -0,0 +1,11 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ For more information about changelogs, check
6
+ [Keep a Changelog](http://keepachangelog.com) and
7
+ [Vandamme](http://tech-angels.github.io/vandamme).
8
+
9
+ ## 1.0.0.beta1 - 2017-02-26
10
+
11
+ * [FEATURE] Extracted Yt::URL module from Yt
@@ -1,7 +1,7 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 Fullscreen, Inc.
4
-
3
+ Copyright (c) 2016–present Fullscreen, Inc.
4
+ -–—
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
7
7
  in the Software without restriction, including without limitation the rights
data/README.md CHANGED
@@ -1,3 +1,98 @@
1
1
  Yt::URL - a URL extension for the Yt library
2
2
  ============================================
3
3
 
4
+ Yt::URL helps you identify YouTube resources from their URL.
5
+
6
+ The **source code** is available on [GitHub](https://github.com/claudiob/yt-url) and the **documentation** on [RubyDoc](http://www.rubydoc.info/gems/yt-url/frames).
7
+
8
+ [![Build Status](http://img.shields.io/travis/claudiob/yt-url/master.svg)](https://travis-ci.org/claudiob/yt-url)
9
+ [![Coverage Status](http://img.shields.io/coveralls/claudiob/yt-url/master.svg)](https://coveralls.io/r/claudiob/yt-url)
10
+ [![Dependency Status](http://img.shields.io/gemnasium/claudiob/yt-url.svg)](https://gemnasium.com/claudiob/yt-url)
11
+ [![Code Climate](http://img.shields.io/codeclimate/github/claudiob/yt-url.svg)](https://codeclimate.com/github/claudiob/yt-url)
12
+ [![Online docs](http://img.shields.io/badge/docs-✓-green.svg)](http://www.rubydoc.info/gems/yt-url/frames)
13
+ [![Gem Version](http://img.shields.io/gem/v/yt-url.svg)](http://rubygems.org/gems/yt-url)
14
+
15
+ After [registering your app](https://claudiob.github.io/yt), you can run commands like:
16
+
17
+ ```ruby
18
+ url = Yt::URL.new "youtu.be/gknzFj_0vvY"
19
+ url.kind # => :video
20
+ url.id # => "gknzFj_0vvY"
21
+ url.resource # => #<Yt::Video @id=gknzFj_0vvY>
22
+ ```
23
+
24
+ The **full documentation** is available at [rubydoc.info](http://www.rubydoc.info/gems/yt-url/frames).
25
+
26
+
27
+ A comprehensive guide to Yt
28
+ ===========================
29
+
30
+ All the classes and methods available are detailed on the [Yt homepage](https://claudiob.github.io/yt/):
31
+
32
+ [![Yt homepage](https://cloud.githubusercontent.com/assets/10076/19788369/b61d7756-9c5c-11e6-8bd8-05f8d67aef4e.png)](https://claudiob.github.io/yt/)
33
+
34
+ Please proceed to [https://claudiob.github.io/yt/urls.html](https://claudiob.github.io/yt/urls.html) for more details and examples.
35
+
36
+
37
+ How to install
38
+ ==============
39
+
40
+ To install on your system, run
41
+
42
+ gem install yt-url
43
+
44
+ To use inside a bundled Ruby project, add this line to the Gemfile:
45
+
46
+ gem 'yt-url', '~> 0.0.0'
47
+
48
+ Since the gem follows [Semantic Versioning](http://semver.org),
49
+ indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
50
+ guarantees that your project won’t occur in any error when you `bundle update`
51
+ and a new version of Yt is released.
52
+
53
+ How to test
54
+ ===========
55
+
56
+ To run live-tests against the YouTube API, type:
57
+
58
+ ```bash
59
+ rspec
60
+ ```
61
+
62
+ This will fail unless you have set up a test YouTube application and some
63
+ tests YouTube accounts to hit the API. If you cannot run tests locally, you
64
+ can open PR against the repo and Travis CI will run the tests for you.
65
+
66
+ These are the environment variables required to run the tests in `spec/requests/server`:
67
+
68
+ - `YT_SERVER_API_KEY`: API Key of a Google app with access to the YouTube Data API v3 and the YouTube Analytics API
69
+
70
+ No environment variables are required to run the other tests.
71
+
72
+ How to release new versions
73
+ ===========================
74
+
75
+ If you are a manager of this project, remember to upgrade the [Yt gem](http://rubygems.org/gems/yt-url)
76
+ whenever a new feature is added or a bug gets fixed.
77
+
78
+ Make sure all the tests are passing on [Travis CI](https://travis-ci.org/claudiob/yt-url),
79
+ document the changes in HISTORY.md and README.md, bump the version, then run
80
+
81
+ rake release
82
+
83
+ Remember that the yt gem follows [Semantic Versioning](http://semver.org).
84
+ Any new release that is fully backward-compatible should bump the *patch* version (0.0.x).
85
+ Any new version that breaks compatibility should bump the *minor* version (0.x.0)
86
+
87
+ How to contribute
88
+ =================
89
+
90
+ Contribute to the code by forking the project, adding the missing code,
91
+ writing the appropriate tests and submitting a pull request.
92
+
93
+ In order for a PR to be approved, all the tests need to pass and all the public
94
+ methods need to be documented and listed in the guides. Remember:
95
+
96
+ - to run all tests locally: `bundle exec rspec`
97
+ - to generate the docs locally: `bundle exec yard`
98
+ - to list undocumented methods: `bundle exec yard stats --no-doc`
@@ -0,0 +1,11 @@
1
+ require "bundler"
2
+ Bundler.setup
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ require "rspec/core/rake_task"
6
+ require "rspec/core/version"
7
+
8
+ desc "Run all examples"
9
+ RSpec::Core::RakeTask.new :spec
10
+
11
+ task default: [:spec]
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ # @example bundle exec bin/yt-url "HBO,trueblood"
3
+
4
+ begin
5
+ require 'yt/url'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'yt/url'
9
+ end
10
+
11
+ Yt.configuration.api_key = ENV['YT_SERVER_API_KEY']
12
+
13
+ puts "id\tchannel"
14
+ ARGV[0].split(',').each do |text|
15
+ url = Yt::URL.new text
16
+ id = begin
17
+ url.id
18
+ rescue Yt::Errors::NoItems
19
+ '?' * 24
20
+ end
21
+ puts "#{id}\t#{text}"
22
+ end
@@ -1,7 +1,102 @@
1
- require "yt/url/version"
1
+ require 'yt'
2
2
 
3
+ # An object-oriented Ruby client for YouTube.
4
+ # @see http://www.rubydoc.info/gems/yt/
3
5
  module Yt
4
- module Url
5
- # Your code goes here...
6
+ # Provides methods to identify YouTube resources from names or URLs.
7
+ # @see https://developers.google.com/youtube/v3/docs
8
+ # @example Identify a YouTube video from its short URL:
9
+ # url = Yt::URL.new 'youtu.be/kawaiiguy'
10
+ # url.id # => 'UC4lU5YG9QDgs0X2jdnt7cdQ'
11
+ # url.resource # => #<Yt::Channel @id=UC4lU5YG9QDgs0X2jdnt7cdQ>
12
+ class URL
13
+ # @param [String] text the name or URL of a YouTube resource (in any form).
14
+ def initialize(text)
15
+ @text = text.to_s.strip
16
+ @match = find_pattern_match
17
+ end
18
+
19
+ ### PATTERN MATCHING
20
+
21
+ # @return [Symbol] the kind of YouTube resource matching the URL.
22
+ # Possible values are: +:playlist+, +:video+, +:channel+, and +:unknown:.
23
+ def kind
24
+ @match[:kind]
25
+ end
26
+
27
+ # @return [<String, nil>] the ID of the YouTube resource matching the URL.
28
+ def id
29
+ @match[:id] ||= fetch_id
30
+ end
31
+
32
+ # @return [<Yt::Channel>] the resource associated with the URL
33
+ def resource(options = {})
34
+ @resource ||= case kind
35
+ when :channel then Yt::Channel
36
+ when :video then Yt::Video
37
+ when :playlist then Yt::Playlist
38
+ else raise Yt::Errors::NoItems
39
+ end.new options.merge(id: id)
40
+ end
41
+
42
+ # @return [Array<Regexp>] patterns matching URLs of YouTube playlists.
43
+ PLAYLIST_PATTERNS = [
44
+ %r{^(?:https?://)?(?:www\.)?youtube\.com/playlist/?\?list=(?<id>[a-zA-Z0-9_-]+)},
45
+ ]
46
+
47
+ # @return [Array<Regexp>] patterns matching URLs of YouTube videos.
48
+ VIDEO_PATTERNS = [
49
+ %r{^(?:https?://)?(?:www\.)?youtube\.com/watch\?v=(?<id>[a-zA-Z0-9_-]{11})},
50
+ %r{^(?:https?://)?(?:www\.)?youtu\.be/(?<id>[a-zA-Z0-9_-]{11})},
51
+ %r{^(?:https?://)?(?:www\.)?youtube\.com/embed/(?<id>[a-zA-Z0-9_-]{11})},
52
+ %r{^(?:https?://)?(?:www\.)?youtube\.com/v/(?<id>[a-zA-Z0-9_-]{11})},
53
+ ]
54
+
55
+ # @return [Array<Regexp>] patterns matching URLs of YouTube channels.
56
+ CHANNEL_PATTERNS = [
57
+ %r{^(?:https?://)?(?:www\.)?youtube\.com/channel/(?<id>UC[a-zA-Z0-9_-]{22})},
58
+ %r{^(?:https?://)?(?:www\.)?youtube\.com/(?<format>c/|user/)?(?<name>[a-zA-Z0-9_-]+)}
59
+ ]
60
+
61
+ private
62
+
63
+ ### PATTERN MATCHING
64
+
65
+ def find_pattern_match
66
+ patterns.find(-> {{kind: :unknown}}) do |kind, regex|
67
+ if data = @text.match(regex)
68
+ # Note: With Ruby 2.4, the following is data.named_captures
69
+ match = data.names.zip(data.captures).to_h.with_indifferent_access
70
+ break match.merge kind: kind
71
+ end
72
+ end
73
+ end
74
+
75
+ def patterns
76
+ # @note: :channel *must* be the last since one of its regex eats the
77
+ # remaining patterns. In short, don't change the following order.
78
+ Enumerator.new do |patterns|
79
+ VIDEO_PATTERNS.each {|regex| patterns << [:video, regex]}
80
+ PLAYLIST_PATTERNS.each {|regex| patterns << [:playlist, regex]}
81
+ CHANNEL_PATTERNS.each {|regex| patterns << [:channel, regex]}
82
+ end
83
+ end
84
+
85
+ def fetch_id
86
+ response = Net::HTTP.start 'www.youtube.com', 443, use_ssl: true do |http|
87
+ http.request Net::HTTP::Get.new("/#{@match[:format]}#{@match[:name]}")
88
+ end
89
+ if response.is_a?(Net::HTTPRedirection)
90
+ response = Net::HTTP.start 'www.youtube.com', 443, use_ssl: true do |http|
91
+ http.request Net::HTTP::Get.new(response['location'])
92
+ end
93
+ end
94
+ regex = %r{<meta itemprop="channelId" content="(?<id>UC[a-zA-Z0-9_-]{22})">}
95
+ if data = response.body.match(regex)
96
+ data[:id]
97
+ else
98
+ raise Yt::Errors::NoItems
99
+ end
100
+ end
6
101
  end
7
102
  end
@@ -1,5 +1,7 @@
1
1
  module Yt
2
- module Url
3
- VERSION = "0.0.0"
2
+ class URL
3
+ # @return [String] the SemVer-compatible gem version.
4
+ # @see http://semver.org
5
+ VERSION = "1.0.0.beta1"
4
6
  end
5
7
  end
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Yt::URL#id' do
4
+ subject(:url) { Yt::URL.new text }
5
+
6
+ context 'given a YouTube channel URL in the ID form' do
7
+ let(:text) { "https://www.youtube.com/channel/#{id}" }
8
+
9
+ describe 'works with existing channels' do
10
+ let(:id) { 'UC4lU5YG9QDgs0X2jdnt7cdQ' }
11
+ it {expect(url.id).to eq id }
12
+ end
13
+
14
+ describe 'works with unknown channels' do
15
+ let(:id) { 'UC-not-an-actual-channel' }
16
+ it {expect(url.id).to eq id }
17
+ end
18
+ end
19
+
20
+ context 'given a YouTube channel URL in the name form' do
21
+ let(:text) { "http://www.youtube.com/#{name}" }
22
+
23
+ describe 'works when the name matches the custom URL' do
24
+ let(:name) { 'nbcsports' }
25
+ it {expect(url.id).to eq 'UCqZQlzSHbVJrwrn5XvzrzcA' }
26
+ end
27
+
28
+ describe 'works when the name matches the username' do
29
+ let(:name) { '2012NBCOlympics' }
30
+ it {expect(url.id).to eq 'UCqZQlzSHbVJrwrn5XvzrzcA' }
31
+ end
32
+
33
+ describe 'fails with unknown channels' do
34
+ let(:name) { 'not-an-actual-channel' }
35
+ it {expect{url.id}.to raise_error Yt::Errors::NoItems }
36
+ end
37
+ end
38
+
39
+ context 'given a YouTube channel URL in the custom form' do
40
+ let(:text) { "https://youtube.com/c/#{name}" }
41
+
42
+ describe 'works with existing channels' do
43
+ let(:name) { 'ogeeku' }
44
+ it {expect(url.id).to eq 'UC4nG_NxJniKoB-n6TLT2yaw' }
45
+ end
46
+
47
+ describe 'fails with unknown channels' do
48
+ let(:name) { 'not-an-actual-channel' }
49
+ it {expect{url.id}.to raise_error Yt::Errors::NoItems }
50
+ end
51
+ end
52
+
53
+ context 'given a YouTube channel URL in the username form' do
54
+ let(:text) { "youtube.com/user/#{name}" }
55
+
56
+ describe 'works with existing channels' do
57
+ let(:name) { 'ogeeku' }
58
+ it {expect(url.id).to eq 'UC4lU5YG9QDgs0X2jdnt7cdQ' }
59
+ end
60
+
61
+ describe 'fails with unknown channels' do
62
+ let(:name) { 'not-an-actual-channel' }
63
+ it {expect{url.id}.to raise_error Yt::Errors::NoItems }
64
+ end
65
+ end
66
+
67
+ context 'given a YouTube video URL' do
68
+ let(:text) { "https://www.youtube.com/watch?v=#{id}" }
69
+
70
+ describe 'works with existing videos' do
71
+ let(:id) { 'gknzFj_0vvY' }
72
+ it {expect(url.id).to eq id }
73
+ end
74
+
75
+ describe 'works with unknown videos' do
76
+ let(:id) { 'abc123abc12' }
77
+ it {expect(url.id).to eq id }
78
+ end
79
+ end
80
+
81
+ context 'given a YouTube playlist URL' do
82
+ let(:text) { "https://www.youtube.com/playlist?list=#{id}" }
83
+
84
+ describe 'works with existing playlists' do
85
+ let(:id) { 'LLxO1tY8h1AhOz0T4ENwmpow' }
86
+ it {expect(url.id).to eq id }
87
+ end
88
+
89
+ describe 'works with unknown playlists' do
90
+ let(:id) { 'PL12--not-a-playlist' }
91
+ it {expect(url.id).to eq id }
92
+ end
93
+ end
94
+
95
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Yt::URL#kind' do
4
+ subject(:url) { Yt::URL.new text }
5
+
6
+ context 'given an existing YouTube channel' do
7
+ let(:text) { 'youtube.com/channel/UCxO1tY8h1AhOz0T4ENwmpow' }
8
+ it {expect(url.kind).to eq :channel }
9
+ end
10
+
11
+ context 'given an existing YouTube video' do
12
+ let(:text) { 'youtube.com/watch?v=gknzFj_0vvY' }
13
+ it {expect(url.kind).to eq :video }
14
+ end
15
+
16
+ context 'given an existing YouTube playlist' do
17
+ let(:text) { 'youtube.com/playlist?list=LLxO1tY8h1AhOz0T4ENwmpow' }
18
+ it {expect(url.kind).to eq :playlist }
19
+ end
20
+
21
+ context 'given an unknown YouTube channel URL' do
22
+ let(:text) { 'youtube.com/channel/UC-too-short-to-be-an-id' }
23
+ it {expect(url.kind).to eq :channel }
24
+ end
25
+
26
+ context 'given an unknown YouTube video URL' do
27
+ let(:text) { 'youtu.be/not-an-id' }
28
+ it {expect(url.kind).to eq :unknown }
29
+ end
30
+
31
+ context 'given an unknown text' do
32
+ let(:text) { 'not-really-anything---' }
33
+ it {expect(url.kind).to eq :unknown }
34
+ end
35
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Yt::URL#resource', :server do
4
+ subject(:url) { Yt::URL.new text }
5
+
6
+ context 'given an existing YouTube channel URL' do
7
+ let(:text) { "youtube.com/channel/#{$existing_channel_id}" }
8
+
9
+ it {expect(url.resource).to be_a Yt::Channel }
10
+ it {expect(url.resource.title).to be }
11
+ end
12
+
13
+ context 'given an existing YouTube video URL' do
14
+ let(:text) { "youtube.com/watch?v=#{$existing_video_id}" }
15
+
16
+ it {expect(url.resource).to be_a Yt::Video }
17
+ it {expect(url.resource.title).to be }
18
+ end
19
+
20
+ context 'given an unknown YouTube video URL' do
21
+ let(:text) { "youtu.be/#{$unknown_video_id}" }
22
+
23
+ it {expect(url.resource).to be_a Yt::Video }
24
+ it {expect{url.resource.title}.to raise_error Yt::Errors::NoItems }
25
+ end
26
+
27
+ context 'given an existing YouTube playlist URL' do
28
+ let(:text) { "youtube.com/playlist?list=#{$existing_playlist_id}" }
29
+
30
+ it {expect(url.resource).to be_a Yt::Playlist }
31
+ it {expect(url.resource.title).to be }
32
+ end
33
+
34
+ context 'given an unknown YouTube playlist URL' do
35
+ let(:text) { "https://www.youtube.com/playlist?list=#{$unknown_playlist_id}" }
36
+
37
+ it {expect(url.resource).to be_a Yt::Playlist }
38
+ it {expect{url.resource.title}.to raise_error Yt::Errors::NoItems }
39
+ end
40
+
41
+ context 'given an unknown text' do
42
+ let(:text) { $unknown_text }
43
+
44
+ it {expect{url.resource}.to raise_error Yt::Errors::NoItems }
45
+ end
46
+
47
+ end
48
+
@@ -0,0 +1,16 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new [
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+ require 'yt/url'
11
+ Dir['./spec/support/**/*.rb'].each {|f| require f}
12
+
13
+ RSpec.configure do |config|
14
+ config.order = 'random'
15
+ config.run_all_when_everything_filtered = false
16
+ end
@@ -0,0 +1,17 @@
1
+ RSpec.configure do |config|
2
+ config.before :all, server: true do
3
+ Yt.configuration.api_key = ENV['YT_SERVER_API_KEY']
4
+ Yt.configuration.client_id = ''
5
+ Yt.configuration.client_secret = ''
6
+ end
7
+
8
+ $existing_channel_id = 'UCxO1tY8h1AhOz0T4ENwmpow'
9
+
10
+ $existing_video_id = 'gknzFj_0vvY'
11
+ $unknown_video_id = 'invalid-id-'
12
+
13
+ $existing_playlist_id = 'PL-LeTutc9GRKD3yBDhnRF_yE8UTaQI5Jf'
14
+ $unknown_playlist_id = 'invalid-id-'
15
+
16
+ $unknown_text = 'not-really-anything---'
17
+ end
@@ -5,10 +5,10 @@ require 'yt/url/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "yt-url"
8
- spec.version = Yt::Url::VERSION
8
+ spec.version = Yt::URL::VERSION
9
9
  spec.authors = ['Claudio Baccigalupo']
10
10
  spec.email = ['claudio@fullscreen.net']
11
- spec.description = %q{URL Extension for the Youtube V3 API client.}
11
+ spec.description = %q{URL Extension for the Yt library.}
12
12
  spec.summary = %q{Yt::URL helps identify which YouTube resource (video,
13
13
  channel, playlist) matches a YouTube URL in any given form.}
14
14
  spec.homepage = 'http://github.com/claudiob/yt-url'
@@ -16,17 +16,18 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.required_ruby_version = '>= 2.2.2'
18
18
 
19
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
- f.match(%r{^(test|spec|features)/})
21
- end
19
+ spec.files = `git ls-files`.split($/)
22
20
  spec.bindir = 'exe'
23
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
23
  spec.require_paths = ['lib']
25
24
 
26
- # spec.add_dependency 'activesupport', '>= 5', '< 6'
25
+ spec.add_dependency 'activesupport', '>= 5', '< 6'
26
+ spec.add_dependency 'yt', '>= 0.29'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '~> 1.7'
29
29
  spec.add_development_dependency 'rspec', '~> 3.5'
30
+ spec.add_development_dependency 'rake', '~> 10.0'
30
31
  spec.add_development_dependency 'coveralls', '~> 0.8.15'
31
32
  spec.add_development_dependency 'jekyll', '~> 3.3'
32
33
  spec.add_development_dependency 'yard', '~> 0.9.5'
metadata CHANGED
@@ -1,15 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yt-url
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Baccigalupo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-02 00:00:00.000000000 Z
11
+ date: 2017-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '5'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6'
33
+ - !ruby/object:Gem::Dependency
34
+ name: yt
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0.29'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0.29'
13
47
  - !ruby/object:Gem::Dependency
14
48
  name: bundler
15
49
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +72,20 @@ dependencies:
38
72
  - - "~>"
39
73
  - !ruby/object:Gem::Version
40
74
  version: '3.5'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rake
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '10.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '10.0'
41
89
  - !ruby/object:Gem::Dependency
42
90
  name: coveralls
43
91
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +128,7 @@ dependencies:
80
128
  - - "~>"
81
129
  - !ruby/object:Gem::Version
82
130
  version: 0.9.5
83
- description: URL Extension for the Youtube V3 API client.
131
+ description: URL Extension for the Yt library.
84
132
  email:
85
133
  - claudio@fullscreen.net
86
134
  executables: []
@@ -88,14 +136,23 @@ extensions: []
88
136
  extra_rdoc_files: []
89
137
  files:
90
138
  - ".gitignore"
139
+ - ".rspec"
140
+ - ".travis.yml"
91
141
  - CHANGELOG.md
92
142
  - Gemfile
93
143
  - LICENSE.txt
94
144
  - README.md
145
+ - Rakefile
95
146
  - bin/console
96
147
  - bin/setup
148
+ - bin/yt-url
97
149
  - lib/yt/url.rb
98
150
  - lib/yt/url/version.rb
151
+ - spec/id_spec.rb
152
+ - spec/kind_spec.rb
153
+ - spec/resource_spec.rb
154
+ - spec/spec_helper.rb
155
+ - spec/support/server.rb
99
156
  - yt-url.gemspec
100
157
  homepage: http://github.com/claudiob/yt-url
101
158
  licenses:
@@ -112,14 +169,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
169
  version: 2.2.2
113
170
  required_rubygems_version: !ruby/object:Gem::Requirement
114
171
  requirements:
115
- - - ">="
172
+ - - ">"
116
173
  - !ruby/object:Gem::Version
117
- version: '0'
174
+ version: 1.3.1
118
175
  requirements: []
119
176
  rubyforge_project:
120
- rubygems_version: 2.6.6
177
+ rubygems_version: 2.6.10
121
178
  signing_key:
122
179
  specification_version: 4
123
180
  summary: Yt::URL helps identify which YouTube resource (video, channel, playlist)
124
181
  matches a YouTube URL in any given form.
125
- test_files: []
182
+ test_files:
183
+ - spec/id_spec.rb
184
+ - spec/kind_spec.rb
185
+ - spec/resource_spec.rb
186
+ - spec/spec_helper.rb
187
+ - spec/support/server.rb