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,74 +0,0 @@
|
|
1
|
-
module Restfulie
|
2
|
-
module Server
|
3
|
-
# Controller which adds default CRUD + search + other operations.
|
4
|
-
# TODO: move these actions to controller/base.rb (maybe using InheritedResources, maybe not)
|
5
|
-
module Controller
|
6
|
-
# creates a model based on the request media-type extracted from its content-type
|
7
|
-
def create
|
8
|
-
type = model_type
|
9
|
-
return head 415 unless fits_content(type, request.headers['CONTENT_TYPE'])
|
10
|
-
|
11
|
-
@model = type.from_xml request.body.string
|
12
|
-
if @model.save
|
13
|
-
render_created @model
|
14
|
-
else
|
15
|
-
render :xml => @model.errors, :status => :unprocessable_entity
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# renders this resource
|
20
|
-
def show
|
21
|
-
@model = model_type.find(params[:id])
|
22
|
-
instance_variable_set(model_variable_name, @model)
|
23
|
-
render_resource(@model)
|
24
|
-
end
|
25
|
-
|
26
|
-
def model_variable_name
|
27
|
-
("@" + model_type.to_s.downcase).to_sym
|
28
|
-
end
|
29
|
-
|
30
|
-
# destroys this resource
|
31
|
-
def destroy
|
32
|
-
@model = model_type.find(params[:id])
|
33
|
-
@model.destroy
|
34
|
-
head :ok
|
35
|
-
end
|
36
|
-
|
37
|
-
# updates a resouce
|
38
|
-
def update
|
39
|
-
type = model_type
|
40
|
-
|
41
|
-
@loaded = type.find(params[:id])
|
42
|
-
return head(:status => 405) unless @loaded.can? :update
|
43
|
-
|
44
|
-
return head(415) unless fits_content(type, request.headers['CONTENT_TYPE'])
|
45
|
-
|
46
|
-
@model = Hash.from_xml(request.body.string)[model_name]
|
47
|
-
pre_update(@model) if self.respond_to?(:pre_update)
|
48
|
-
|
49
|
-
if @loaded.update_attributes(@model)
|
50
|
-
render_resource @loaded
|
51
|
-
else
|
52
|
-
render :xml => @loaded.errors, :status => :unprocessable_entity
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# returns the model for this controller
|
57
|
-
def model_type
|
58
|
-
self.class.name[/(.*)Controller/,1].singularize.constantize
|
59
|
-
end
|
60
|
-
|
61
|
-
# retrieves the model name
|
62
|
-
def model_name
|
63
|
-
self.class.name[/(.*)Controller/,1].singularize.underscore
|
64
|
-
end
|
65
|
-
|
66
|
-
def fits_content(type, content_type)
|
67
|
-
Restfulie::MediaType.supports?(content_type) &&
|
68
|
-
(type.respond_to?(:media_type_representations) ?
|
69
|
-
type.media_type_representations.include?(content_type) :
|
70
|
-
Restfulie::MediaType.default_representations.include?(content_type))
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'restfulie/server/core_ext/array'
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# Introspective methods to assist in the conversion of collections in other formats.
|
2
|
-
class Array
|
3
|
-
def to_atom(options={}, &block)
|
4
|
-
raise "Not all elements respond to to_atom" unless all? { |e| e.respond_to? :to_atom }
|
5
|
-
options = options.dup
|
6
|
-
|
7
|
-
if options.delete :only_self_link
|
8
|
-
options[:skip_associations_links] = true
|
9
|
-
options[:skip_attributes] = true
|
10
|
-
end
|
11
|
-
|
12
|
-
feed = Restfulie::Common::Representation::Atom::Feed.new
|
13
|
-
# TODO: Define better feed attributes
|
14
|
-
# Array#to_s can return a very long string
|
15
|
-
feed.title = "Collection of #{map {|i| i.class.name }.uniq.to_sentence}"
|
16
|
-
feed.updated = updated_at
|
17
|
-
feed.published = published_at
|
18
|
-
# TODO: this id does not comply with Rest standards yet
|
19
|
-
feed.id = hash
|
20
|
-
|
21
|
-
each do |element|
|
22
|
-
feed.entries << element.to_atom(options)
|
23
|
-
end
|
24
|
-
|
25
|
-
yield feed if block_given?
|
26
|
-
|
27
|
-
feed
|
28
|
-
end
|
29
|
-
|
30
|
-
# Return max update date for items in collection, for it uses the updated_at of items.
|
31
|
-
#
|
32
|
-
#==Example:
|
33
|
-
#
|
34
|
-
# Find max updated at in ActiveRecord objects
|
35
|
-
#
|
36
|
-
# albums = Albums.find(:all)
|
37
|
-
# albums.updated_at
|
38
|
-
#
|
39
|
-
# Using a custom field to check the max date
|
40
|
-
#
|
41
|
-
# albums = Albums.find(:all)
|
42
|
-
# albums.updated_at(:created_at)
|
43
|
-
#
|
44
|
-
def updated_at(field = :updated_at)
|
45
|
-
max = max_by{|o| o.send(field)}
|
46
|
-
if max
|
47
|
-
max.send(field)
|
48
|
-
else
|
49
|
-
Time.now
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def published_at(field = :published_at)
|
54
|
-
min = min_by{|o| o.send(field)}
|
55
|
-
if min
|
56
|
-
min.send(field)
|
57
|
-
else
|
58
|
-
Time.now
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|