module CardController::Rest

RESTful action methods for card

Public Instance Methods

asset() click to toggle source

@deprecated

# File lib/card_controller/rest.rb, line 26
def asset
  body = "Decko installation error: missing public directory symlinks"
  Rails.logger.info "#{body}.\n  >>> Try `rake card:mod:symlink`"
  render body: body, status: 404
end
create() click to toggle source

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PUBLIC METHODS
# File lib/card_controller/rest.rb, line 9
def create
  handle { card.save! }
end
delete() click to toggle source
# File lib/card_controller/rest.rb, line 21
def delete
  handle { card.delete! }
end
read() click to toggle source
# File lib/card_controller/rest.rb, line 13
def read
  show
end
update() click to toggle source
# File lib/card_controller/rest.rb, line 17
def update
  card.new_card? ? create : handle { card.update! params[:card]&.to_unsafe_h }
end

Private Instance Methods

authenticate() click to toggle source
# File lib/card_controller/rest.rb, line 43
def authenticate
  Card::Auth.signin_with(**authenticators)
end
authenticators() click to toggle source
# File lib/card_controller/rest.rb, line 47
def authenticators
  { token: token_from_header || params[:token] }
end
cud_success() click to toggle source

successful create, update, or delete act

# File lib/card_controller/rest.rb, line 86
def cud_success
  success = Card::Env.success.in_context card.name
  if success.reload?
    reload # instruct JSON to reload
  else
    redirect_cud_success success
  end
end
handle() { |? cud_success : raise(UserError)| ... } click to toggle source

———-( HELPER METHODS ) ————-

# File lib/card_controller/rest.rb, line 80
def handle
  Card::Env.success card.name
  yield ? cud_success : raise(Card::Error::UserError)
end
load_action() click to toggle source
# File lib/card_controller/rest.rb, line 62
def load_action
  card.select_action_by_params params
  return unless params[:edit_draft] && card.drafts.present?

  card.content = card.last_draft_content
end
load_card() click to toggle source
# File lib/card_controller/rest.rb, line 55
def load_card
  @card = Card.uri_fetch params
  raise Card::Error::NotFound unless card

  record_as_main
end
record_as_main() click to toggle source

TODO: refactor this away this when new layout handling is ready

# File lib/card_controller/rest.rb, line 70
def record_as_main
  Card::Env[:main_name] = params[:main] || card&.name || ""
end
refresh_card() click to toggle source
# File lib/card_controller/rest.rb, line 74
def refresh_card
  @card = card.refresh
end
render_page(format, view) click to toggle source
# File lib/card_controller/rest.rb, line 103
def render_page format, view
  view ||= view_from_params
  card.act do
    format.page self, view, Card::Env.slot_opts
  end
end
setup() click to toggle source

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PRIVATE METHODS
# File lib/card_controller/rest.rb, line 37
def setup
  Card::Machine.refresh_assets unless params[:explicit_file]
  Card::Cache.renew
  Card::Env.reset controller: self
end
show(view=nil, status=200) click to toggle source
# File lib/card_controller/rest.rb, line 95
def show view=nil, status=200
  card.action = :read
  format = load_format status
  result = render_page format, view
  status = format.error_status || status
  respond format, result, status
end
token_from_header() click to toggle source
# File lib/card_controller/rest.rb, line 51
def token_from_header
  token_and_options(request)&.first
end
view_from_params() click to toggle source
# File lib/card_controller/rest.rb, line 110
def view_from_params
  %i[view v].each { |k| return params[k] if params[k].present? }
  nil
end