yt 0.10.5 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +26 -1
- data/CHANGELOG.md +20 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/lib/yt/errors/request_error.rb +24 -5
- data/lib/yt/models/configuration.rb +17 -0
- data/lib/yt/models/request.rb +2 -0
- data/lib/yt/version.rb +1 -1
- data/spec/errors/request_error_spec.rb +27 -1
- data/spec/requests/as_account/account_spec.rb +1 -0
- data/spec/support/global_hooks.rb +3 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20c3426083692b2c9726ef4c76119e2ad252f51d
|
4
|
+
data.tar.gz: 3e03a4ab33ee8de7c5ea9e9786b05b3bc953790e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4f963fe983113861da21a13f2cca84011d8a717601c53f5009a6e0304354ea30d605ed31cc14ff8959107592ab6cb913387d27285ff63bf640a26fc08c8e968
|
7
|
+
data.tar.gz: 4ef695b291cb1b97884acdfc26a92130a83c6ed169319add5c9e901e8bb9067e515b992b6250750aeb71053dc1756f53e56a240c4c5fe1aa292a3f26559cf447
|
data/.travis.yml
CHANGED
@@ -5,5 +5,30 @@ matrix:
|
|
5
5
|
include:
|
6
6
|
- rvm: 1.9.3
|
7
7
|
gemfile: gemfiles/Gemfile.activesupport-3.x
|
8
|
+
env:
|
9
|
+
- secure: OsmWyhhYNILEb1lhqxPX+iEfbWzC3dELuxQ7JGP9iN/FhqBtlV51cu+u2cBBdql6Gzuqi4VlMEeJSX0PQUmzOsMb0vHhOJDyp4a32NE+xry8LOT8XdCwni20ZBcUeFxC5hMUVebPuhqBTFjBWbXQKwKSXIdPnNWz31d9kyGIsxk=
|
8
10
|
- rvm: 2.0.0
|
9
|
-
gemfile: gemfiles/Gemfile.activesupport-4.x
|
11
|
+
gemfile: gemfiles/Gemfile.activesupport-4.x
|
12
|
+
env:
|
13
|
+
- secure: FrmFA2BE0FYyuKsf0FEO0EAXY+h048HbD1p3lu5XPo9/lxpAl7wM5m12HsnJQuNY6UlUmZ5bp9f8upCBZpz7cLZK5e/FWLWSvkv3Fts+NVsbAcVtFgvBKOCgTznZi/qgUtqbWBevkM3gyXyylzdB+c4wWjoOO/xSDVR227m8nMA=
|
14
|
+
env:
|
15
|
+
global:
|
16
|
+
- secure: MKvaid8oW+io0vtzTUL6jNDBrgoxBe9RLEiFh/gKyVw8cj6bvRPBmYXrZfsNGZfns1i75/GaLCLNMl60ZJkfaN4twdPsh2ju6OnsrKW684G7Ha8Jv6GuaEYEwURBAGULW9EHylW5BlYE7H8SNRjtT8RLyIdjpFphuuiOuUO0/tE=
|
17
|
+
- secure: K3f1RUzLByFOH44M50U02+hDNxFXNts6jWTI6PIP6DAn+j1QyQdvlm55kQ1/otf8L/ypH6GqxF/OQhEOK2xr72MVgFBh0wn4iF7U93Q6xX1ZBNwIGJ6lFWaJ6AP3M0y/Y4Qj3xVQpE6Ofq9TflqeGbuIplQv81z8FV+euq6l+XI=
|
18
|
+
- secure: HyjaCM/coZiZJuIhIBSI+/1Uprs4NvcWAPcCAKtLClZtKLuqNQtKP+pF6aYabOQNFNFyLvcaooygx1VEESx0Hxb6V7OloJlrdt87xc0DxswNBxsZUUJifDW42HXLu5Mkq37fUvNAOKalRpn2mp0y87qJJGyYzo6KKDEvO9fH6HI=
|
19
|
+
- secure: TIhkYLhm8jWq5syGQXknXq1UmBGqQr9BbQwr97ZMAZDHh9GR4WZ27r8R4h+P6a98NfUcl8B72c2TgNpV8Ix8IpAUPrysVmhnSu7LSskevRiEYUsKRKGRK3kgSzawjrxosclEOn4RbWcO/BUjN/2kvT1WZUyRgI8/eZ0WcMjvsP0=
|
20
|
+
- secure: cY0QRvVWriQDvCN1+ntGme1YJfR+LlfXlaXOd7kGSw+JHXUMK49FAcdYXrN+lDA0lY8K2nBvHLvk62oWGvGbYmvqzXrNjljsHQWqtbiuI7AlGjcGDAqyrRcWRQhu+MppLTfduxGrgx+wqZZ9i+3bLiHod8HLa2tyO8P09A7groc=
|
21
|
+
- secure: OeAZwuU8lwaU6h5UgUZ1qyPit6SlnqGifeR3C7+qV7JEFczaz4AckwgEaVcmIptQDO/QTa+kfyJVFkCA8tlPZffUarT7dVEyEfahTTFQTW0oOMXAxrY50MwAQ2ENWMXcoklClug5KiHvaaVtNMMA7HGGASMxBGyzgpniKRc4oN8=
|
22
|
+
- secure: Z3dEcgRE4iC1LAnP2/mvcCygXwRWL4WglhWJEZrj84R+893Be2apXT/HpG5XRGrQ2LRXHfyXbA86TgIeZPTI/TRuopRAipesUjbshyjfO7hsGB0IY44trsn9ZFzJmtMArWiNljQBu+JArIkHLcIyXeoFoXxXw8Q7DHK/r1X6zjQ=
|
23
|
+
- secure: Xqgy14pqYdYqXCzJMS5fFG7U0ihb7EofNAeY/CcsX6zR/ji8kSokbs3mT04amOhmh/nDYqd9dxgLhpqIs7GYOfK8rhyhq44byroM/zbA7+ZgB/bmul1DIEJxNc02CYiZIWMlz43DcnJHYpZe6uZvrU9m3KPkeaQOHXk4MUleUXc=
|
24
|
+
- secure: Cc4GzjWnegDjcta/m74sZ+k/8s1UHHp8yMGn5PfPJLlQcNl/X1IfPtgGTObqhZipJuZAlrl6zfjzaOY2zjqlpd06zW0ed8YCO7n4QsYGy9/S/GNaItvRIAvfRuB0QIOeTTKnp6SsvklT0izCSHmiGK3jukTmFcNY3f4OmLSZfzk=
|
25
|
+
- secure: PsvtNvJjqT46wQ9vwC0vcYruFORR31KU4CYoUjW7cOgQRcUgdLF8Te7hVOsLr1xQtMiVJwOgrcIznAFNkAau6RICpMlqvG68GKddpk6mCbxuI3RlWmHxdlRjUwEVxUyV57tLS6KWaIj6koa4S2RF8RAbUX+3yiI+iLLACm0vu68=
|
26
|
+
- secure: RBDqdSnd8Y3uMmtbqdPpJ96TEP12dqmoJu3ecBhOgnTMsQ/Gsfx+rD2s5MMZdErY+8mmGduMH8NCnw3RIWtBWu7tYAelFjqDzhvZo1de0uJzmCw/zA+KqNceP5s4FwVvwmFj7mr7SKyNMJ0FZjwqR4tcXhX28c3Zi6Fq2hULmQQ=
|
27
|
+
- secure: V3cOMG0aPefKiuKAlrfZb6cMJLMAv8A538qf0Ouw1MN6ngL6uqDaQqissp+/sGp4wUfTJdjVtQn/j4IA1gmk9vdRydILhOryL4X0w2uV1Ip33PEawi+EOOZO2W1vxNrLQO4LvOZmz376sifXwPN3d0aethnHhZ4DiuJrZRT/BUA=
|
28
|
+
- secure: CFmPvFamKLdyaTEAHbtNAOStc4nIjbHcF2g2fyH/s4kxBWCwUlUdEN9/K7Fa9SX6orf/PUA4R08t6o3NLyt/S1dC9DKezZmfTYKuhRNzTOHCiSjeIoDpgdY/lglnTHvr7kuT9ceGAgWk/hmEw7/wQ6ASK4g6G+zRaYi4KDlcM94=
|
29
|
+
- secure: DjWReu3fGGGlk0B2k3sfM5HwRkxNqKo9QNaXYAZa8mJuZs990U7LjfvFEPKHaYTsxPCv1ANEiBGHQYjmlFnKh6B+FmAz5JCtrxRbSARzQ9DBjxyWGNIK064fcFHqYb309OYH8NhCc8WYxr/gn7FJjDb5NCoCIGQ2sYrk4pSormM=
|
30
|
+
- secure: BCr8OowszYHLieino4Zr/E/I8rJujRFFmsY12WovoQiILIbEBonBoTHV1duVcCZyh4MFsdH8rH7NFNCYpeNuETwcU5DPbr3hsALS/4FzBe4J1WixI7jN1wyVWPtSbwfSje8rGMjQmwlML1dgm1QtmI/5MD6mpybwHFrQB9RSV/k=
|
31
|
+
- secure: FwxY5FMyWDyNkHbiZf3odst2kC5iIb00n0lRFU97Ywj8jioqjzKr/x4JCXjKbqFUz4a32mM72fBoj3hqhKnL6/cdnTdhigt3yegR3ozzidcu2SFeZTEDqsHGN0hhqjQIzMI6oKHyqWafSeYtgE18FtxsNpeefZWnRWcQytIMxAI=
|
32
|
+
- secure: CFkNT5WI2ATF3TKehTSuCwzG4EENnoVXaddL0PqpuH4Ss82k0k0xcJBhKbmD3Qkf7nw8y0g4s3jCepHssB2ZwzqQinKcYvamzIbsNPuhsuvlc9rMvT9ZosT5CHsiRJANl+OeZ8l2SqGu6kCMDx45h+fL7YZEtn3jjVZYEAXQSig=
|
33
|
+
- secure: WWuYLNKcTM+fjgFrRT4qa3y4IlwO6xeSkM16jbDG05FUIThMfWRVQHhs5JThw/M3SByWGWySmz74sNpGV6V/yt9jw8o1u6F81j0ec2oeHDCwkZ8xK8ubPv3Pmg14PGr1Awu04zfhTEY9KzJt6HrFSYzek/MpV5Prg4J1l6SgqyU=
|
34
|
+
- secure: YuWrOwaqBT0tLVe90OkfCLX/7tzrLhsOBn7LnqH0Ifw6T+EddNDmQLriWLRny8uNQSg7j/AhPOuEvR/ImOibK3a003LyxQZUx9KrEOkgIa5c82OlOLdcvmXw/8wnQ/SEdTDs8r2l1aZ2NxiieCA3fl7oxR1Lt/O+lS/vgqQY+uM=
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,26 @@ For more information about changelogs, check
|
|
6
6
|
[Keep a Changelog](http://keepachangelog.com) and
|
7
7
|
[Vandamme](http://tech-angels.github.io/vandamme).
|
8
8
|
|
9
|
+
## 0.11.0 - 2014-08-17
|
10
|
+
|
11
|
+
**How to upgrade**
|
12
|
+
|
13
|
+
When a request to YouTube fails, Yt used to print out a verbose error message,
|
14
|
+
including the response body and the request that caused the error (in curl
|
15
|
+
format). This output could include sensitive data (such as the authentication
|
16
|
+
token). For security reasons, Yt will not print it out anymore by default.
|
17
|
+
|
18
|
+
If this is acceptable, then you are good to go.
|
19
|
+
If you want the old behavior, set the `log_level` of Yt to `:debug`:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
Yt.configure do |config|
|
23
|
+
config.log_level = :debug
|
24
|
+
end
|
25
|
+
```
|
26
|
+
|
27
|
+
* [ENHANCEMENT] Add `log_level` to Yt.configuration
|
28
|
+
|
9
29
|
## 0.10.5 - 2014-08-17
|
10
30
|
|
11
31
|
* [ENHANCEMENT] Use PATCH rather than PUT to partially update a MatchPolicy
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -41,7 +41,7 @@ To install on your system, run
|
|
41
41
|
|
42
42
|
To use inside a bundled Ruby project, add this line to the Gemfile:
|
43
43
|
|
44
|
-
gem 'yt', '~> 0.
|
44
|
+
gem 'yt', '~> 0.11.0'
|
45
45
|
|
46
46
|
Since the gem follows [Semantic Versioning](http://semver.org),
|
47
47
|
indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'yt/config'
|
2
|
+
|
1
3
|
module Yt
|
2
4
|
module Errors
|
3
5
|
class RequestError < StandardError
|
@@ -9,11 +11,7 @@ module Yt
|
|
9
11
|
def message
|
10
12
|
<<-MSG.gsub(/^ {8}/, '')
|
11
13
|
#{explanation}:
|
12
|
-
#{
|
13
|
-
|
14
|
-
You can retry the same request manually by running:
|
15
|
-
#{request_curl}
|
16
|
-
#{more_details}
|
14
|
+
#{Yt.configuration.debugging? ? details : no_details }
|
17
15
|
MSG
|
18
16
|
end
|
19
17
|
|
@@ -31,6 +29,27 @@ module Yt
|
|
31
29
|
'A request to YouTube API failed'
|
32
30
|
end
|
33
31
|
|
32
|
+
|
33
|
+
def details
|
34
|
+
<<-MSG.gsub(/^ {8}/, '')
|
35
|
+
#{response_body}
|
36
|
+
|
37
|
+
You can retry the same request manually by running:
|
38
|
+
#{request_curl}
|
39
|
+
#{more_details}
|
40
|
+
MSG
|
41
|
+
end
|
42
|
+
|
43
|
+
def no_details
|
44
|
+
<<-MSG.gsub(/^ {8}/, '')
|
45
|
+
To display more verbose errors, change the configuration of Yt with:
|
46
|
+
|
47
|
+
Yt.configure do |config|
|
48
|
+
config.log_level = :debug
|
49
|
+
end
|
50
|
+
MSG
|
51
|
+
end
|
52
|
+
|
34
53
|
def more_details
|
35
54
|
end
|
36
55
|
|
@@ -20,6 +20,7 @@ module Yt
|
|
20
20
|
# * +YT_CLIENT_ID+ to store the Client ID for web/device apps
|
21
21
|
# * +YT_CLIENT_SECRET+ to store the Client Secret for web/device apps
|
22
22
|
# * +YT_API_KEY+ to store the API key for server/browser apps
|
23
|
+
# * +YT_LOG_LEVEL+ to store the verbosity level of the logs
|
23
24
|
#
|
24
25
|
# In case both methods are used together,
|
25
26
|
# {Yt::Config#configure Yt.configure} takes precedence.
|
@@ -41,12 +42,28 @@ module Yt
|
|
41
42
|
# @see https://console.developers.google.com Google Developers Console
|
42
43
|
attr_accessor :api_key
|
43
44
|
|
45
|
+
# @return [String] the level of output to print for debugging purposes.
|
46
|
+
attr_accessor :log_level
|
47
|
+
|
44
48
|
# Initialize the global configuration settings, using the values of
|
45
49
|
# the specified following environment variables by default.
|
46
50
|
def initialize
|
47
51
|
@client_id = ENV['YT_CLIENT_ID']
|
48
52
|
@client_secret = ENV['YT_CLIENT_SECRET']
|
49
53
|
@api_key = ENV['YT_API_KEY']
|
54
|
+
@log_level = ENV['YT_LOG_LEVEL']
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [Boolean] whether the logging output is extra-verbose.
|
58
|
+
# Useful when developing (e.g., to print the curl of every request).
|
59
|
+
def developing?
|
60
|
+
log_level.to_s.in? %w(devel)
|
61
|
+
end
|
62
|
+
|
63
|
+
# @return [Boolean] whether the logging output is verbose.
|
64
|
+
# Useful when debugging (e.g., to print the curl of failing requests).
|
65
|
+
def debugging?
|
66
|
+
log_level.to_s.in? %w(devel debug)
|
50
67
|
end
|
51
68
|
end
|
52
69
|
end
|
data/lib/yt/models/request.rb
CHANGED
data/lib/yt/version.rb
CHANGED
@@ -2,10 +2,36 @@ require 'spec_helper'
|
|
2
2
|
require 'yt/errors/request_error'
|
3
3
|
|
4
4
|
describe Yt::Errors::RequestError do
|
5
|
+
subject(:error) { raise Yt::Errors::RequestError, params }
|
6
|
+
let(:params) { {} }
|
5
7
|
let(:msg) { %r{^A request to YouTube API failed} }
|
6
8
|
|
7
9
|
describe '#exception' do
|
8
|
-
it { expect{
|
10
|
+
it { expect{error}.to raise_error msg }
|
11
|
+
|
12
|
+
context 'given the exception includes sensitive data' do
|
13
|
+
let(:body) { 'some secret token' }
|
14
|
+
let(:curl) { 'curl -H "Authorization: secret-token"' }
|
15
|
+
let(:params) { {response_body: body, request_curl: curl}.to_json }
|
16
|
+
|
17
|
+
describe 'given a log level of :debug or :devel' do
|
18
|
+
before(:all) { Yt.configuration.log_level = :debug }
|
19
|
+
specify 'exposes sensitive data' do
|
20
|
+
expect{error}.to raise_error do |error|
|
21
|
+
expect(error.message).to include 'secret'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'given a different log level' do
|
27
|
+
before(:all) { Yt.configuration.log_level = :info }
|
28
|
+
specify 'hides sensitive data' do
|
29
|
+
expect{error}.to raise_error do |error|
|
30
|
+
expect(error.message).not_to include 'secret'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
9
35
|
end
|
10
36
|
end
|
11
37
|
|
@@ -23,12 +23,14 @@ RSpec.configure do |config|
|
|
23
23
|
Yt.configure do |config|
|
24
24
|
config.client_id = ENV['YT_TEST_DEVICE_CLIENT_ID']
|
25
25
|
config.client_secret = ENV['YT_TEST_DEVICE_CLIENT_SECRET']
|
26
|
+
config.log_level = ENV['YT_LOG_LEVEL']
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
29
30
|
config.before :all, server_app: true do
|
30
31
|
Yt.configure do |config|
|
31
32
|
config.api_key = ENV['YT_TEST_SERVER_API_KEY']
|
33
|
+
config.log_level = ENV['YT_LOG_LEVEL']
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
@@ -36,6 +38,7 @@ RSpec.configure do |config|
|
|
36
38
|
Yt.configure do |config|
|
37
39
|
config.client_id = ENV['YT_TEST_PARTNER_CLIENT_ID']
|
38
40
|
config.client_secret = ENV['YT_TEST_PARTNER_CLIENT_SECRET']
|
41
|
+
config.log_level = ENV['YT_LOG_LEVEL']
|
39
42
|
end
|
40
43
|
# Create one Youtube Partner channel, authenticated as the content owner
|
41
44
|
attrs = {refresh_token: ENV['YT_TEST_CONTENT_OWNER_REFRESH_TOKEN']}
|