tvdb_api 0.0.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 +7 -0
- data/lib/tvdb_api/tvdb_api.rb +54 -0
- data/lib/tvdb_api/tvdb_api_middleware.rb +34 -0
- data/lib/tvdb_api.rb +4 -0
- metadata +102 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 557d82e24d7529f111bd06a4987826c497d3464106c52710e5da7d05a4236548
|
4
|
+
data.tar.gz: 051dc2d2e141b7cc5ce6e3eae50fe310524a205e1dbc76a323fff2944325e51c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a6cfa28707cc00bf70401373c4673ae2ea99596b7cb298ec0ffd4ab26ad90966e87b382da5b05619c2c63f777b8e6a92ed3c1651df59ae6ea825862c2d38f265
|
7
|
+
data.tar.gz: 828db2808b27cc5e118c3619208c3aa6ec65f18433a6fce6c82482c5ee6696a5eff7009e00387364c93c51c46d8be6561c5b5d3e86f70af7f07e14a26e623781
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
require 'json'
|
5
|
+
require_relative 'tvdb_api_middleware'
|
6
|
+
|
7
|
+
class TVDBApi
|
8
|
+
|
9
|
+
BASE_URL = 'https://api4.thetvdb.com'
|
10
|
+
ENDPOINTS = {
|
11
|
+
search: '/v4/search',
|
12
|
+
}
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
Faraday::Request.register_middleware tvdb_auth: -> { TVDBAPIMiddleware }
|
16
|
+
|
17
|
+
@conn = Faraday.new(url: BASE_URL) do |faraday|
|
18
|
+
faraday.headers['Content-Type'] = 'application/json'
|
19
|
+
faraday.request :url_encoded
|
20
|
+
faraday.request :tvdb_auth
|
21
|
+
faraday.adapter Faraday.default_adapter
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def search(query)
|
26
|
+
request_endpoint(:search, { query: query })
|
27
|
+
end
|
28
|
+
|
29
|
+
def search_people(query)
|
30
|
+
request_endpoint(:search, { query: query, type: 'person' })
|
31
|
+
end
|
32
|
+
|
33
|
+
def search_series(query)
|
34
|
+
request_endpoint(:search, { query: query, type: 'series' })
|
35
|
+
end
|
36
|
+
|
37
|
+
def search_movies(query)
|
38
|
+
request_endpoint(:search, { query: query, type: 'movie' })
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def request_endpoint(endpoint_key, params = {})
|
44
|
+
url = ENDPOINTS[endpoint_key]
|
45
|
+
raise "Invalid endpoint key: #{endpoint_key}" unless url
|
46
|
+
|
47
|
+
response = @conn.get do |req|
|
48
|
+
req.url url
|
49
|
+
req.params = params
|
50
|
+
end
|
51
|
+
|
52
|
+
JSON.parse(response.body)
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class TVDBAPIMiddleware < Faraday::Middleware
|
5
|
+
URL = 'https://api4.thetvdb.com/v4/login'
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
env[:request_headers]['Authorization'] = "Bearer #{fetch_bearer_token}"
|
9
|
+
|
10
|
+
@app.call(env)
|
11
|
+
end
|
12
|
+
|
13
|
+
def fetch_bearer_token
|
14
|
+
api_token = ENV['TVDB_API_TOKEN']
|
15
|
+
pin = ENV['TVDB_PIN']
|
16
|
+
|
17
|
+
raise "TVDB_API_TOKEN environment variable is missing" if api_token.nil?
|
18
|
+
raise "TVDB_PIN environment variable is missing" if pin.nil?
|
19
|
+
|
20
|
+
return @bearer_token if @bearer_token
|
21
|
+
|
22
|
+
response = Faraday.post(URL) do |req|
|
23
|
+
req.headers['Content-Type'] = 'application/json'
|
24
|
+
req.body = JSON.generate({
|
25
|
+
'apikey': api_token,
|
26
|
+
'pin': pin
|
27
|
+
})
|
28
|
+
end
|
29
|
+
|
30
|
+
raise "Failed to login: #{response.body}" unless response.success?
|
31
|
+
|
32
|
+
@bearer_token = JSON.parse(response.body)['data']['token']
|
33
|
+
end
|
34
|
+
end
|
data/lib/tvdb_api.rb
ADDED
metadata
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tvdb_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Stephen McCullough
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-09-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.19'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.19'
|
69
|
+
description: Provides a convenient way to interact with the TVDB API.
|
70
|
+
email:
|
71
|
+
- me@swm.cc
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- lib/tvdb_api.rb
|
77
|
+
- lib/tvdb_api/tvdb_api.rb
|
78
|
+
- lib/tvdb_api/tvdb_api_middleware.rb
|
79
|
+
homepage: https://github.com/swmcc/tvdb_api
|
80
|
+
licenses:
|
81
|
+
- MIT
|
82
|
+
metadata: {}
|
83
|
+
post_install_message:
|
84
|
+
rdoc_options: []
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubygems_version: 3.4.19
|
99
|
+
signing_key:
|
100
|
+
specification_version: 4
|
101
|
+
summary: A Ruby wrapper for the TVDB.org API
|
102
|
+
test_files: []
|