class Mangadex::Internal::Context
Attributes
allowed_content_ratings[RW]
ignore_user[RW]
Public Class Methods
new()
click to toggle source
# File lib/mangadex/internal/context.rb, line 10 def initialize @allowed_content_ratings = Mangadex.configuration.default_content_ratings end
user_object?(user)
click to toggle source
# File lib/mangadex/internal/context.rb, line 117 def self.user_object?(user) return false if user.nil? missing_methods = [:session, :refresh, :mangadex_user_id, :save] - user.methods return true if missing_methods.empty? warn("Potential user object #{user} is missing #{missing_methods}") false end
Public Instance Methods
allow_content_ratings(*content_ratings) { || ... }
click to toggle source
# File lib/mangadex/internal/context.rb, line 82 def allow_content_ratings(*content_ratings, &block) content_ratings = Mangadex::ContentRating.parse(Array(content_ratings)) if block_given? content_ratings = Mangadex.context.allowed_content_ratings if content_ratings.empty? # set temporarily temp_set_value("allowed_content_ratings", content_ratings) do yield end elsif content_ratings.any? # set "permanently" @allowed_content_ratings = content_ratings else # This is to throw an exception prompting to pass a block if there no params. yield end end
force_raw_requests() { || ... }
click to toggle source
Only recommended for development and debugging only
# File lib/mangadex/internal/context.rb, line 107 def force_raw_requests(&block) if block_given? temp_set_value("force_raw_requests", true) do yield end else !!@force_raw_requests end end
user()
click to toggle source
# File lib/mangadex/internal/context.rb, line 20 def user @ignore_user ? nil : @user rescue Mangadex::Errors::UnauthorizedError warn("A user is present but not authenticated!") nil end
user=(user)
click to toggle source
# File lib/mangadex/internal/context.rb, line 47 def user=(user) if user.is_a?(Mangadex::Api::User) @user = user elsif user.is_a?(Mangadex::User) @user = Mangadex::Api::User.new( mangadex_user_id: user.id, data: user, ) elsif user.is_a?(Hash) user = Mangadex::Internal::Definition.validate(user, { mangadex_user_id: { accepts: String, required: true }, session: { accepts: String }, refresh: { accepts: String }, }) @user = Mangadex::Api::User.new( mangadex_user_id: user[:mangadex_user_id], session: user[:session], refresh: user[:refresh], ) elsif Mangadex::Internal::Context.user_object?(user) @user = Mangadex::Api::User.new( mangadex_user_id: user.mangadex_user_id.to_s, session: user.session, refresh: user.refresh, session_valid_until: user.session_valid_until, data: user, ) elsif user.nil? @user = nil else raise TypeError, "Invalid user type." end end
version()
click to toggle source
# File lib/mangadex/internal/context.rb, line 15 def version @version ||= Mangadex::Api::VersionChecker.check_mangadex_version end
with_allowed_content_ratings(*other_content_ratings) { || ... }
click to toggle source
# File lib/mangadex/internal/context.rb, line 100 def with_allowed_content_ratings(*other_content_ratings, &block) T.unsafe(self).allow_content_ratings(*(allowed_content_ratings + other_content_ratings)) do yield end end
with_user(user) { || ... }
click to toggle source
# File lib/mangadex/internal/context.rb, line 33 def with_user(user, &block) temp_set_value("user", user) do yield end end
without_user() { || ... }
click to toggle source
# File lib/mangadex/internal/context.rb, line 40 def without_user(&block) temp_set_value("ignore_user", true) do yield end end
Private Instance Methods
temp_set_value(name, value) { || ... }
click to toggle source
# File lib/mangadex/internal/context.rb, line 129 def temp_set_value(name, value, &block) setter_method_name = "#{name}=" current_value = send(name) send(setter_method_name, value) response = yield send(setter_method_name, current_value) response ensure send(setter_method_name, current_value) if current_value end