yt-support 0.1.2 → 1.0.0

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
- SHA1:
3
- metadata.gz: c6a662f825d0c472754909155714397c84cf600c
4
- data.tar.gz: 4999e00a754f796f8b9d5a00fed15fa538dc69bd
2
+ SHA256:
3
+ metadata.gz: a3ec0b0a78227d1ed98c1c3a30a52856cfcc29d2626caaa0d0fb7594f00fa089
4
+ data.tar.gz: 43c49aadfe5b17c1b4284ca714090dd7bd1e8bd393438d32d941e3b3773e17f1
5
5
  SHA512:
6
- metadata.gz: d91e68dea4b16beb241f28eb8808f56bd35536988c7e2565d463badf90d0568c5c4b9a64e2ee0d11dd90dc1240c1c22968e9afa8274e1189b63d26691c6c7ca1
7
- data.tar.gz: 45245e9ec74c83598d767d472df76e88c2a375ab34d92f770b5e5e7e52890d848f061cf39288bbc8b7b75c498554c5e9062fcfdb063f3812b755defdf0047dff
6
+ metadata.gz: 972b41f231f9ff50a3c4602ecbb17a8d3ddf235f85023370c3c8be331769e30c8a6fdb3e8cedc6ec1fa39144569ee825c9c245c22863fab91e1029762bb2c363
7
+ data.tar.gz: f47aa72b0c5c6c9fb87b5829bb7c80bd44ca825c2a4310e3d4426c8955ab20c246ca846c74e62fdcc8151a3a024054d265de112f1f38149709ded0a88c9a6593
data/CHANGELOG.md CHANGED
@@ -6,6 +6,18 @@ 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
+ ## 1.0.0 - 2024/12/10
10
+
11
+ * [FEATURE] Add `mock_auth_error` and `mock_auth_error` to `Yt.configuration`.
12
+
13
+ ## 0.1.4 - 2018/10/03
14
+
15
+ * [FEATURE] Add ActiveSupport::Notification based instrumentation.
16
+
17
+ ## 0.1.3 - 2017-06-02
18
+
19
+ * [FEATURE] Add `Yt.configuration.access_token` and `.refresh_token`
20
+
9
21
  ## 0.1.2 - 2017-04-02
10
22
 
11
23
  * [FEATURE] Add Yt::ConnectionError to deal with connection/server errors
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017 Fullscreen, Inc.
3
+ Copyright (c) 2017-present Fullscreen, Inc.
4
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
@@ -44,6 +44,16 @@ module Yt
44
44
  # @return [String] the level of output to print for debugging purposes.
45
45
  attr_accessor :log_level
46
46
 
47
+ # @return [String] the access token to act on behalf of a YouTube account.
48
+ attr_accessor :access_token
49
+
50
+ # @return [String] a mock error to raise when trying to authenticate.
51
+ attr_accessor :mock_auth_error
52
+
53
+ # @return [String] a mock email to return when authenticating.
54
+ # If 'invalid-email' then try to authenticate will raise an error.
55
+ attr_accessor :mock_auth_email
56
+
47
57
  # Initialize the global configuration settings, using the values of
48
58
  # the specified following environment variables by default.
49
59
  def initialize
@@ -51,6 +61,8 @@ module Yt
51
61
  @client_secret = ENV['YT_CLIENT_SECRET']
52
62
  @api_key = ENV['YT_API_KEY']
53
63
  @log_level = ENV['YT_LOG_LEVEL']
64
+ @mock_auth_error = ENV['YT_MOCK_AUTH_ERROR']
65
+ @mock_auth_email = ENV['YT_MOCK_AUTH_EMAIL']
54
66
  end
55
67
 
56
68
  # @return [Boolean] whether the logging output is extra-verbose.
data/lib/yt/http_error.rb CHANGED
@@ -1,5 +1,11 @@
1
1
  module Yt
2
2
  # A wrapper around StandardError.
3
3
  class HTTPError < StandardError
4
+ attr_reader :response
5
+
6
+ def initialize(msg, response: nil)
7
+ super msg
8
+ @response = response
9
+ end
4
10
  end
5
11
  end
@@ -38,7 +38,7 @@ module Yt
38
38
  @headers = options.fetch :headers, {}
39
39
  @body = options[:body]
40
40
  @request_format = options.fetch :request_format, :json
41
- @error_message = options.fetch :error_message, ->(body) {"Error: #{body}"}
41
+ @error_message = options.fetch :error_message, ->(code) {"Error: #{code}"}
42
42
  end
43
43
 
44
44
  # Sends the request and returns the response with the body parsed from JSON.
@@ -50,7 +50,7 @@ module Yt
50
50
  parse_response!
51
51
  end
52
52
  else
53
- raise Yt::HTTPError, error_message
53
+ raise Yt::HTTPError.new(error_message, response: response)
54
54
  end
55
55
  end
56
56
 
@@ -85,13 +85,25 @@ module Yt
85
85
  end
86
86
  end
87
87
 
88
+ def as_curl
89
+ 'curl'.tap do |curl|
90
+ curl << " -X #{http_request.method}"
91
+ http_request.each_header{|k, v| curl << %Q{ -H "#{k}: #{v}"}}
92
+ curl << %Q{ -d '#{http_request.body}'} if http_request.body
93
+ curl << %Q{ "#{uri.to_s}"}
94
+ end
95
+ end
96
+
88
97
  # Adds the request body to the request in the appropriate format.
89
98
  # if the request body is a JSON Object, transform its keys into camel-case,
90
99
  # since this is the common format for JSON APIs.
91
100
  def set_request_body!(request)
92
- if @body
93
- request.set_form_data @body
94
- end
101
+ case @request_format
102
+ when :json
103
+ request.body = @body.to_json
104
+ when :form
105
+ request.set_form_data @body
106
+ end if @body
95
107
  end
96
108
 
97
109
  # Adds the request headers to the request in the appropriate format.
@@ -109,8 +121,12 @@ module Yt
109
121
 
110
122
  # Run the request and memoize the response or the server error received.
111
123
  def response
112
- @response ||= Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
113
- http.request http_request
124
+ instrument do |data|
125
+ @response ||= Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
126
+ puts as_curl if Yt.configuration.developing?
127
+ http.request http_request
128
+ end
129
+ data[:response] = @response
114
130
  end
115
131
  rescue *server_errors => e
116
132
  raise Yt::ConnectionError, e.message
@@ -134,7 +150,20 @@ module Yt
134
150
  end
135
151
 
136
152
  def error_message
137
- @error_message.call response.body
153
+ @error_message.call response.code
154
+ end
155
+
156
+ def instrument(&block)
157
+ data = {
158
+ request: http_request,
159
+ method: http_request.method,
160
+ request_uri: uri
161
+ }
162
+ if defined?(ActiveSupport::Notifications)
163
+ ActiveSupport::Notifications.instrument 'request.yt', data, &block
164
+ else
165
+ block.call(data)
166
+ end
138
167
  end
139
168
  end
140
169
  end
@@ -1,7 +1,8 @@
1
1
  module Yt
2
2
  # Provides common functionality to all Yt gems.
3
3
  module Support
4
- # current version of gem
5
- VERSION = '0.1.2'
4
+ # @return [String] the SemVer-compatible gem version.
5
+ # @see http://semver.org
6
+ VERSION = '1.0.0'
6
7
  end
7
8
  end
data/yt-support.gemspec CHANGED
@@ -17,15 +17,16 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.required_ruby_version = '>= 2.2.2'
19
19
 
20
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
21
+ f.match(%r{^(test|spec|features)/})
22
+ end
21
23
  spec.bindir = 'exe'
22
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
25
  spec.require_paths = ['lib']
24
26
 
25
- spec.add_development_dependency 'bundler', '~> 1.14'
26
- spec.add_development_dependency 'rspec', '~> 3.5'
27
- spec.add_development_dependency 'rake', '~> 10.0'
28
- spec.add_development_dependency 'coveralls', '~> 0.8.15'
29
- spec.add_development_dependency 'pry-nav', '~> 0.2.4'
30
- spec.add_development_dependency 'yard', '~> 0.9.5'
27
+ spec.add_development_dependency 'bundler'
28
+ spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'rake'
30
+ spec.add_development_dependency 'coveralls'
31
+ spec.add_development_dependency 'yard'
31
32
  end
metadata CHANGED
@@ -1,100 +1,86 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yt-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Baccigalupo
8
8
  - Kang-Kyu Lee
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-04-02 00:00:00.000000000 Z
12
+ date: 2024-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.14'
20
+ version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.14'
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rspec
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '3.5'
34
+ version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '3.5'
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '10.0'
48
+ version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '10.0'
55
+ version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: coveralls
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 0.8.15
62
+ version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 0.8.15
70
- - !ruby/object:Gem::Dependency
71
- name: pry-nav
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: 0.2.4
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: 0.2.4
69
+ version: '0'
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: yard
86
72
  requirement: !ruby/object:Gem::Requirement
87
73
  requirements:
88
- - - "~>"
74
+ - - ">="
89
75
  - !ruby/object:Gem::Version
90
- version: 0.9.5
76
+ version: '0'
91
77
  type: :development
92
78
  prerelease: false
93
79
  version_requirements: !ruby/object:Gem::Requirement
94
80
  requirements:
95
- - - "~>"
81
+ - - ">="
96
82
  - !ruby/object:Gem::Version
97
- version: 0.9.5
83
+ version: '0'
98
84
  description: |-
99
85
  Yt::Support provides common functionality to Yt,
100
86
  Yt::Auth. It is considered suitable for internal use only at this time.
@@ -127,7 +113,7 @@ homepage: https://github.com/fullscreen/yt-support
127
113
  licenses:
128
114
  - MIT
129
115
  metadata: {}
130
- post_install_message:
116
+ post_install_message:
131
117
  rdoc_options: []
132
118
  require_paths:
133
119
  - lib
@@ -142,9 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
128
  - !ruby/object:Gem::Version
143
129
  version: '0'
144
130
  requirements: []
145
- rubyforge_project:
146
- rubygems_version: 2.6.11
147
- signing_key:
131
+ rubygems_version: 3.5.23
132
+ signing_key:
148
133
  specification_version: 4
149
134
  summary: Support utilities for Yt gems
150
135
  test_files: []