Class: Osso::GraphQL::Mutations::SetRedirectUris

Inherits:
BaseMutation
  • Object
show all
Defined in:
lib/osso/graphql/mutations/set_redirect_uris.rb

Instance Method Summary collapse

Methods inherited from BaseMutation

#account_domain, #admin_ready?, #domain_ready?, #field_errors, #internal_ready?, #provider_domain, #response_data, #response_error

Instance Method Details

#create_new(oauth_client, redirect_uris) ⇒ Object



44
45
46
47
48
# File 'lib/osso/graphql/mutations/set_redirect_uris.rb', line 44

def create_new(oauth_client, redirect_uris)
  redirect_uris.map do |uri|
    oauth_client.redirect_uris.create!(uri.to_h.without(:id))
  end
end

#ready?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/osso/graphql/mutations/set_redirect_uris.rb', line 26

def ready?(*)
  admin_ready?
end

#resolve(id:, redirect_uris:) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/osso/graphql/mutations/set_redirect_uris.rb', line 15

def resolve(id:, redirect_uris:)
  oauth_client = Osso::Models::OauthClient.find(id)

  update_existing(oauth_client, redirect_uris)
  create_new(oauth_client, redirect_uris)

  response_data(oauth_client: oauth_client.reload)
rescue StandardError => e
  response_error(e)
end

#update_existing(oauth_client, redirect_uris) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/osso/graphql/mutations/set_redirect_uris.rb', line 30

def update_existing(oauth_client, redirect_uris)
  oauth_client.redirect_uris.each do |redirect|
    updating_index = redirect_uris.index { |incoming| incoming[:id] == redirect.id }

    if updating_index
      updating = redirect_uris.delete_at(updating_index)
      redirect.update!(updating.to_h)
      next
    end

    redirect.destroy!
  end
end