restfulie 0.1.0.beta1 → 0.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/README.textile +87 -99
- data/Rakefile +14 -109
- data/lib/restfulie.rb +183 -23
- metadata +12 -197
- data/Gemfile +0 -28
- data/Gemfile.lock +0 -128
- data/LICENSE +0 -17
- data/lib/restfulie/client.rb +0 -26
- data/lib/restfulie/client/base.rb +0 -36
- data/lib/restfulie/client/cache.rb +0 -11
- data/lib/restfulie/client/cache/basic.rb +0 -76
- data/lib/restfulie/client/cache/fake.rb +0 -15
- data/lib/restfulie/client/cache/http_ext.rb +0 -123
- data/lib/restfulie/client/cache/restrictions.rb +0 -13
- data/lib/restfulie/client/configuration.rb +0 -67
- data/lib/restfulie/client/dsl.rb +0 -66
- data/lib/restfulie/client/entry_point.rb +0 -61
- data/lib/restfulie/client/ext/atom_ext.rb +0 -14
- data/lib/restfulie/client/ext/http_ext.rb +0 -22
- data/lib/restfulie/client/ext/json_ext.rb +0 -16
- data/lib/restfulie/client/feature.rb +0 -5
- data/lib/restfulie/client/feature/base.rb +0 -75
- data/lib/restfulie/client/feature/base_request.rb +0 -35
- data/lib/restfulie/client/feature/cache.rb +0 -16
- data/lib/restfulie/client/feature/enhance_response.rb +0 -12
- data/lib/restfulie/client/feature/follow_request.rb +0 -41
- data/lib/restfulie/client/feature/history.rb +0 -26
- data/lib/restfulie/client/feature/history_request.rb +0 -19
- data/lib/restfulie/client/feature/open_search.rb +0 -21
- data/lib/restfulie/client/feature/open_search/pattern_matcher.rb +0 -25
- data/lib/restfulie/client/feature/serialize_body.rb +0 -32
- data/lib/restfulie/client/feature/setup_header.rb +0 -22
- data/lib/restfulie/client/feature/throw_error.rb +0 -41
- data/lib/restfulie/client/feature/verb.rb +0 -119
- data/lib/restfulie/client/http.rb +0 -7
- data/lib/restfulie/client/http/cache.rb +0 -28
- data/lib/restfulie/client/http/error.rb +0 -77
- data/lib/restfulie/client/http/response_holder.rb +0 -29
- data/lib/restfulie/client/master_delegator.rb +0 -31
- data/lib/restfulie/client/mikyung.rb +0 -15
- data/lib/restfulie/client/mikyung/concatenator.rb +0 -18
- data/lib/restfulie/client/mikyung/core.rb +0 -70
- data/lib/restfulie/client/mikyung/languages.rb +0 -11
- data/lib/restfulie/client/mikyung/languages/german.rb +0 -24
- data/lib/restfulie/client/mikyung/languages/portuguese.rb +0 -23
- data/lib/restfulie/client/mikyung/rest_process_model.rb +0 -191
- data/lib/restfulie/client/mikyung/steady_state_walker.rb +0 -38
- data/lib/restfulie/client/mikyung/then_condition.rb +0 -39
- data/lib/restfulie/client/mikyung/when_condition.rb +0 -57
- data/lib/restfulie/common.rb +0 -18
- data/lib/restfulie/common/converter.rb +0 -43
- data/lib/restfulie/common/converter/atom.rb +0 -12
- data/lib/restfulie/common/converter/atom/base.rb +0 -91
- data/lib/restfulie/common/converter/atom/builder.rb +0 -111
- data/lib/restfulie/common/converter/atom/helpers.rb +0 -17
- data/lib/restfulie/common/converter/json.rb +0 -12
- data/lib/restfulie/common/converter/json/base.rb +0 -87
- data/lib/restfulie/common/converter/json/builder.rb +0 -102
- data/lib/restfulie/common/converter/json/helpers.rb +0 -17
- data/lib/restfulie/common/converter/open_search.rb +0 -16
- data/lib/restfulie/common/converter/open_search/descriptor.rb +0 -32
- data/lib/restfulie/common/converter/values.rb +0 -33
- data/lib/restfulie/common/converter/xml.rb +0 -14
- data/lib/restfulie/common/converter/xml/base.rb +0 -63
- data/lib/restfulie/common/converter/xml/builder.rb +0 -113
- data/lib/restfulie/common/converter/xml/helpers.rb +0 -17
- data/lib/restfulie/common/converter/xml/link.rb +0 -30
- data/lib/restfulie/common/converter/xml/links.rb +0 -21
- data/lib/restfulie/common/core_ext.rb +0 -1
- data/lib/restfulie/common/core_ext/hash.rb +0 -18
- data/lib/restfulie/common/error.rb +0 -19
- data/lib/restfulie/common/links.rb +0 -9
- data/lib/restfulie/common/logger.rb +0 -19
- data/lib/restfulie/common/representation.rb +0 -3
- data/lib/restfulie/common/representation/atom.rb +0 -20
- data/lib/restfulie/common/representation/atom/atom.rng +0 -597
- data/lib/restfulie/common/representation/atom/base.rb +0 -142
- data/lib/restfulie/common/representation/atom/category.rb +0 -41
- data/lib/restfulie/common/representation/atom/entry.rb +0 -59
- data/lib/restfulie/common/representation/atom/factory.rb +0 -43
- data/lib/restfulie/common/representation/atom/feed.rb +0 -110
- data/lib/restfulie/common/representation/atom/link.rb +0 -68
- data/lib/restfulie/common/representation/atom/person.rb +0 -48
- data/lib/restfulie/common/representation/atom/source.rb +0 -59
- data/lib/restfulie/common/representation/atom/tag_collection.rb +0 -38
- data/lib/restfulie/common/representation/atom/xml.rb +0 -90
- data/lib/restfulie/common/representation/generic.rb +0 -22
- data/lib/restfulie/common/representation/json.rb +0 -13
- data/lib/restfulie/common/representation/json/base.rb +0 -27
- data/lib/restfulie/common/representation/json/keys_as_methods.rb +0 -74
- data/lib/restfulie/common/representation/json/link.rb +0 -29
- data/lib/restfulie/common/representation/json/link_collection.rb +0 -23
- data/lib/restfulie/common/representation/links.rb +0 -11
- data/lib/restfulie/server.rb +0 -25
- data/lib/restfulie/server/action_controller.rb +0 -11
- data/lib/restfulie/server/action_controller/base.rb +0 -48
- data/lib/restfulie/server/action_controller/params_parser.rb +0 -100
- data/lib/restfulie/server/action_controller/patch.rb +0 -6
- data/lib/restfulie/server/action_controller/restful_responder.rb +0 -12
- data/lib/restfulie/server/action_controller/trait.rb +0 -9
- data/lib/restfulie/server/action_controller/trait/cacheable.rb +0 -81
- data/lib/restfulie/server/action_controller/trait/created.rb +0 -17
- data/lib/restfulie/server/action_view.rb +0 -10
- data/lib/restfulie/server/action_view/helpers.rb +0 -50
- data/lib/restfulie/server/action_view/template_handlers.rb +0 -30
- data/lib/restfulie/server/action_view/template_handlers/tokamak.rb +0 -21
- data/lib/restfulie/server/configuration.rb +0 -24
- data/lib/restfulie/server/controller.rb +0 -74
- data/lib/restfulie/server/core_ext.rb +0 -1
- data/lib/restfulie/server/core_ext/array.rb +0 -61
- data/lib/restfulie/version.rb +0 -14
@@ -1,48 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
module Atom
|
5
|
-
class Person < XML
|
6
|
-
def initialize(node_type, options_or_obj)
|
7
|
-
if options_or_obj.kind_of?(Hash)
|
8
|
-
@doc = Nokogiri::XML::Document.new()
|
9
|
-
node = @doc.create_element(node_type)
|
10
|
-
node.add_namespace_definition(nil, "http://www.w3.org/2005/Atom")
|
11
|
-
node.parent = @doc
|
12
|
-
super(node)
|
13
|
-
options_or_obj.each do |key,value|
|
14
|
-
self.send("#{key}=".to_sym, value)
|
15
|
-
end
|
16
|
-
else
|
17
|
-
super(options_or_obj)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def name
|
22
|
-
text("name")
|
23
|
-
end
|
24
|
-
|
25
|
-
def name=(value)
|
26
|
-
set_text("name", value)
|
27
|
-
end
|
28
|
-
|
29
|
-
def uri
|
30
|
-
text("uri")
|
31
|
-
end
|
32
|
-
|
33
|
-
def uri=(value)
|
34
|
-
set_text("uri", value)
|
35
|
-
end
|
36
|
-
|
37
|
-
def email
|
38
|
-
text("email")
|
39
|
-
end
|
40
|
-
|
41
|
-
def email=(value)
|
42
|
-
set_text("email", value)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
module Atom
|
5
|
-
class Source < XML
|
6
|
-
def initialize(options_or_obj)
|
7
|
-
if options_or_obj.kind_of?(Hash)
|
8
|
-
@doc = Nokogiri::XML::Document.new()
|
9
|
-
node = @doc.create_element("source")
|
10
|
-
node.add_namespace_definition(nil, "http://www.w3.org/2005/Atom")
|
11
|
-
node.parent = @doc
|
12
|
-
super(node)
|
13
|
-
options_or_obj.each do |key,value|
|
14
|
-
self.send("#{key}=".to_sym, value)
|
15
|
-
end
|
16
|
-
else
|
17
|
-
super(options_or_obj)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def id
|
22
|
-
text("id")
|
23
|
-
end
|
24
|
-
|
25
|
-
def id=(value)
|
26
|
-
set_text("id", value)
|
27
|
-
end
|
28
|
-
|
29
|
-
# text
|
30
|
-
def title
|
31
|
-
text("title")
|
32
|
-
end
|
33
|
-
|
34
|
-
def title=(value)
|
35
|
-
set_text("title", value)
|
36
|
-
end
|
37
|
-
|
38
|
-
def updated
|
39
|
-
value = text("updated")
|
40
|
-
Time.parse(value) unless value.nil?
|
41
|
-
end
|
42
|
-
|
43
|
-
def updated=(value)
|
44
|
-
set_text("updated", value)
|
45
|
-
end
|
46
|
-
|
47
|
-
# text
|
48
|
-
def rights
|
49
|
-
text("rights")
|
50
|
-
end
|
51
|
-
|
52
|
-
def rights=(value)
|
53
|
-
set_text("rights", value)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
module Atom
|
5
|
-
class TagCollection < ::Array
|
6
|
-
def initialize(parent_node, &block)
|
7
|
-
@node = parent_node
|
8
|
-
@method_missing_block = block_given? ? block : nil
|
9
|
-
super(0)
|
10
|
-
end
|
11
|
-
|
12
|
-
def <<(obj)
|
13
|
-
obj = [obj] unless obj.kind_of?(Array)
|
14
|
-
obj.each do |o|
|
15
|
-
o.doc.parent = @node
|
16
|
-
super(o)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def delete(obj)
|
21
|
-
if super(obj)
|
22
|
-
obj.doc.unlink
|
23
|
-
obj = nil
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def method_missing(symbol, *args, &block)
|
28
|
-
if @method_missing_block
|
29
|
-
@method_missing_block.call(self, symbol, *args)
|
30
|
-
else
|
31
|
-
super
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
module Atom
|
5
|
-
class XML
|
6
|
-
attr_accessor :doc
|
7
|
-
|
8
|
-
def initialize(xml_obj = nil)
|
9
|
-
if xml_obj
|
10
|
-
xml_obj.kind_of?(Nokogiri::XML::Document) ? @doc = xml_obj.root : @doc = xml_obj
|
11
|
-
else
|
12
|
-
@doc = Nokogiri::XML::Document.new
|
13
|
-
root_node = @doc.create_element(atom_type.to_s)
|
14
|
-
root_node.add_namespace_definition(nil, "http://www.w3.org/2005/Atom")
|
15
|
-
root_node.parent = @doc
|
16
|
-
@doc = @doc.root
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# Tools
|
21
|
-
def css(*args)
|
22
|
-
@doc.css(*args)
|
23
|
-
end
|
24
|
-
|
25
|
-
def xpath(*args)
|
26
|
-
@doc.xpath(*args)
|
27
|
-
end
|
28
|
-
|
29
|
-
def atom_type
|
30
|
-
self.class.name.demodulize.downcase
|
31
|
-
end
|
32
|
-
|
33
|
-
def to_xml
|
34
|
-
@doc.to_xml
|
35
|
-
end
|
36
|
-
|
37
|
-
def to_s
|
38
|
-
to_xml
|
39
|
-
end
|
40
|
-
|
41
|
-
def method_missing(method)
|
42
|
-
text(method) || super
|
43
|
-
end
|
44
|
-
|
45
|
-
protected
|
46
|
-
|
47
|
-
def text(node_name)
|
48
|
-
(node = @doc.at_xpath("xmlns:#{node_name}")) ? node.content : nil
|
49
|
-
end
|
50
|
-
|
51
|
-
def set_text(node_name, value)
|
52
|
-
if (node = @doc.at_xpath("xmlns:#{node_name}"))
|
53
|
-
value = value.xmlschema if value.kind_of?(Time) || value.kind_of?(DateTime)
|
54
|
-
node.content = value
|
55
|
-
else
|
56
|
-
node = create_element(node_name, value)
|
57
|
-
node.parent = @doc
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
private
|
62
|
-
|
63
|
-
def create_element(node, *args)
|
64
|
-
node = @doc.document.create_element(node) do |n|
|
65
|
-
args.each do |arg|
|
66
|
-
case arg
|
67
|
-
# Adding XML attributes
|
68
|
-
when Hash
|
69
|
-
arg.each { |k,v|
|
70
|
-
key = k.to_s
|
71
|
-
if key =~ /^xmlns(:\w+)?$/
|
72
|
-
ns_name = key.split(":", 2)[1]
|
73
|
-
n.add_namespace_definition(ns_name, v)
|
74
|
-
next
|
75
|
-
end
|
76
|
-
n[k.to_s] = v.to_s
|
77
|
-
}
|
78
|
-
# Adding XML node content
|
79
|
-
else
|
80
|
-
arg.kind_of?(Time) || arg.kind_of?(DateTime) ? content = arg.xmlschema : content = arg
|
81
|
-
n.content = content
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
# Unknown representation's unmarshalling on the client side
|
5
|
-
class Generic
|
6
|
-
|
7
|
-
# Because there is no media type registered, return the content itself
|
8
|
-
def unmarshal(content)
|
9
|
-
def content.links
|
10
|
-
[]
|
11
|
-
end
|
12
|
-
content
|
13
|
-
end
|
14
|
-
|
15
|
-
def marshal(string, rel)
|
16
|
-
string
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
class Json
|
5
|
-
autoload :Base, 'restfulie/common/representation/json/base'
|
6
|
-
autoload :KeysAsMethods, 'restfulie/common/representation/json/keys_as_methods'
|
7
|
-
autoload :Link, 'restfulie/common/representation/json/link'
|
8
|
-
autoload :LinkCollection, 'restfulie/common/representation/json/link_collection'
|
9
|
-
extend Base::ClassMethods
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
class Json
|
5
|
-
module Base
|
6
|
-
module ClassMethods
|
7
|
-
|
8
|
-
# creates a json unmarshalled version of this object
|
9
|
-
def create(obj = nil)
|
10
|
-
@json = {}
|
11
|
-
return @json.extend(KeysAsMethods) unless obj
|
12
|
-
|
13
|
-
if obj.kind_of?(Hash) || obj.kind_of?(Array)
|
14
|
-
@json = obj
|
15
|
-
else
|
16
|
-
@json = ::JSON.parse(obj)
|
17
|
-
end
|
18
|
-
|
19
|
-
@json.extend(KeysAsMethods)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
class Json
|
5
|
-
module KeysAsMethods
|
6
|
-
def self.extended(base)
|
7
|
-
[:type, :id].each { |m| base.__free_method__(m) }
|
8
|
-
end
|
9
|
-
|
10
|
-
def [](key)
|
11
|
-
__normalize__(super(key))
|
12
|
-
end
|
13
|
-
|
14
|
-
def []=(key, value)
|
15
|
-
super(key,value)
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_s
|
19
|
-
super.to_json
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_missing(name, *args)
|
23
|
-
method_name = name.to_s
|
24
|
-
if method_name.last == '='
|
25
|
-
self[method_name.chop] = args[0]
|
26
|
-
else
|
27
|
-
self[method_name]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# if you have a key that is also a method (such as Array#size)
|
32
|
-
# you can use this to free the method and use the method obj.size
|
33
|
-
# to access the value of key "size".
|
34
|
-
# you still can access the old method with __[method_name]__
|
35
|
-
def __free_method__(sym)
|
36
|
-
if self.__metaclass__.method_defined?(sym) && !respond_to?("__#{sym}__")
|
37
|
-
self.__metaclass__.send(:alias_method, "__#{sym}__", sym)
|
38
|
-
end
|
39
|
-
self.__metaclass__.send(:define_method, sym) { method_missing(sym.to_s) }
|
40
|
-
self
|
41
|
-
end
|
42
|
-
|
43
|
-
def __metaclass__
|
44
|
-
class << self; self; end
|
45
|
-
end
|
46
|
-
|
47
|
-
include Restfulie::Common::Links
|
48
|
-
|
49
|
-
# easy accessors to links
|
50
|
-
def links
|
51
|
-
some_links = self["link"]
|
52
|
-
return nil unless some_links
|
53
|
-
some_links = [some_links] unless some_links.kind_of? Array
|
54
|
-
LinkCollection.new(some_links)
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
def __normalize__(value)
|
60
|
-
case value
|
61
|
-
when Hash
|
62
|
-
value.extend(KeysAsMethods)
|
63
|
-
when Array
|
64
|
-
value.map { |v| __normalize__(v) }
|
65
|
-
else
|
66
|
-
value
|
67
|
-
end
|
68
|
-
value
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
class Json
|
5
|
-
class Link
|
6
|
-
def initialize(obj)
|
7
|
-
@obj = obj
|
8
|
-
end
|
9
|
-
|
10
|
-
def type
|
11
|
-
@obj.type
|
12
|
-
end
|
13
|
-
|
14
|
-
def href
|
15
|
-
@obj.href
|
16
|
-
end
|
17
|
-
|
18
|
-
def rel
|
19
|
-
@obj.rel
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_missing(symbol, *args, &block)
|
23
|
-
@obj.send(symbol, *args, &block)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Common
|
3
|
-
module Representation
|
4
|
-
class Json
|
5
|
-
class LinkCollection
|
6
|
-
def initialize(parent_node)
|
7
|
-
@node = parent_node
|
8
|
-
end
|
9
|
-
|
10
|
-
def method_missing(symbol, *args, &block)
|
11
|
-
linkset = @node.select {|link| link.rel == symbol.to_s }
|
12
|
-
linkset.map! { |link| Link.new(link) }
|
13
|
-
unless linkset.empty?
|
14
|
-
linkset.size == 1 ? linkset.first : linkset
|
15
|
-
else
|
16
|
-
nil
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|