На мой взгляд, это было бы намного проще, но не хочется ломать существующие приложения . Оставим генерацию экземпляра SSO на усмотрение пользователя.
# frozen_string_literal: true
module DiscourseApi
module API
module SSO
def sync_sso(sso)
post("/admin/users/sync_sso", sso.payload)
end
end
end
end
Возможно, завтра я сделаю что-то вроде этого (но аккуратнее):
# frozen_string_literal: true
module DiscourseApi
module API
module SSO
def sync_sso(params)
if params.instance_of?(DiscourseApi::SingleSignOn)
post("/admin/users/sync_sso", sso.payload)
elsif params.instance_of?(Hash)
.... то же, что и сейчас
end
end
end
end
end
Что думаете? В идеале в моём приложении будет одна функция, генерирующая DiscourseApi::SingleSignOn, и тогда я смогу передавать её в sso_login или sync_sso.