restfulie 0.6.0 → 0.7.0

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 (74) hide show
  1. data/README.textile +83 -7
  2. data/Rakefile +98 -13
  3. data/lib/restfulie/client/base.rb +48 -53
  4. data/lib/restfulie/client/configuration.rb +69 -0
  5. data/lib/restfulie/client/http/adapter.rb +487 -0
  6. data/lib/restfulie/client/http/atom_ext.rb +87 -0
  7. data/lib/restfulie/client/http/cache.rb +28 -0
  8. data/lib/restfulie/client/http/error.rb +80 -0
  9. data/lib/restfulie/client/http/marshal.rb +147 -0
  10. data/lib/restfulie/client/http.rb +13 -0
  11. data/lib/restfulie/client.rb +8 -56
  12. data/lib/restfulie/common/builder/builder_base.rb +58 -0
  13. data/lib/restfulie/common/builder/helpers.rb +22 -0
  14. data/lib/restfulie/common/builder/marshalling/atom.rb +197 -0
  15. data/lib/restfulie/common/builder/marshalling/base.rb +12 -0
  16. data/lib/restfulie/common/builder/marshalling/json.rb +2 -0
  17. data/lib/restfulie/common/builder/marshalling.rb +16 -0
  18. data/lib/restfulie/common/builder/rules/collection_rule.rb +10 -0
  19. data/lib/restfulie/common/builder/rules/link.rb +20 -0
  20. data/lib/restfulie/common/builder/rules/links.rb +9 -0
  21. data/lib/restfulie/common/builder/rules/member_rule.rb +8 -0
  22. data/lib/restfulie/common/builder/rules/namespace.rb +25 -0
  23. data/lib/restfulie/common/builder/rules/rules_base.rb +76 -0
  24. data/lib/restfulie/common/builder.rb +16 -0
  25. data/lib/restfulie/common/errors.rb +9 -0
  26. data/lib/restfulie/{logger.rb → common/logger.rb} +3 -5
  27. data/lib/restfulie/common/representation/atom.rb +48 -0
  28. data/lib/restfulie/common/representation/generic.rb +33 -0
  29. data/lib/restfulie/common/representation/xml.rb +24 -0
  30. data/lib/restfulie/common/representation.rb +10 -0
  31. data/lib/restfulie/common.rb +23 -0
  32. data/lib/restfulie/server/action_controller/base.rb +31 -0
  33. data/lib/restfulie/server/action_controller/params_parser.rb +62 -0
  34. data/lib/restfulie/server/action_controller/restful_responder.rb +39 -0
  35. data/lib/restfulie/server/action_controller/routing/restful_route.rb +14 -0
  36. data/lib/restfulie/server/action_controller/routing.rb +12 -0
  37. data/lib/restfulie/server/action_controller.rb +15 -0
  38. data/lib/restfulie/server/action_view/helpers.rb +45 -0
  39. data/lib/restfulie/server/action_view/template_handlers/tokamak.rb +15 -0
  40. data/lib/restfulie/server/action_view/template_handlers.rb +13 -0
  41. data/lib/restfulie/server/action_view.rb +8 -0
  42. data/lib/restfulie/server/configuration.rb +21 -0
  43. data/lib/restfulie/server/core_ext/array.rb +45 -0
  44. data/lib/restfulie/server/core_ext.rb +1 -0
  45. data/lib/restfulie/server/restfulie_controller.rb +1 -17
  46. data/lib/restfulie/server.rb +15 -0
  47. data/lib/restfulie.rb +4 -72
  48. data/lib/vendor/atom/configuration.rb +24 -0
  49. data/lib/vendor/atom/pub.rb +250 -0
  50. data/lib/vendor/atom/xml/parser.rb +373 -0
  51. data/lib/vendor/atom.rb +771 -0
  52. metadata +94 -33
  53. data/lib/restfulie/client/atom_media_type.rb +0 -75
  54. data/lib/restfulie/client/cache.rb +0 -103
  55. data/lib/restfulie/client/entry_point.rb +0 -94
  56. data/lib/restfulie/client/extensions/http.rb +0 -116
  57. data/lib/restfulie/client/helper.rb +0 -28
  58. data/lib/restfulie/client/instance.rb +0 -158
  59. data/lib/restfulie/client/request_execution.rb +0 -321
  60. data/lib/restfulie/client/state.rb +0 -36
  61. data/lib/restfulie/media_type.rb +0 -143
  62. data/lib/restfulie/media_type_control.rb +0 -115
  63. data/lib/restfulie/media_type_defaults.rb +0 -51
  64. data/lib/restfulie/server/atom_media_type.rb +0 -115
  65. data/lib/restfulie/server/base.rb +0 -91
  66. data/lib/restfulie/server/controller.rb +0 -122
  67. data/lib/restfulie/server/instance.rb +0 -102
  68. data/lib/restfulie/server/marshalling.rb +0 -47
  69. data/lib/restfulie/server/opensearch/description.rb +0 -54
  70. data/lib/restfulie/server/opensearch.rb +0 -18
  71. data/lib/restfulie/server/transition.rb +0 -93
  72. data/lib/restfulie/unmarshalling.rb +0 -131
  73. data/lib/vendor/jeokkarak/hashi.rb +0 -65
  74. data/lib/vendor/jeokkarak/jeokkarak.rb +0 -81
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restfulie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 7
8
+ - 0
9
+ version: 0.7.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Guilherme Silveira, Caue Guerra
@@ -9,19 +14,51 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-01-26 00:00:00 -02:00
17
+ date: 2010-04-12 00:00:00 -03:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
- name: ratom
21
+ name: actionpack
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 3
30
+ - 2
31
+ version: 2.3.2
17
32
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: activesupport
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
20
38
  requirements:
21
39
  - - ">="
22
40
  - !ruby/object:Gem::Version
23
- version: 0.6.3
24
- version:
41
+ segments:
42
+ - 2
43
+ - 3
44
+ - 2
45
+ version: 2.3.2
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: responders_backport
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 0
57
+ - 1
58
+ - 0
59
+ version: 0.1.0
60
+ type: :runtime
61
+ version_requirements: *id003
25
62
  description:
26
63
  email: guilherme.silveira@caelum.com.br
27
64
  executables: []
@@ -31,33 +68,55 @@ extensions: []
31
68
  extra_rdoc_files: []
32
69
 
33
70
  files:
34
- - lib/restfulie/client/atom_media_type.rb
35
71
  - lib/restfulie/client/base.rb
36
- - lib/restfulie/client/cache.rb
37
- - lib/restfulie/client/entry_point.rb
38
- - lib/restfulie/client/extensions/http.rb
39
- - lib/restfulie/client/helper.rb
40
- - lib/restfulie/client/instance.rb
41
- - lib/restfulie/client/request_execution.rb
42
- - lib/restfulie/client/state.rb
72
+ - lib/restfulie/client/configuration.rb
73
+ - lib/restfulie/client/http/adapter.rb
74
+ - lib/restfulie/client/http/atom_ext.rb
75
+ - lib/restfulie/client/http/cache.rb
76
+ - lib/restfulie/client/http/error.rb
77
+ - lib/restfulie/client/http/marshal.rb
78
+ - lib/restfulie/client/http.rb
43
79
  - lib/restfulie/client.rb
44
- - lib/restfulie/logger.rb
45
- - lib/restfulie/media_type.rb
46
- - lib/restfulie/media_type_control.rb
47
- - lib/restfulie/media_type_defaults.rb
48
- - lib/restfulie/server/atom_media_type.rb
49
- - lib/restfulie/server/base.rb
50
- - lib/restfulie/server/controller.rb
51
- - lib/restfulie/server/instance.rb
52
- - lib/restfulie/server/marshalling.rb
53
- - lib/restfulie/server/opensearch/description.rb
54
- - lib/restfulie/server/opensearch.rb
80
+ - lib/restfulie/common/builder/builder_base.rb
81
+ - lib/restfulie/common/builder/helpers.rb
82
+ - lib/restfulie/common/builder/marshalling/atom.rb
83
+ - lib/restfulie/common/builder/marshalling/base.rb
84
+ - lib/restfulie/common/builder/marshalling/json.rb
85
+ - lib/restfulie/common/builder/marshalling.rb
86
+ - lib/restfulie/common/builder/rules/collection_rule.rb
87
+ - lib/restfulie/common/builder/rules/link.rb
88
+ - lib/restfulie/common/builder/rules/links.rb
89
+ - lib/restfulie/common/builder/rules/member_rule.rb
90
+ - lib/restfulie/common/builder/rules/namespace.rb
91
+ - lib/restfulie/common/builder/rules/rules_base.rb
92
+ - lib/restfulie/common/builder.rb
93
+ - lib/restfulie/common/errors.rb
94
+ - lib/restfulie/common/logger.rb
95
+ - lib/restfulie/common/representation/atom.rb
96
+ - lib/restfulie/common/representation/generic.rb
97
+ - lib/restfulie/common/representation/xml.rb
98
+ - lib/restfulie/common/representation.rb
99
+ - lib/restfulie/common.rb
100
+ - lib/restfulie/server/action_controller/base.rb
101
+ - lib/restfulie/server/action_controller/params_parser.rb
102
+ - lib/restfulie/server/action_controller/restful_responder.rb
103
+ - lib/restfulie/server/action_controller/routing/restful_route.rb
104
+ - lib/restfulie/server/action_controller/routing.rb
105
+ - lib/restfulie/server/action_controller.rb
106
+ - lib/restfulie/server/action_view/helpers.rb
107
+ - lib/restfulie/server/action_view/template_handlers/tokamak.rb
108
+ - lib/restfulie/server/action_view/template_handlers.rb
109
+ - lib/restfulie/server/action_view.rb
110
+ - lib/restfulie/server/configuration.rb
111
+ - lib/restfulie/server/core_ext/array.rb
112
+ - lib/restfulie/server/core_ext.rb
55
113
  - lib/restfulie/server/restfulie_controller.rb
56
- - lib/restfulie/server/transition.rb
57
- - lib/restfulie/unmarshalling.rb
114
+ - lib/restfulie/server.rb
58
115
  - lib/restfulie.rb
59
- - lib/vendor/jeokkarak/hashi.rb
60
- - lib/vendor/jeokkarak/jeokkarak.rb
116
+ - lib/vendor/atom/configuration.rb
117
+ - lib/vendor/atom/pub.rb
118
+ - lib/vendor/atom/xml/parser.rb
119
+ - lib/vendor/atom.rb
61
120
  - LICENSE
62
121
  - Rakefile
63
122
  - README.textile
@@ -74,18 +133,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
74
133
  requirements:
75
134
  - - ">="
76
135
  - !ruby/object:Gem::Version
136
+ segments:
137
+ - 0
77
138
  version: "0"
78
- version:
79
139
  required_rubygems_version: !ruby/object:Gem::Requirement
80
140
  requirements:
81
141
  - - ">="
82
142
  - !ruby/object:Gem::Version
143
+ segments:
144
+ - 0
83
145
  version: "0"
84
- version:
85
146
  requirements: []
86
147
 
87
148
  rubyforge_project:
88
- rubygems_version: 1.3.5
149
+ rubygems_version: 1.3.6
89
150
  signing_key:
90
151
  specification_version: 3
91
152
  summary: Hypermedia aware resource based library in ruby (client side) and ruby on rails (server side).
@@ -1,75 +0,0 @@
1
- #
2
- # Copyright (c) 2009 Caelum - www.caelum.com.br/opensource
3
- # All rights reserved.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- module Restfulie
19
-
20
- # TODO break media type registering for DECODING and ENCODING appart, so we can have two files
21
- module Server
22
-
23
- # a decoder from atom an feed
24
- class AtomMediaType < Restfulie::MediaType::Type
25
-
26
- def self.from_xml(xml)
27
- hash = Hash.from_xml xml
28
- AtomFeedDecoded.new(hash.values.first)
29
- end
30
-
31
- end
32
-
33
- # an atom feed
34
- class AtomFeedDecoded < Hashi::CustomHash
35
-
36
- def initialize(hash)
37
- super(hash)
38
- end
39
-
40
- # retrieves the nth element from an atom feed
41
- def [](position)
42
-
43
- hash = entry[position].content.internal_hash
44
- hash = hash.dup
45
- hash.delete("type")
46
- result = Restfulie::MediaType::DefaultMediaTypeDecoder.from_hash(hash)
47
-
48
- add_links_to(result, entry[position]) if entry[position].respond_to?(:link)
49
- result
50
-
51
- end
52
-
53
- private
54
-
55
- def add_links_to(result, entry)
56
- links = entry.link.internal_hash
57
- links = [links] if links.kind_of? Hash
58
- self_definition = self_from(links)
59
- links << {:rel => "destroy", :method => "delete", :href => self_definition["href"]} unless self_definition.nil?
60
- result.add_transitions(links)
61
- end
62
-
63
- def self_from(links)
64
- links.find do |link|
65
- link["rel"] == "self" || link[:rel] == "self"
66
- end
67
- end
68
-
69
- end
70
-
71
- end
72
-
73
- Restfulie::MediaType.register(Restfulie::MediaType.rendering_type('application/atom+xml', Server::AtomMediaType))
74
-
75
- end
@@ -1,103 +0,0 @@
1
- #
2
- # Copyright (c) 2009 Caelum - www.caelum.com.br/opensource
3
- # All rights reserved.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- # Basic cache implementation for restfulie.
19
- #
20
- # It uses the request headers and uri to store it in memory.
21
- # This cache might not be optimal for long running clients, which should use a memcached based one.
22
- # Use Restfulie.cache_provider to change the provider
23
- class Restfulie::BasicCache
24
-
25
- def put(url, req, response)
26
- if Restfulie::Cache::Restrictions.may_cache?(req, response)
27
- Restfulie.logger.debug "caching #{url} #{req} #{response}"
28
- cache[key_for(url, req)] = response
29
- end
30
- response
31
- end
32
-
33
- def get(url, req)
34
-
35
- response = cache[key_for(url, req)]
36
- return nil if response.nil?
37
-
38
- if response.has_expired_cache?
39
- remove(key_for(url, req))
40
- else
41
- Restfulie.logger.debug "RETURNING cache #{url} #{req}"
42
- response
43
- end
44
-
45
- end
46
-
47
- # removes all elements from the cache
48
- def clear
49
- cache.clear
50
- end
51
-
52
- private
53
-
54
- def remove(what)
55
- @cache.delete(what)
56
- nil
57
- end
58
-
59
- def cache
60
- @cache ||= {}
61
- end
62
-
63
- def key_for(url, req)
64
- [url, req.class]
65
- end
66
-
67
- end
68
-
69
- # Fake cache that does not cache anything
70
- # Use Restfulie.cache_provider = Restfulie::FakeCache.new
71
- class Restfulie::FakeCache
72
-
73
- def put(url, req, response)
74
- response
75
- end
76
-
77
- def get(url, req)
78
- end
79
-
80
- def clear
81
- end
82
-
83
- end
84
-
85
- module Restfulie::Cache
86
- module Restrictions
87
-
88
- class << self
89
-
90
- # checks whether this request verb and its cache headers allow caching
91
- def may_cache?(request,response)
92
- may_cache_method?(request) && response.may_cache?
93
- end
94
-
95
- # only Post and Get requests are cacheable so far
96
- def may_cache_method?(verb)
97
- verb.kind_of?(Net::HTTP::Post) || verb.kind_of?(Net::HTTP::Get)
98
- end
99
-
100
- end
101
-
102
- end
103
- end
@@ -1,94 +0,0 @@
1
- #
2
- # Copyright (c) 2009 Caelum - www.caelum.com.br/opensource
3
- # All rights reserved.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- module Restfulie
19
- module Client
20
- module Base
21
-
22
- # configures an entry point
23
- def entry_point_for
24
- @entry_points ||= EntryPointControl.new(self)
25
- @entry_points
26
- end
27
-
28
- # executes a POST request to create this kind of resource at the server
29
- def remote_create(content)
30
- content = content.to_xml unless content.kind_of? String
31
- remote_post content
32
- end
33
-
34
- # handles which types of responses should be automatically followed
35
- def follows
36
- @follower ||= FollowConfig.new
37
- @follower
38
- end
39
-
40
- # retrieves a resource form a specific uri
41
- def from_web(uri, options = {})
42
- RequestExecution.new(self, nil).at(uri).get(options)
43
- end
44
-
45
- private
46
- def remote_post(content)
47
- RequestExecution.new(self, nil).at(entry_point_for.create.uri).post(content)
48
- end
49
-
50
- end
51
-
52
- class FollowConfig
53
- def initialize
54
- @entries = {
55
- :moved_permanently => [:get, :head]
56
- }
57
- end
58
- def method_missing(name, *args)
59
- return value_for(name) if name.to_s[-1,1] == "?"
60
- set_all_for name
61
- end
62
-
63
- private
64
- def set_all_for(name)
65
- @entries[name] = :all
66
- end
67
- def value_for(name)
68
- return @entries[name.to_s.chop.to_sym]
69
- end
70
- end
71
-
72
- class EntryPointControl
73
-
74
- def initialize(type)
75
- @type = type
76
- @entries = {}
77
- end
78
-
79
- def method_missing(name, *args)
80
- @entries[name] ||= EntryPoint.new
81
- @entries[name]
82
- end
83
-
84
- end
85
-
86
- class EntryPoint
87
- attr_accessor :uri
88
- def at(uri)
89
- @uri = uri
90
- end
91
- end
92
-
93
- end
94
- end
@@ -1,116 +0,0 @@
1
- #
2
- # Copyright (c) 2009 Caelum - www.caelum.com.br/opensource
3
- # All rights reserved.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require 'time'
19
-
20
- # an extesion to http responses
21
- module Restfulie::Client::HTTPResponse
22
-
23
- attr_accessor :previous
24
-
25
- # determines if this response code was successful (according to http specs: 200~299)
26
- def is_successful?
27
- code.to_i >= 200 && code.to_i <= 299
28
- end
29
-
30
- # determines if this response code was successful (according to http specs: 100~199)
31
- def is_informational?
32
- code.to_i >= 100 && code.to_i <= 199
33
- end
34
-
35
- # determines if this response code was successful (according to http specs: 300~399)
36
- def is_redirection?
37
- code.to_i >= 300 && code.to_i <= 399
38
- end
39
-
40
- # determines if this response code was successful (according to http specs: 400~499)
41
- def is_client_error?
42
- code.to_i >= 400 && code.to_i <= 499
43
- end
44
-
45
- # determines if this response code was successful (according to http specs: 500~599)
46
- def is_server_error?
47
- code.to_i >= 500 && code.to_i <= 599
48
- end
49
-
50
- def etag
51
- self['Etag']
52
- end
53
-
54
- def last_modified
55
- self['Last-Modified']
56
- end
57
-
58
- end
59
-
60
- module Restfulie::Client::HTTPResponse
61
-
62
- def cache_max_age
63
- val = header_value_from('Cache-control', /^\s*max-age=(\d+)/)
64
- if val
65
- val.to_i
66
- else
67
- 0
68
- end
69
- end
70
-
71
- def header_value_from(header, expression)
72
- h = value_for(get_fields(header)[0], expression)
73
- return nil if h.nil?
74
- h.match(expression)[1]
75
- end
76
-
77
- def has_expired_cache?
78
- return true if self['Date'].nil?
79
- Time.now > Time.rfc2822(self['Date']) + cache_max_age.seconds
80
- end
81
-
82
- # checks if the header's max-age is available and no no-store if available.
83
- def may_cache?
84
- may_cache_field?(get_fields('Cache-control'))
85
- end
86
-
87
- def may_cache_field?(field)
88
- return false if field.nil?
89
-
90
- if field.kind_of? Array
91
- field.each do |f|
92
- return false if !may_cache_field?(f)
93
- end
94
- return true
95
- end
96
-
97
- max_age_header = value_for(field, /^max-age=(\d+)/)
98
- return false if max_age_header.nil?
99
- max_age = max_age_header[1]
100
-
101
- return false if value_for(field, /^no-store/)
102
-
103
- true
104
- end
105
-
106
- # extracts the header value for an specific expression, which can be located at the start or in the middle
107
- # of the expression
108
- def value_for(value, expression)
109
- value.split(",").find { |obj| obj.strip =~ expression }
110
- end
111
-
112
- end
113
-
114
- class Net::HTTPResponse
115
- include Restfulie::Client::HTTPResponse
116
- end
@@ -1,28 +0,0 @@
1
- #
2
- # Copyright (c) 2009 Caelum - www.caelum.com.br/opensource
3
- # All rights reserved.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- module Restfulie
19
- module Client
20
- module Helper
21
- # retrieves the invoking method's name
22
- def self.current_method
23
- caller[0]=~/`(.*?)'/
24
- $1
25
- end
26
- end
27
- end
28
- end