restfulie 0.1.0.beta1 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|