aboutsummaryrefslogtreecommitdiffstats
path: root/actionwebservice/examples/metaWeblog/blog_controller.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-02-18 23:43:09 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-02-18 23:43:09 +0000
commit7a67d0f617db7d2962b6c3b80466e21570b244bf (patch)
tree56fa640e31f4f7f22d34a246bc1b197706a07e3a /actionwebservice/examples/metaWeblog/blog_controller.rb
parentfdecb6843ba8c5b0f718225f343017e11fa7f711 (diff)
downloadrails-7a67d0f617db7d2962b6c3b80466e21570b244bf.tar.gz
rails-7a67d0f617db7d2962b6c3b80466e21570b244bf.tar.bz2
rails-7a67d0f617db7d2962b6c3b80466e21570b244bf.zip
Renamed Action Service to Action Web Service
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@669 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionwebservice/examples/metaWeblog/blog_controller.rb')
-rw-r--r--actionwebservice/examples/metaWeblog/blog_controller.rb127
1 files changed, 127 insertions, 0 deletions
diff --git a/actionwebservice/examples/metaWeblog/blog_controller.rb b/actionwebservice/examples/metaWeblog/blog_controller.rb
new file mode 100644
index 0000000000..aff2e909ea
--- /dev/null
+++ b/actionwebservice/examples/metaWeblog/blog_controller.rb
@@ -0,0 +1,127 @@
+# point your client at http://project_url/blog/api to test
+# this
+
+# structures as defined by the metaWeblog/blogger
+# specifications.
+module Blog
+ class Enclosure < ActionService::Struct
+ member :url, :string
+ member :length, :int
+ member :type, :string
+ end
+
+ class Source < ActionService::Struct
+ member :url, :string
+ member :name, :string
+ end
+
+ class Post < ActionService::Struct
+ member :title, :string
+ member :link, :string
+ member :description, :string
+ member :author, :string
+ member :category, :string
+ member :comments, :string
+ member :enclosure, Enclosure
+ member :guid, :string
+ member :pubDate, :string
+ member :source, Source
+ end
+
+ class Blog < ActionService::Struct
+ member :url, :string
+ member :blogid, :string
+ member :blogName, :string
+ end
+end
+
+# skeleton metaWeblog API
+class MetaWeblogAPI < ActionService::API::Base
+ inflect_names false
+
+ api_method :newPost, :returns => [:string], :expects => [
+ {:blogid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ {:struct=>Blog::Post},
+ {:publish=>:bool},
+ ]
+
+ api_method :editPost, :returns => [:bool], :expects => [
+ {:postid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ {:struct=>Blog::Post},
+ {:publish=>:bool},
+ ]
+
+ api_method :getPost, :returns => [Blog::Post], :expects => [
+ {:postid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ ]
+
+ api_method :getUsersBlogs, :returns => [[Blog::Blog]], :expects => [
+ {:appkey=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ ]
+
+ api_method :getRecentPosts, :returns => [[Blog::Post]], :expects => [
+ {:blogid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ {:numberOfPosts=>:int},
+ ]
+end
+
+class BlogController < ApplicationController
+ web_service_api MetaWeblogAPI
+
+ def initialize
+ @postid = 0
+ end
+
+ def newPost
+ $stderr.puts 'Creating post: username=%s password=%s struct=%s' % [
+ @params['username'],
+ @params['password'],
+ @params['struct'].inspect
+ ]
+ (@postid += 1).to_s
+ end
+
+ def editPost
+ $stderr.puts 'Editing post: username=%s password=%s struct=%s' % [
+ @params['username'],
+ @params['password'],
+ @params['struct'].inspect
+ ]
+ true
+ end
+
+ def getUsersBlogs
+ $stderr.puts "Returning user %s's blogs" % @params['username']
+ blog = Blog::Blog.new(
+ :url =>'http://blog.xeraph.org',
+ :blogid => 'sttm',
+ :blogName => 'slave to the machine'
+ )
+ [blog]
+ end
+
+ def getRecentPosts
+ $stderr.puts "Returning recent posts (%d requested)" % @params['numberOfPosts']
+ post1 = Blog::Post.new(
+ :title => 'first post!',
+ :link => 'http://blog.xeraph.org/testOne.html',
+ :description => 'this is the first post'
+ )
+ post2 = Blog::Post.new(
+ :title => 'second post!',
+ :link => 'http://blog.xeraph.org/testTwo.html',
+ :description => 'this is the second post'
+ )
+ [post1, post2]
+ end
+end