restfulie 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +10 -5
- data/Rakefile +5 -2
- data/lib/restfulie.rb +10 -5
- data/lib/restfulie/client.rb +13 -9
- data/lib/restfulie/client/base.rb +24 -65
- data/lib/restfulie/client/configuration.rb +62 -64
- data/lib/restfulie/client/entry_point.rb +36 -0
- data/lib/restfulie/client/ext/atom_ext.rb +12 -0
- data/lib/restfulie/client/ext/http_ext.rb +22 -0
- data/lib/restfulie/client/ext/json_ext.rb +12 -0
- data/lib/restfulie/client/ext/xml_ext.rb +4 -0
- data/lib/restfulie/client/http.rb +25 -13
- data/lib/restfulie/client/http/cache.rb +22 -22
- data/lib/restfulie/client/http/error.rb +70 -70
- data/lib/restfulie/client/http/link_request_builder.rb +15 -0
- data/lib/restfulie/client/http/request_adapter.rb +209 -0
- data/lib/restfulie/client/http/request_builder.rb +107 -0
- data/lib/restfulie/client/http/request_builder_executor.rb +24 -0
- data/lib/restfulie/client/http/request_executor.rb +17 -0
- data/lib/restfulie/client/http/request_follow.rb +42 -0
- data/lib/restfulie/client/http/request_follow_executor.rb +10 -0
- data/lib/restfulie/client/http/request_history.rb +69 -0
- data/lib/restfulie/client/http/request_history_executor.rb +10 -0
- data/lib/restfulie/client/http/request_marshaller.rb +127 -0
- data/lib/restfulie/client/http/request_marshaller_executor.rb +10 -0
- data/lib/restfulie/client/http/response.rb +23 -0
- data/lib/restfulie/client/http/response_handler.rb +67 -0
- data/lib/restfulie/client/http/response_holder.rb +9 -0
- data/lib/restfulie/client/mikyung.rb +17 -14
- data/lib/restfulie/client/mikyung/concatenator.rb +15 -12
- data/lib/restfulie/client/mikyung/core.rb +65 -39
- data/lib/restfulie/client/mikyung/languages.rb +8 -26
- data/lib/restfulie/client/mikyung/languages/german.rb +24 -0
- data/lib/restfulie/client/mikyung/languages/portuguese.rb +23 -0
- data/lib/restfulie/client/mikyung/rest_process_model.rb +184 -107
- data/lib/restfulie/client/mikyung/steady_state_walker.rb +34 -28
- data/lib/restfulie/client/mikyung/then_condition.rb +33 -27
- data/lib/restfulie/client/mikyung/when_condition.rb +53 -49
- data/lib/restfulie/common.rb +7 -12
- data/lib/restfulie/common/converter.rb +20 -9
- data/lib/restfulie/common/converter/atom.rb +8 -83
- data/lib/restfulie/common/converter/atom/base.rb +89 -0
- data/lib/restfulie/common/converter/atom/builder.rb +101 -99
- data/lib/restfulie/common/converter/atom/helpers.rb +16 -8
- data/lib/restfulie/common/converter/json.rb +12 -0
- data/lib/restfulie/common/converter/json/base.rb +84 -0
- data/lib/restfulie/common/converter/json/builder.rb +102 -0
- data/lib/restfulie/common/converter/json/helpers.rb +17 -0
- data/lib/restfulie/common/converter/values.rb +30 -26
- data/lib/restfulie/common/converter/xml.rb +14 -0
- data/lib/restfulie/common/converter/xml/base.rb +61 -0
- data/lib/restfulie/common/converter/xml/builder.rb +112 -0
- data/lib/restfulie/common/converter/xml/helpers.rb +17 -0
- data/lib/restfulie/common/converter/xml/link.rb +25 -0
- data/lib/restfulie/common/converter/xml/links.rb +25 -0
- data/lib/restfulie/common/core_ext.rb +1 -5
- data/lib/restfulie/common/core_ext/hash.rb +12 -0
- data/lib/restfulie/common/error.rb +19 -0
- data/lib/restfulie/common/logger.rb +17 -9
- data/lib/restfulie/common/representation.rb +9 -10
- data/lib/restfulie/common/representation/atom.rb +15 -47
- data/lib/restfulie/common/representation/atom/base.rb +122 -365
- data/lib/restfulie/common/representation/atom/category.rb +41 -0
- data/lib/restfulie/common/representation/atom/entry.rb +52 -100
- data/lib/restfulie/common/representation/atom/factory.rb +43 -0
- data/lib/restfulie/common/representation/atom/feed.rb +103 -99
- data/lib/restfulie/common/representation/atom/link.rb +68 -0
- data/lib/restfulie/common/representation/atom/person.rb +48 -0
- data/lib/restfulie/common/representation/atom/source.rb +59 -0
- data/lib/restfulie/common/representation/atom/tag_collection.rb +38 -0
- data/lib/restfulie/common/representation/atom/xml.rb +95 -0
- data/lib/restfulie/common/representation/generic.rb +30 -29
- data/lib/restfulie/common/representation/json.rb +10 -22
- data/lib/restfulie/common/representation/json/base.rb +27 -0
- data/lib/restfulie/common/representation/json/keys_as_methods.rb +72 -0
- data/lib/restfulie/common/representation/json/link.rb +29 -0
- data/lib/restfulie/common/representation/json/link_collection.rb +23 -0
- data/lib/restfulie/common/representation/xml.rb +18 -227
- data/lib/restfulie/server.rb +9 -10
- data/lib/restfulie/server/action_controller.rb +10 -12
- data/lib/restfulie/server/action_controller/base.rb +18 -15
- data/lib/restfulie/server/action_controller/{routing/patch.rb → patch.rb} +0 -0
- data/lib/restfulie/server/action_controller/restful_responder.rb +43 -35
- data/lib/restfulie/server/action_view.rb +8 -6
- data/lib/restfulie/server/action_view/helpers.rb +47 -41
- data/lib/restfulie/server/action_view/template_handlers.rb +24 -12
- data/lib/restfulie/server/action_view/template_handlers/tokamak.rb +17 -12
- data/lib/restfulie/server/configuration.rb +22 -19
- data/lib/restfulie/server/{restfulie_controller.rb → controller.rb} +1 -10
- data/lib/restfulie/server/core_ext.rb +1 -1
- data/lib/restfulie/version.rb +14 -0
- metadata +52 -16
- data/lib/restfulie/client/http/adapter.rb +0 -502
- data/lib/restfulie/client/http/atom_ext.rb +0 -4
- data/lib/restfulie/client/http/core_ext.rb +0 -6
- data/lib/restfulie/client/http/core_ext/http.rb +0 -19
- data/lib/restfulie/client/http/marshal.rb +0 -145
- data/lib/restfulie/client/http/xml_ext.rb +0 -7
- data/lib/restfulie/common/core_ext/proc.rb +0 -48
- data/lib/restfulie/common/errors.rb +0 -15
- data/lib/restfulie/server/action_controller/routing.rb +0 -12
- data/lib/restfulie/server/action_controller/routing/restful_route.rb +0 -14
@@ -1,29 +1,33 @@
|
|
1
|
-
module Restfulie
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Converter
|
4
|
+
# This is a Blank Slate class to support the renderization of the values block for Resource Representation Interfaces
|
5
|
+
# Every Media type should implement a Builder with a insert_value method that renders the values block to a specific format
|
6
|
+
class Values
|
7
|
+
attr_accessor :builder
|
8
|
+
|
9
|
+
# BlankSlate
|
10
|
+
instance_methods.each do |m|
|
11
|
+
undef_method m unless m.to_s =~ /\[\]|method_missing|respond_to\?|^__/
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(builder)
|
15
|
+
@builder = builder
|
16
|
+
@current_prefix = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def [](prefix)
|
20
|
+
@current_prefix = prefix
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def method_missing(symbol, *args, &block)
|
25
|
+
name = symbol.to_s
|
26
|
+
prefix = @current_prefix
|
27
|
+
@current_prefix = nil
|
28
|
+
@builder.insert_value(name, prefix, *args, &block)
|
29
|
+
end
|
30
|
+
end
|
27
31
|
end
|
28
32
|
end
|
29
33
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Converter
|
4
|
+
module Xml
|
5
|
+
autoload :Base, 'restfulie/common/converter/xml/base'
|
6
|
+
autoload :Builder, 'restfulie/common/converter/xml/builder'
|
7
|
+
autoload :Helpers, 'restfulie/common/converter/xml/helpers'
|
8
|
+
autoload :Links, 'restfulie/common/converter/xml/links'
|
9
|
+
autoload :Link, 'restfulie/common/converter/xml/link'
|
10
|
+
extend Base::ClassMethods
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Converter
|
4
|
+
module Xml
|
5
|
+
module Base
|
6
|
+
module ClassMethods
|
7
|
+
mattr_reader :media_type_name
|
8
|
+
@@media_type_name = 'application/xml'
|
9
|
+
|
10
|
+
mattr_reader :headers
|
11
|
+
@@headers = {
|
12
|
+
:post => { 'Content-Type' => media_type_name }
|
13
|
+
}
|
14
|
+
|
15
|
+
def marshal(entity, options = {})
|
16
|
+
to_xml(entity, options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def unmarshal(string)
|
20
|
+
Hash.from_xml string
|
21
|
+
end
|
22
|
+
|
23
|
+
mattr_reader :recipes
|
24
|
+
@@recipes = {}
|
25
|
+
|
26
|
+
def describe_recipe(recipe_name, options={}, &block)
|
27
|
+
raise 'Undefined recipe' unless block_given?
|
28
|
+
raise 'Undefined recipe_name' unless recipe_name
|
29
|
+
@@recipes[recipe_name] = block
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_xml(obj, options = {}, &block)
|
33
|
+
return obj if obj.kind_of?(String)
|
34
|
+
|
35
|
+
if block_given?
|
36
|
+
recipe = block
|
37
|
+
elsif options[:recipe]
|
38
|
+
recipe = @@recipes[options[:recipe]]
|
39
|
+
elsif obj.kind_of?(Hash) && obj.size==1
|
40
|
+
return obj.values.first.to_xml(:root => obj.keys.first)
|
41
|
+
else
|
42
|
+
return obj.to_xml
|
43
|
+
end
|
44
|
+
|
45
|
+
# Create representation and proxy
|
46
|
+
builder = Builder.new(obj)
|
47
|
+
|
48
|
+
# Check recipe arity size before calling it
|
49
|
+
recipe.call(*[builder, obj, options][0,recipe.arity])
|
50
|
+
builder.doc.to_xml
|
51
|
+
end
|
52
|
+
|
53
|
+
def helper
|
54
|
+
Helpers
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Converter
|
4
|
+
module Xml
|
5
|
+
# Implements the interface for marshal Xml media type requests (application/xml)
|
6
|
+
class Builder
|
7
|
+
attr_reader :doc
|
8
|
+
def initialize(obj, options = {})
|
9
|
+
@doc = Nokogiri::XML::Document.new
|
10
|
+
@obj = obj
|
11
|
+
root = options[:root] || Restfulie::Common::Converter.root_element_for(obj)
|
12
|
+
@parent = @doc.create_element(root)
|
13
|
+
@parent.parent = @doc
|
14
|
+
end
|
15
|
+
|
16
|
+
def values(options = {}, &block)
|
17
|
+
options.each do |key,value|
|
18
|
+
attr = key.to_s
|
19
|
+
if attr =~ /^xmlns(:\w+)?$/
|
20
|
+
ns = attr.split(":", 2)[1]
|
21
|
+
@parent.add_namespace_definition(ns, value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
yield Values.new(self)
|
25
|
+
end
|
26
|
+
|
27
|
+
def insert_value(name, prefix, *args, &block)
|
28
|
+
node = create_element(name.to_s, prefix, *args)
|
29
|
+
node.parent = @parent
|
30
|
+
|
31
|
+
if block_given?
|
32
|
+
@parent = node
|
33
|
+
block.call
|
34
|
+
@parent = node.parent
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def link(relationship, uri, options = {})
|
39
|
+
options["rel"] = relationship.to_s
|
40
|
+
options["href"] = uri
|
41
|
+
options["type"] ||= "application/xml"
|
42
|
+
insert_value("link", nil, options)
|
43
|
+
end
|
44
|
+
|
45
|
+
def members(a_collection = nil, &block)
|
46
|
+
collection = a_collection || @obj
|
47
|
+
raise Error::BuilderError("Members method require a collection to execute") unless collection.respond_to?(:each)
|
48
|
+
collection.each do |member|
|
49
|
+
entry = @doc.create_element(Restfulie::Common::Converter.root_element_for(member))
|
50
|
+
entry.parent = @parent
|
51
|
+
@parent = entry
|
52
|
+
block.call(self, member)
|
53
|
+
@parent = entry.parent
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def create_element(node, prefix, *args)
|
60
|
+
node = @doc.create_element(node) do |n|
|
61
|
+
if prefix
|
62
|
+
if namespace = prefix_valid?(prefix)
|
63
|
+
# Adding namespace prefix
|
64
|
+
n.namespace = namespace
|
65
|
+
namespace = nil
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
args.each do |arg|
|
70
|
+
case arg
|
71
|
+
# Adding XML attributes
|
72
|
+
when Hash
|
73
|
+
arg.each { |k,v|
|
74
|
+
key = k.to_s
|
75
|
+
if key =~ /^xmlns(:\w+)?$/
|
76
|
+
ns_name = key.split(":", 2)[1]
|
77
|
+
n.add_namespace_definition(ns_name, v)
|
78
|
+
next
|
79
|
+
end
|
80
|
+
n[k.to_s] = v.to_s
|
81
|
+
}
|
82
|
+
# Adding XML node content
|
83
|
+
else
|
84
|
+
content = if arg.kind_of?(Time) || arg.kind_of?(DateTime)
|
85
|
+
arg.xmlschema
|
86
|
+
else
|
87
|
+
arg
|
88
|
+
end
|
89
|
+
n.content = content
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def prefix_valid?(prefix)
|
96
|
+
ns = @parent.namespace_definitions.find { |x| x.prefix == prefix.to_s }
|
97
|
+
|
98
|
+
unless ns
|
99
|
+
@parent.ancestors.each do |a|
|
100
|
+
next if a == @doc
|
101
|
+
ns = a.namespace_definitions.find { |x| x.prefix == prefix.to_s }
|
102
|
+
break if ns
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
return ns
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Converter
|
4
|
+
module Xml
|
5
|
+
module Helpers
|
6
|
+
def collection(obj, *args, &block)
|
7
|
+
Xml.to_xml(obj, {}, &block)
|
8
|
+
end
|
9
|
+
|
10
|
+
def member(obj, *args, &block)
|
11
|
+
Xml.to_xml(obj, {}, &block)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Converter
|
4
|
+
module Xml
|
5
|
+
class Link
|
6
|
+
def initialize(options = {})
|
7
|
+
@options = options
|
8
|
+
end
|
9
|
+
def href
|
10
|
+
@options["href"]
|
11
|
+
end
|
12
|
+
def rel
|
13
|
+
@options["rel"]
|
14
|
+
end
|
15
|
+
def content_type
|
16
|
+
@options["type"]
|
17
|
+
end
|
18
|
+
def type
|
19
|
+
content_type
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Converter
|
4
|
+
module Xml
|
5
|
+
class Links
|
6
|
+
def initialize(links)
|
7
|
+
links = [links] unless links.kind_of? Array
|
8
|
+
links = [] unless links
|
9
|
+
@links = links.map do |l|
|
10
|
+
link = Restfulie::Common::Converter::Xml::Link.new(l)
|
11
|
+
link.instance_eval { self.class.send :include, ::Restfulie::Client::HTTP::LinkRequestBuilder }
|
12
|
+
link
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def method_missing(sym, *args)
|
17
|
+
@links.find do |link|
|
18
|
+
link.rel == sym.to_s
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Hash
|
2
|
+
def links(*args)
|
3
|
+
links = fetch("link", [])
|
4
|
+
Restfulie::Common::Converter::Xml::Links.new(links)
|
5
|
+
end
|
6
|
+
def method_missing(sym, *args)
|
7
|
+
self[sym.to_s].nil? ? super(sym, args) : self[sym.to_s]
|
8
|
+
end
|
9
|
+
def respond_to?(sym)
|
10
|
+
include?(sym.to_s) || super(sym)
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Error
|
4
|
+
class RestfulieError < StandardError; end
|
5
|
+
class MarshallingError < RestfulieError; end
|
6
|
+
class UndefinedMarshallingError < MarshallingError; end
|
7
|
+
|
8
|
+
# Atom marshallinh error
|
9
|
+
class AtomMarshallingError < MarshallingError; end
|
10
|
+
class NameSpaceError < AtomMarshallingError; end
|
11
|
+
|
12
|
+
# Converter
|
13
|
+
class ConverterError < RestfulieError; end
|
14
|
+
|
15
|
+
# builder
|
16
|
+
class BuilderError < RestfulieError; end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,11 +1,19 @@
|
|
1
|
-
module Restfulie
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
class Logger
|
4
|
+
# Configure the logger used by Restfulie
|
5
|
+
#
|
6
|
+
# The logger defaults to ActiveSupport::BufferedLogger.new(STDOUT)
|
7
|
+
def self.logger
|
8
|
+
@@logger
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.logger=(value)
|
12
|
+
@@logger = value
|
13
|
+
end
|
14
|
+
|
15
|
+
@@logger = ActiveSupport::BufferedLogger.new(STDOUT)
|
16
|
+
@@logger.level = ::Logger::DEBUG
|
17
|
+
end
|
7
18
|
end
|
8
19
|
end
|
9
|
-
|
10
|
-
Restfulie::Common::Logger.logger = ActiveSupport::BufferedLogger.new(STDOUT)
|
11
|
-
Restfulie::Common::Logger.logger.level = Logger::DEBUG
|
@@ -1,11 +1,10 @@
|
|
1
|
-
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
require File.join(File.dirname(__FILE__), 'representation', file)
|
1
|
+
module Restfulie
|
2
|
+
module Common
|
3
|
+
module Representation
|
4
|
+
autoload :Atom, 'restfulie/common/representation/atom'
|
5
|
+
autoload :Generic, 'restfulie/common/representation/generic'
|
6
|
+
autoload :Json, 'restfulie/common/representation/json'
|
7
|
+
autoload :XmlD, 'restfulie/common/representation/xml'
|
8
|
+
end
|
9
|
+
end
|
11
10
|
end
|
@@ -1,52 +1,20 @@
|
|
1
1
|
require 'nokogiri'
|
2
2
|
|
3
|
-
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
SCHEMA = nil
|
19
|
-
else
|
20
|
-
SCHEMA = ::Nokogiri::XML::RelaxNG(File.open(RELAXNG_ATOM))
|
3
|
+
module Restfulie
|
4
|
+
module Common
|
5
|
+
module Representation
|
6
|
+
module Atom
|
7
|
+
autoload :Factory, 'restfulie/common/representation/atom/factory'
|
8
|
+
autoload :XML, 'restfulie/common/representation/atom/xml'
|
9
|
+
autoload :Base, 'restfulie/common/representation/atom/base'
|
10
|
+
autoload :TagCollection, 'restfulie/common/representation/atom/tag_collection'
|
11
|
+
autoload :Link, 'restfulie/common/representation/atom/link'
|
12
|
+
autoload :Person, 'restfulie/common/representation/atom/person'
|
13
|
+
autoload :Category, 'restfulie/common/representation/atom/category'
|
14
|
+
autoload :Feed, 'restfulie/common/representation/atom/feed'
|
15
|
+
autoload :Entry, 'restfulie/common/representation/atom/entry'
|
16
|
+
autoload :Source, 'restfulie/common/representation/atom/source'
|
17
|
+
end
|
21
18
|
end
|
22
|
-
|
23
|
-
class << self
|
24
|
-
def create(string_or_io)
|
25
|
-
doc = string_or_io.kind_of?(Nokogiri::XML::Document) ? string_or_io : Nokogiri::XML(string_or_io)
|
26
|
-
|
27
|
-
if SCHEMA && !(errors = SCHEMA.validate(doc)).empty?
|
28
|
-
raise Restfulie::Common::Representation::Atom::AtomInvalid.new("Invalid Atom: "+ errors.join(", "))
|
29
|
-
end
|
30
|
-
|
31
|
-
if doc.root.name == "feed"
|
32
|
-
Restfulie::Common::Representation::Atom::Feed.new(doc)
|
33
|
-
elsif doc.root.name == "entry"
|
34
|
-
Restfulie::Common::Representation::Atom::Entry.new(doc)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
19
|
end
|
40
|
-
|
41
|
-
class AtomInvalid < StandardError; end
|
42
|
-
|
43
20
|
end
|
44
|
-
|
45
|
-
%w(
|
46
|
-
base
|
47
|
-
feed
|
48
|
-
entry
|
49
|
-
).each do |file|
|
50
|
-
require File.join(File.dirname(__FILE__), 'atom', file)
|
51
|
-
end
|
52
|
-
|