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.
Files changed (111) hide show
  1. data/README.textile +87 -99
  2. data/Rakefile +14 -109
  3. data/lib/restfulie.rb +183 -23
  4. metadata +12 -197
  5. data/Gemfile +0 -28
  6. data/Gemfile.lock +0 -128
  7. data/LICENSE +0 -17
  8. data/lib/restfulie/client.rb +0 -26
  9. data/lib/restfulie/client/base.rb +0 -36
  10. data/lib/restfulie/client/cache.rb +0 -11
  11. data/lib/restfulie/client/cache/basic.rb +0 -76
  12. data/lib/restfulie/client/cache/fake.rb +0 -15
  13. data/lib/restfulie/client/cache/http_ext.rb +0 -123
  14. data/lib/restfulie/client/cache/restrictions.rb +0 -13
  15. data/lib/restfulie/client/configuration.rb +0 -67
  16. data/lib/restfulie/client/dsl.rb +0 -66
  17. data/lib/restfulie/client/entry_point.rb +0 -61
  18. data/lib/restfulie/client/ext/atom_ext.rb +0 -14
  19. data/lib/restfulie/client/ext/http_ext.rb +0 -22
  20. data/lib/restfulie/client/ext/json_ext.rb +0 -16
  21. data/lib/restfulie/client/feature.rb +0 -5
  22. data/lib/restfulie/client/feature/base.rb +0 -75
  23. data/lib/restfulie/client/feature/base_request.rb +0 -35
  24. data/lib/restfulie/client/feature/cache.rb +0 -16
  25. data/lib/restfulie/client/feature/enhance_response.rb +0 -12
  26. data/lib/restfulie/client/feature/follow_request.rb +0 -41
  27. data/lib/restfulie/client/feature/history.rb +0 -26
  28. data/lib/restfulie/client/feature/history_request.rb +0 -19
  29. data/lib/restfulie/client/feature/open_search.rb +0 -21
  30. data/lib/restfulie/client/feature/open_search/pattern_matcher.rb +0 -25
  31. data/lib/restfulie/client/feature/serialize_body.rb +0 -32
  32. data/lib/restfulie/client/feature/setup_header.rb +0 -22
  33. data/lib/restfulie/client/feature/throw_error.rb +0 -41
  34. data/lib/restfulie/client/feature/verb.rb +0 -119
  35. data/lib/restfulie/client/http.rb +0 -7
  36. data/lib/restfulie/client/http/cache.rb +0 -28
  37. data/lib/restfulie/client/http/error.rb +0 -77
  38. data/lib/restfulie/client/http/response_holder.rb +0 -29
  39. data/lib/restfulie/client/master_delegator.rb +0 -31
  40. data/lib/restfulie/client/mikyung.rb +0 -15
  41. data/lib/restfulie/client/mikyung/concatenator.rb +0 -18
  42. data/lib/restfulie/client/mikyung/core.rb +0 -70
  43. data/lib/restfulie/client/mikyung/languages.rb +0 -11
  44. data/lib/restfulie/client/mikyung/languages/german.rb +0 -24
  45. data/lib/restfulie/client/mikyung/languages/portuguese.rb +0 -23
  46. data/lib/restfulie/client/mikyung/rest_process_model.rb +0 -191
  47. data/lib/restfulie/client/mikyung/steady_state_walker.rb +0 -38
  48. data/lib/restfulie/client/mikyung/then_condition.rb +0 -39
  49. data/lib/restfulie/client/mikyung/when_condition.rb +0 -57
  50. data/lib/restfulie/common.rb +0 -18
  51. data/lib/restfulie/common/converter.rb +0 -43
  52. data/lib/restfulie/common/converter/atom.rb +0 -12
  53. data/lib/restfulie/common/converter/atom/base.rb +0 -91
  54. data/lib/restfulie/common/converter/atom/builder.rb +0 -111
  55. data/lib/restfulie/common/converter/atom/helpers.rb +0 -17
  56. data/lib/restfulie/common/converter/json.rb +0 -12
  57. data/lib/restfulie/common/converter/json/base.rb +0 -87
  58. data/lib/restfulie/common/converter/json/builder.rb +0 -102
  59. data/lib/restfulie/common/converter/json/helpers.rb +0 -17
  60. data/lib/restfulie/common/converter/open_search.rb +0 -16
  61. data/lib/restfulie/common/converter/open_search/descriptor.rb +0 -32
  62. data/lib/restfulie/common/converter/values.rb +0 -33
  63. data/lib/restfulie/common/converter/xml.rb +0 -14
  64. data/lib/restfulie/common/converter/xml/base.rb +0 -63
  65. data/lib/restfulie/common/converter/xml/builder.rb +0 -113
  66. data/lib/restfulie/common/converter/xml/helpers.rb +0 -17
  67. data/lib/restfulie/common/converter/xml/link.rb +0 -30
  68. data/lib/restfulie/common/converter/xml/links.rb +0 -21
  69. data/lib/restfulie/common/core_ext.rb +0 -1
  70. data/lib/restfulie/common/core_ext/hash.rb +0 -18
  71. data/lib/restfulie/common/error.rb +0 -19
  72. data/lib/restfulie/common/links.rb +0 -9
  73. data/lib/restfulie/common/logger.rb +0 -19
  74. data/lib/restfulie/common/representation.rb +0 -3
  75. data/lib/restfulie/common/representation/atom.rb +0 -20
  76. data/lib/restfulie/common/representation/atom/atom.rng +0 -597
  77. data/lib/restfulie/common/representation/atom/base.rb +0 -142
  78. data/lib/restfulie/common/representation/atom/category.rb +0 -41
  79. data/lib/restfulie/common/representation/atom/entry.rb +0 -59
  80. data/lib/restfulie/common/representation/atom/factory.rb +0 -43
  81. data/lib/restfulie/common/representation/atom/feed.rb +0 -110
  82. data/lib/restfulie/common/representation/atom/link.rb +0 -68
  83. data/lib/restfulie/common/representation/atom/person.rb +0 -48
  84. data/lib/restfulie/common/representation/atom/source.rb +0 -59
  85. data/lib/restfulie/common/representation/atom/tag_collection.rb +0 -38
  86. data/lib/restfulie/common/representation/atom/xml.rb +0 -90
  87. data/lib/restfulie/common/representation/generic.rb +0 -22
  88. data/lib/restfulie/common/representation/json.rb +0 -13
  89. data/lib/restfulie/common/representation/json/base.rb +0 -27
  90. data/lib/restfulie/common/representation/json/keys_as_methods.rb +0 -74
  91. data/lib/restfulie/common/representation/json/link.rb +0 -29
  92. data/lib/restfulie/common/representation/json/link_collection.rb +0 -23
  93. data/lib/restfulie/common/representation/links.rb +0 -11
  94. data/lib/restfulie/server.rb +0 -25
  95. data/lib/restfulie/server/action_controller.rb +0 -11
  96. data/lib/restfulie/server/action_controller/base.rb +0 -48
  97. data/lib/restfulie/server/action_controller/params_parser.rb +0 -100
  98. data/lib/restfulie/server/action_controller/patch.rb +0 -6
  99. data/lib/restfulie/server/action_controller/restful_responder.rb +0 -12
  100. data/lib/restfulie/server/action_controller/trait.rb +0 -9
  101. data/lib/restfulie/server/action_controller/trait/cacheable.rb +0 -81
  102. data/lib/restfulie/server/action_controller/trait/created.rb +0 -17
  103. data/lib/restfulie/server/action_view.rb +0 -10
  104. data/lib/restfulie/server/action_view/helpers.rb +0 -50
  105. data/lib/restfulie/server/action_view/template_handlers.rb +0 -30
  106. data/lib/restfulie/server/action_view/template_handlers/tokamak.rb +0 -21
  107. data/lib/restfulie/server/configuration.rb +0 -24
  108. data/lib/restfulie/server/controller.rb +0 -74
  109. data/lib/restfulie/server/core_ext.rb +0 -1
  110. data/lib/restfulie/server/core_ext/array.rb +0 -61
  111. 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
@@ -1,11 +0,0 @@
1
- module Restfulie
2
- module Common
3
- module Representation
4
- module Links
5
- def self.extract_link_header(links)
6
- links.collect {|link| "<#{link.href}>; rel=#{link.rel}"}.join(', ')
7
- end
8
- end
9
- end
10
- end
11
- end