aboutsummaryrefslogtreecommitdiffstats
path: root/actionwebservice/examples/metaWeblog/apis
diff options
context:
space:
mode:
Diffstat (limited to 'actionwebservice/examples/metaWeblog/apis')
-rw-r--r--actionwebservice/examples/metaWeblog/apis/blogger_api.rb60
-rw-r--r--actionwebservice/examples/metaWeblog/apis/blogger_service.rb34
-rw-r--r--actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb67
-rw-r--r--actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb48
4 files changed, 209 insertions, 0 deletions
diff --git a/actionwebservice/examples/metaWeblog/apis/blogger_api.rb b/actionwebservice/examples/metaWeblog/apis/blogger_api.rb
new file mode 100644
index 0000000000..9f85a2391e
--- /dev/null
+++ b/actionwebservice/examples/metaWeblog/apis/blogger_api.rb
@@ -0,0 +1,60 @@
+#
+# see the blogger API spec at http://www.blogger.com/developers/api/1_docs/
+# note that the method signatures are subtly different to metaWeblog, they
+# are not identical. take care to ensure you handle the different semantics
+# properly if you want to support blogger API too, to get maximum compatibility.
+#
+
+module Blog
+ class Blog < ActionWebService::Struct
+ member :url, :string
+ member :blogid, :string
+ member :blogName, :string
+ end
+
+ class User < ActionWebService::Struct
+ member :nickname, :string
+ member :userid, :string
+ member :url, :string
+ member :email, :string
+ member :lastname, :string
+ member :firstname, :string
+ end
+end
+
+#
+# blogger
+#
+class BloggerAPI < ActionWebService::API::Base
+ inflect_names false
+
+ api_method :newPost, :returns => [:string], :expects => [
+ {:appkey=>:string},
+ {:blogid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ {:content=>:string},
+ {:publish=>:bool}
+ ]
+
+ api_method :editPost, :returns => [:bool], :expects => [
+ {:appkey=>:string},
+ {:postid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ {:content=>:string},
+ {:publish=>:bool}
+ ]
+
+ api_method :getUsersBlogs, :returns => [[Blog::Blog]], :expects => [
+ {:appkey=>:string},
+ {:username=>:string},
+ {:password=>:string}
+ ]
+
+ api_method :getUserInfo, :returns => [Blog::User], :expects => [
+ {:appkey=>:string},
+ {:username=>:string},
+ {:password=>:string}
+ ]
+end
diff --git a/actionwebservice/examples/metaWeblog/apis/blogger_service.rb b/actionwebservice/examples/metaWeblog/apis/blogger_service.rb
new file mode 100644
index 0000000000..b79b53e6f7
--- /dev/null
+++ b/actionwebservice/examples/metaWeblog/apis/blogger_service.rb
@@ -0,0 +1,34 @@
+require 'blogger_api'
+
+class BloggerService < ActionWebService::Base
+ web_service_api BloggerAPI
+
+ def initialize
+ @postid = 0
+ end
+
+ def newPost(key, id, user, pw, content, publish)
+ $stderr.puts "id=#{id} user=#{user} pw=#{pw}, content=#{content.inspect} [#{publish}]"
+ (@postid += 1).to_s
+ end
+
+ def editPost(key, post_id, user, pw, content, publish)
+ $stderr.puts "id=#{post_id} user=#{user} pw=#{pw} content=#{content.inspect} [#{publish}]"
+ true
+ end
+
+ def getUsersBlogs(key, user, pw)
+ $stderr.puts "getting blogs for #{user}"
+ blog = Blog::Blog.new(
+ :url =>'http://blog',
+ :blogid => 'myblog',
+ :blogName => 'My Blog'
+ )
+ [blog]
+ end
+
+ def getUserInfo(key, user, pw)
+ $stderr.puts "getting user info for #{user}"
+ Blog::User.new(:nickname => 'user', :email => 'user@test.com')
+ end
+end
diff --git a/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb b/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb
new file mode 100644
index 0000000000..adef12a20f
--- /dev/null
+++ b/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb
@@ -0,0 +1,67 @@
+#
+# here lie structures, cousins of those on http://www.xmlrpc.com/metaWeblog
+# but they don't necessarily the real world reflect
+# so if you do, find that your client complains:
+# please tell, of problems you suffered through
+#
+
+module Blog
+ class Post < ActionWebService::Struct
+ member :title, :string
+ member :link, :string
+ member :description, :string
+ member :author, :string
+ member :category, :string
+ member :comments, :string
+ member :guid, :string
+ member :pubDate, :string
+ end
+
+ class Category < ActionWebService::Struct
+ member :description, :string
+ member :htmlUrl, :string
+ member :rssUrl, :string
+ end
+end
+
+#
+# metaWeblog
+#
+class MetaWeblogAPI < ActionWebService::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 :getCategories, :returns => [[Blog::Category]], :expects => [
+ {:blogid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ ]
+
+ api_method :getRecentPosts, :returns => [[Blog::Post]], :expects => [
+ {:blogid=>:string},
+ {:username=>:string},
+ {:password=>:string},
+ {:numberOfPosts=>:int},
+ ]
+end
diff --git a/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb b/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb
new file mode 100644
index 0000000000..9c66558f1b
--- /dev/null
+++ b/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb
@@ -0,0 +1,48 @@
+require 'meta_weblog_api'
+
+class MetaWeblogService < ActionWebService::Base
+ web_service_api MetaWeblogAPI
+
+ def initialize
+ @postid = 0
+ end
+
+ def newPost(id, user, pw, struct, publish)
+ $stderr.puts "id=#{id} user=#{user} pw=#{pw}, struct=#{struct.inspect} [#{publish}]"
+ (@postid += 1).to_s
+ end
+
+ def editPost(post_id, user, pw, struct, publish)
+ $stderr.puts "id=#{post_id} user=#{user} pw=#{pw} struct=#{struct.inspect} [#{publish}]"
+ true
+ end
+
+ def getPost(post_id, user, pw)
+ $stderr.puts "get post #{post_id}"
+ Blog::Post.new(:title => 'hello world', :description => 'first post!')
+ end
+
+ def getCategories(id, user, pw)
+ $stderr.puts "categories for #{user}"
+ cat = Blog::Category.new(
+ :description => 'Tech',
+ :htmlUrl => 'http://blog/tech',
+ :rssUrl => 'http://blog/tech.rss')
+ [cat]
+ end
+
+ def getRecentPosts(id, user, pw, num)
+ $stderr.puts "recent #{num} posts for #{user} on blog #{id}"
+ 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