Sha256: d51a6929bf37100ecf042b178987d7b684102c047aedda440556251ebaf7267d

Contents?: true

Size: 1.49 KB

Versions: 23

Compression:

Stored size: 1.49 KB

Contents

require 'restful/serializers/base'
require 'builder'

#
#  Converts an APIModel to and from XML. 
#
module Restful
  module Serializers
    class AtomLikeSerializer < XMLSerializer
      
      serializer_name :atom_like
      
      protected
        
        def root_resource(node)
          url_base = node.attribute(:base, :xml)
          me_node = node.delete_element("link[@rel='self']")
          own_url = me_node.attribute(:href)
          Restful.resource(node.name, :path => own_url, :base => url_base)
        end
      
        def build_link(el, type)
          Restful.link(revert_link_name(el.attribute('rel')), nil, el.attribute('href'), type)
        end
        
        def calculate_node_type(el)
          return :link if el.name.downcase == "link"
          (el.attributes["type"] || "string").to_sym
        end
                
        def add_link_to(resource, builder, options = {})
          is_self = !!options[:self]
          builder.tag!("link", { :href => resource.path, :rel => (is_self ? "self" : resource.name) })
        end
        
        def root_element(resource)
          decorations = {}
          
          unless @nested_root
            decorations =  { :"xml:base" => Restful::Rails.api_hostname } unless Restful::Rails.api_hostname.blank?
            @nested_root = true
          end
          
          [resource.name, decorations]
        end
        
        def decorations(value); {}; end
        def collections_decorations; {}; end                
    end
  end
end

Version data entries

23 entries across 23 versions & 4 rubygems

Version Path
benjaminkrause-restful-0.2.8 lib/restful/serializers/atom_like_serializer.rb
moviepilot-restful-0.2.18 lib/restful/serializers/atom_like_serializer.rb
moviepilot-restful-0.2.19 lib/restful/serializers/atom_like_serializer.rb
moviepilot-restful-0.2.20 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.1 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.10 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.11 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.12 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.13 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.14 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.15 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.16 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.17 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.18 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.2 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.3 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.4 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.5 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.6 lib/restful/serializers/atom_like_serializer.rb
purzelrakete-restful-0.2.7 lib/restful/serializers/atom_like_serializer.rb