class Faraday::Hypermedia::LinkExtractorCJ

Public Instance Methods

process_response(response_env) click to toggle source
# File lib/faraday/hypermedia/link_extractor.rb, line 7
def process_response(response_env)
  # TODO: collectionのlinksしか取り出していない。itemsにも存在する
  # TODO: itemsのselfがあれば取り出す
  cj = parse(response_env[:body])
  return if cj.links.empty? && cj.items.empty?
  # link_arrays = cj.links.map do |link|
  #   attrs = [['rel', link.rel]]
  #   attrs << ['title', link.name] if link.name
  #   [link.href, attrs]
  # end
  # link_value = LinkHeader.new(link_arrays).to_s
  link_values = cj.links.map { |link|
    value = %(<#{link.href}>;rel="#{link.rel}")
    value += %(;title="#{link.name}") if link.name
    value
  }
  item_values = cj.items.map { |item| %(<#{item.href}>;rel="item") if item.href }.compact
  link_header = (link_values + item_values).join(',')
  if response_env[:response_headers]['link']
    response_env[:response_headers]['link'] += ",#{link_header}"
  else
    response_env[:response_headers]['link'] = link_header
  end
end