mangadex 5.3.1.1 → 5.3.1.2

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
  SHA256:
3
- metadata.gz: 2c3906abcda03214729faefa84f1f28cf7685a56bb31d2759a75728c2dfe8633
4
- data.tar.gz: 8ad9182042f2e00bd2d796d1278fbdd6ba3413ef66cd8c2c9946d2e79f5c9dc4
3
+ metadata.gz: 7f849f066bfd4117f3a62b0712201ee6cafe769a7c2e6d6ef9d75789200accb9
4
+ data.tar.gz: 74deaae68ac7efe1b3634495689350a34b0b2479508518a11ae8162207c41b55
5
5
  SHA512:
6
- metadata.gz: d5e8f6bb17f8b565fd5b9068089282370c5f6b88d2707331ceeabbd35a7372f937c9a8e71ee41fe6c32b249950ed8908a429456d65369610ee1976b50329122a
7
- data.tar.gz: d4e78fc2cae3bdc612b2cf739d989a5590e2a95fe6256dfc2cc5c9120dd07a727d2557dc9ae9461b16e080c0bb8950e8562333679c0cef7f569e4c6d5c917b9e
6
+ metadata.gz: daae07877b80764aa77d3aa3ed5e4332f93c60cd72a70c5aaba48d5de4a12c5f6259b19fae0dcbf9f11a7cfc24f4d4d7fd9c761a2ecacd0172bc968bde69670c
7
+ data.tar.gz: 39515e57425a001d787a2bab769694e25c6da7aea8cbf7ffb1a3ee1d263cc7143576fbe916889180437d7c416ffaea392430d1a86080d135f40c2f4bd54d9df8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mangadex (5.3.1)
4
+ mangadex (5.3.1.1)
5
5
  activesupport (~> 6.1)
6
6
  psych (~> 4.0.1)
7
7
  rest-client (~> 2.1)
@@ -2,50 +2,60 @@
2
2
  module Mangadex
3
3
  module Api
4
4
  class Context
5
+ extend T::Sig
6
+
5
7
  @@user = nil
8
+ @@version = nil
6
9
 
7
- class << self
8
- def user
9
- @@user&.with_valid_session
10
- end
10
+ sig { returns(T.nilable(String)) }
11
+ def self.version
12
+ return @@version unless @@version.nil?
11
13
 
12
- def user=(user)
13
- if user.is_a?(Mangadex::Api::User)
14
- @@user = user
15
- elsif user.is_a?(Mangadex::User)
16
- @@user = Mangadex::Api::User.new(
17
- user.id,
18
- data: user,
19
- )
20
- elsif user.is_a?(Hash)
21
- user = user.with_indifferent_access
22
-
23
- @@user = Mangadex::Api::User.new(
24
- user[:mangadex_user_id],
25
- session: user[:session],
26
- refresh: user[:refresh],
27
- )
28
- elsif user.nil?
29
- @@user = nil
30
- else
31
- raise ArgumentError, "Must be an instance of #{Mangadex::Api::User}, #{Mangadex::User} or Hash"
32
- end
33
- end
14
+ @@version = Mangadex::Api::Version.check_mangadex_version
15
+ end
16
+
17
+ sig { returns(T.nilable(Mangadex::Api::User)) }
18
+ def self.user
19
+ @@user&.with_valid_session
20
+ end
34
21
 
35
- def with_user(user)
36
- current_user = @@user
22
+ sig { params(user: T.nilable(T.any(Hash, Mangadex::Api::User, Mangadex::User))).void }
23
+ def self.user=(user)
24
+ if user.is_a?(Mangadex::Api::User)
37
25
  @@user = user
38
- response = yield
39
- @@user = current_user
40
- response
41
- ensure
42
- @@user = current_user
26
+ elsif user.is_a?(Mangadex::User)
27
+ @@user = Mangadex::Api::User.new(
28
+ user.id,
29
+ data: user,
30
+ )
31
+ elsif user.is_a?(Hash)
32
+ user = user.with_indifferent_access
33
+
34
+ @@user = Mangadex::Api::User.new(
35
+ user[:mangadex_user_id],
36
+ session: user[:session],
37
+ refresh: user[:refresh],
38
+ )
39
+ elsif user.nil?
40
+ @@user = nil
43
41
  end
42
+ end
43
+
44
+ sig { params(user: T.nilable(T.any(Hash, Mangadex::Api::User, Mangadex::User)), block: T.proc.returns(T.untyped)).returns(T.untyped) }
45
+ def self.with_user(user, &block)
46
+ current_user = @@user
47
+ @@user = user
48
+ response = yield
49
+ @@user = current_user
50
+ response
51
+ ensure
52
+ @@user = current_user
53
+ end
44
54
 
45
- def without_user
46
- with_user(nil) do
47
- yield
48
- end
55
+ sig { params(block: T.proc.returns(T.untyped)).returns(T.untyped) }
56
+ def self.without_user(&block)
57
+ with_user(nil) do
58
+ yield
49
59
  end
50
60
  end
51
61
  end
@@ -2,9 +2,12 @@
2
2
  module Mangadex
3
3
  module Api
4
4
  class User
5
+ extend T::Sig
6
+
5
7
  attr_accessor :mangadex_user_id, :session, :refresh, :session_valid_until
6
8
  attr_reader :data
7
9
 
10
+ sig { params(mangadex_user_id: String, session: T.nilable(String), refresh: T.nilable(String), data: T.untyped).void }
8
11
  def initialize(mangadex_user_id, session: nil, refresh: nil, data: nil)
9
12
  raise ArgumentError, 'Missing mangadex_user_id' if mangadex_user_id.to_s.empty?
10
13
 
@@ -15,9 +18,9 @@ module Mangadex
15
18
  @data = data
16
19
  end
17
20
 
18
- # nil: Nothing happened, no need to refresh the token
19
21
  # true: The tokens were successfully refreshed
20
22
  # false: Error: refresh token empty or could not refresh the token on the server
23
+ sig { returns(T::Boolean) }
21
24
  def refresh!
22
25
  return false if refresh.nil?
23
26
 
@@ -33,6 +36,7 @@ module Mangadex
33
36
  true
34
37
  end
35
38
 
39
+ sig { returns(Mangadex::Api::User) }
36
40
  def with_valid_session
37
41
  session_expired? && refresh!
38
42
  self
@@ -40,6 +44,7 @@ module Mangadex
40
44
  self
41
45
  end
42
46
 
47
+ sig { returns(T::Boolean) }
43
48
  def session_expired?
44
49
  @session_valid_until.nil? || @session_valid_until <= Time.now
45
50
  end
@@ -0,0 +1,31 @@
1
+ # typed: true
2
+ require "psych"
3
+
4
+ module Mangadex
5
+ module Api
6
+ class Version
7
+ extend T::Sig
8
+
9
+ sig { returns(T.nilable(String)) }
10
+ def self.check_mangadex_version
11
+ puts("Checking Mangadex's latest API version...")
12
+ version = Psych.load(
13
+ RestClient.get(
14
+ 'https://api.mangadex.org/api.yaml',
15
+ ).body,
16
+ ).dig('info', 'version')
17
+
18
+ if version != Mangadex::Version::STRING
19
+ warn(
20
+ "[Warning] This gem is compatible with #{Mangadex::Version::STRING} but it looks like Mangadex is at #{version}",
21
+ "[Warning] Check out #{Mangadex::Internal::Request::BASE_URI} for more information.",
22
+ )
23
+ end
24
+
25
+ version
26
+ rescue => error
27
+ nil
28
+ end
29
+ end
30
+ end
31
+ end
data/lib/mangadex/api.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # typed: strict
2
- require_relative "api/version"
2
+ require_relative "api/version_checker"
3
3
  require_relative "api/context"
4
4
  require_relative "api/response"
5
5
  require_relative "api/user"
data/lib/mangadex/auth.rb CHANGED
@@ -1,56 +1,60 @@
1
1
  # typed: false
2
2
  module Mangadex
3
3
  class Auth
4
- class << self
5
- def login(username, password)
6
- response = Mangadex::Internal::Request.post(
7
- '/auth/login',
8
- payload: {
9
- username: username,
10
- password: password,
11
- },
12
- )
13
- return response if response.is_a?(Mangadex::Api::Response) && response.errored?
14
-
15
- session = response.dig('token', 'session')
16
- refresh = response.dig('token', 'refresh')
17
-
18
- mangadex_user = Mangadex::Internal::Request.get('/user/me', headers: { Authorization: session })
4
+ extend T::Sig
5
+
6
+ sig { params(username: String, password: String).returns(T.any(T::Boolean, Mangadex::Api::Response)) }
7
+ def self.login(username, password)
8
+ response = Mangadex::Internal::Request.post(
9
+ '/auth/login',
10
+ payload: {
11
+ username: username,
12
+ password: password,
13
+ },
14
+ )
15
+ return response if response.is_a?(Mangadex::Api::Response) && response.errored?
16
+
17
+ session = response.dig('token', 'session')
18
+ refresh = response.dig('token', 'refresh')
19
+
20
+ mangadex_user = Mangadex::Internal::Request.get('/user/me', headers: { Authorization: session })
21
+
22
+ user = Mangadex::Api::User.new(
23
+ mangadex_user.data.id,
24
+ session: session,
25
+ refresh: refresh,
26
+ data: mangadex_user.data,
27
+ )
28
+ Mangadex::Api::Context.user = user
29
+ !user.session_expired?
30
+ end
19
31
 
20
- user = Mangadex::Api::User.new(
21
- mangadex_user.data.id,
22
- session: session,
23
- refresh: refresh,
24
- data: mangadex_user.data,
32
+ sig { returns(Hash) }
33
+ def self.check_token
34
+ JSON.parse(
35
+ Mangadex::Internal::Request.get(
36
+ '/auth/check',
37
+ raw: true,
25
38
  )
26
- Mangadex::Api::Context.user = user
27
- !user.session_expired?
28
- end
29
-
30
- def check_token
31
- JSON.parse(
32
- Mangadex::Internal::Request.get(
33
- '/auth/check',
34
- raw: true,
35
- )
36
- )
37
- end
39
+ )
40
+ end
38
41
 
39
- def logout
40
- return true if Mangadex::Api::Context.user.nil?
42
+ sig { returns(T.any(T::Boolean, Mangadex::Api::Response)) }
43
+ def self.logout
44
+ return true if Mangadex::Api::Context.user.nil?
41
45
 
42
- response = Mangadex::Internal::Request.post(
43
- '/auth/logout',
44
- )
45
- return reponse if response.is_a?(Mangadex::Api::Response) && response.errored?
46
+ response = Mangadex::Internal::Request.post(
47
+ '/auth/logout',
48
+ )
49
+ return reponse if response.is_a?(Mangadex::Api::Response) && response.errored?
46
50
 
47
- Mangadex::Api::Context.user = nil
48
- true
49
- end
51
+ Mangadex::Api::Context.user = nil
52
+ true
53
+ end
50
54
 
51
- def refresh_token
52
- !(Mangadex::Api::Context.user&.refresh!).nil?
53
- end
55
+ sig { returns(T::Boolean) }
56
+ def self.refresh_token
57
+ !(Mangadex::Api::Context.user&.refresh!).nil?
54
58
  end
55
59
  end
56
60
  end
@@ -1,4 +1,12 @@
1
- # typed: strict
1
+ # typed: false
2
2
  module Mangadex
3
- VERSION = "5.3.1.1"
3
+ module Version
4
+ MAJOR = "5"
5
+ MINOR = "3"
6
+ TINY = "1"
7
+ PATCH = "2"
8
+
9
+ STRING = [MAJOR, MINOR, TINY].compact.join('.')
10
+ FULL = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
11
+ end
4
12
  end
data/mangadex.gemspec CHANGED
@@ -5,7 +5,7 @@ require "mangadex/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "mangadex"
8
- spec.version = Mangadex::VERSION
8
+ spec.version = Mangadex::Version::FULL
9
9
  spec.authors = ["Akinyele Cafe-Febrissy"]
10
10
  spec.email = ["me@akinyele.ca"]
11
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mangadex
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.1.1
4
+ version: 5.3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinyele Cafe-Febrissy
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-22 00:00:00.000000000 Z
11
+ date: 2021-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: psych
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description:
139
+ description:
140
140
  email:
141
141
  - me@akinyele.ca
142
142
  executables: []
@@ -162,7 +162,7 @@ files:
162
162
  - lib/mangadex/api/context.rb
163
163
  - lib/mangadex/api/response.rb
164
164
  - lib/mangadex/api/user.rb
165
- - lib/mangadex/api/version.rb
165
+ - lib/mangadex/api/version_checker.rb
166
166
  - lib/mangadex/artist.rb
167
167
  - lib/mangadex/auth.rb
168
168
  - lib/mangadex/author.rb
@@ -221,7 +221,7 @@ homepage: https://github.com/thedrummeraki/mangadex
221
221
  licenses:
222
222
  - MIT
223
223
  metadata: {}
224
- post_install_message:
224
+ post_install_message:
225
225
  rdoc_options: []
226
226
  require_paths:
227
227
  - lib
@@ -237,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
237
  version: '0'
238
238
  requirements: []
239
239
  rubygems_version: 3.2.15
240
- signing_key:
240
+ signing_key:
241
241
  specification_version: 4
242
242
  summary: Your next favourite Ruby gem for interacting with Mangadex.org
243
243
  test_files: []
@@ -1,23 +0,0 @@
1
- # typed: true
2
- require "psych"
3
-
4
- module Mangadex
5
- module Api
6
- VERSION = -> do
7
- version = Psych.load(
8
- RestClient.get(
9
- 'https://api.mangadex.org/api.yaml',
10
- ).body,
11
- ).dig('info', 'version')
12
-
13
- if version != Mangadex::VERSION
14
- warn(
15
- "[Warning] This gem is compatible with #{Mangadex::VERSION} but it looks like Mangadex is at #{version}",
16
- "[Warning] Check out #{Mangadex::Internal::Request::BASE_URI} for more information.",
17
- )
18
- end
19
-
20
- version
21
- end.call
22
- end
23
- end