wp_rpc 0.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/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ teste.rb
19
+ teste.jpg
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --colour
3
+ --format n
4
+
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in wp_rpc.gemspec
4
+ gemspec
5
+ gem 'rake'
6
+ gem "rack", "~>1.1"
7
+ gem "rspec", :require => "spec"
8
+ gem 'mime-types'
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Alex Ferreira
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # WpRpc
2
+
3
+ WpRpc is a Ruby library for reading and writing blogs to Wordpress via XMLRPC interface.
4
+
5
+ The documentation is missing and the test set is not complete.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'wp_rpc'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install wp_rpc
20
+
21
+ ### Usage
22
+
23
+ require 'wp_rpc'
24
+ blog = WpRpc::Blog.new :url => 'http://www.example.com/xmlrpc.php', :username => 'admin', :password=> 'admin'
25
+
26
+ # Output the list of categories
27
+ blog.categories.map { |c| puts "Category: #{c.name}" }
28
+
29
+ # Get List of Posts
30
+ blog.posts.all.map{|p| puts p['title']}
31
+
32
+ # Get the 20 most recent posts
33
+ blog.posts.find_recent(:limit => 20).map { |p| puts "#{p.id} | #{p.title}" }
34
+
35
+ # Create a new blog post
36
+ post = blog.posts.new(:title => 'Test', :description => 'This is a test', :keywords => 'test, testing', :published => true)
37
+ post.save
38
+
39
+ # Edit a blog post
40
+ post = blog.posts.find(1)
41
+ post.title = "Edited title"
42
+ post.save
43
+
44
+ # Upload an attachment
45
+ attachment = blog.attachments.new(:name => 'Photo of me', :filename => '/home/john/me.jpg')
46
+ attachment.save
47
+
48
+ ### Contributing
49
+
50
+ 1. Fork it
51
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
52
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
53
+ 4. Push to the branch (`git push origin my-new-feature`)
54
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,38 @@
1
+ require "wp_rpc/collections/attachments"
2
+ module WpRpc
3
+ class Attachment < Base
4
+ attr_accessor :name, :mimetype, :file, :filename, :url
5
+
6
+ def initialize(attributes, options = { })
7
+ super(options)
8
+ self.name = attributes[:name]
9
+ self.filename = attributes[:filename]
10
+ self.mimetype = attributes[:mimetype]
11
+ self.file = attributes[:file]
12
+ end
13
+
14
+ def save
15
+ ret = conn.upload_file(name, mimetype, bits)
16
+ self.url = ret["url"]
17
+ self
18
+ end
19
+
20
+ def mimetype
21
+ @mimetype ||= MIME::Types.type_for(name).to_s
22
+ end
23
+
24
+ def name
25
+ @name ||= File.basename(filename)
26
+ end
27
+
28
+ private
29
+
30
+ def bits
31
+ file.read
32
+ end
33
+
34
+ def file
35
+ @file ||= File.open(filename)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,23 @@
1
+ module WpRpc
2
+ class Error < StandardError ; end
3
+ class ConnectionFailure < Error ; end
4
+
5
+ class Base
6
+ def initialize(options = { })
7
+ @conn = options[:conn] || options[:connection]
8
+ end
9
+
10
+ def conn
11
+ @conn
12
+ end
13
+
14
+ def pattern
15
+ @pattern = {"post_title" => "title", "post_content" => "content"}
16
+ end
17
+
18
+ def change_attributes(source, mappings = {})
19
+ source.map{ |obj| obj.keys.each { |k| obj[mappings[k] ] = obj.delete(k) if mappings[k] } }
20
+ source
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,65 @@
1
+ module WpRpc
2
+ class Blog
3
+ attr_accessor :url, :username, :password, :blog_id
4
+
5
+ def initialize(options = { })
6
+ @username = options[:username] if options[:username]
7
+ @password = options[:password] if options[:password]
8
+ @blog_id = options[:blog_id] || 1
9
+ @url = options[:url] if options[:url]
10
+ end
11
+
12
+ def posts
13
+ @post_collection ||= Collection::Posts.new(:conn => self)
14
+ end
15
+
16
+ def attachments
17
+ @attachments ||= Collection::Attachments.new(:conn => self)
18
+ end
19
+
20
+ def categories
21
+ @categories ||= Collection::Categories.new(:conn => self)
22
+ end
23
+
24
+ def get_recent_posts(limit = 10)
25
+ call('metaWeblog.getRecentPosts', blog_id, username, password, limit)
26
+ end
27
+
28
+ def get_post(qid)
29
+ call('metaWeblog.getPost', qid, username, password)
30
+ end
31
+
32
+ def edit_post(qid, attributes, published = nil)
33
+ cargs = ['metaWeblog.editPost', qid, username, password, attributes]
34
+ cargs << published unless published.nil?
35
+ call(*cargs)
36
+ end
37
+
38
+ def new_post(attributes, published = nil)
39
+ cargs = ['metaWeblog.newPost', blog_id, username, password, attributes]
40
+ cargs << published unless published.nil?
41
+ call(*cargs)
42
+ end
43
+
44
+ def upload_file(name, mimetype, bits, overwrite = false)
45
+
46
+ call('wp.uploadFile', blog_id, username, password,
47
+ { :name => name, :type => mimetype, :bits => XMLRPC::Base64.new(bits), :overwrite => overwrite })
48
+ end
49
+
50
+ def call(*args)
51
+ xmlrpc.call(*args)
52
+ rescue XMLRPC::FaultException => e
53
+ if e.message =~ /XML-RPC services are disabled/
54
+ raise WpRpc::ConnectionFailure, e.message
55
+ else
56
+ raise WpRpc::Error, e.message
57
+ end
58
+ end
59
+
60
+ def xmlrpc
61
+ @xclient ||= XMLRPC::Client.new2(url)
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,37 @@
1
+ require "wp_rpc/collections/categories"
2
+ module WpRpc
3
+ class Category
4
+ attr_reader :id, :category_id, :description, :name, :url, :rss_url, :conn
5
+
6
+ def initialize(attributes = {}, options = {})
7
+ @id = attributes[:id]
8
+ @category_id = attributes[:category_id] || 0
9
+ @description = attributes[:description]
10
+ @name = attributes[:name]
11
+ @url = attributes[:url]
12
+ @rss_url = attributes[:rss_url]
13
+ @slug = attributes[:slug]
14
+ @conn = options[:conn]
15
+ end
16
+
17
+ def self.new_from_xmlrpc(attributes, options = {})
18
+ self.new( { :id => attributes['categoryId'], :category_id => attributes['parentId'],
19
+ :description => attributes['description'], :name => attributes['categoryName'],
20
+ :url => attributes['htmlUrl'], :rss_url => attributes['rssUrl'] },
21
+ options )
22
+ end
23
+
24
+ def save
25
+ @id = conn.call 'wp.newCategory', conn.blog_id, conn.username, conn.password, to_xmlrpc_struct
26
+ end
27
+
28
+ def to_xmlrpc_struct
29
+ { "name" => name, "slug" => slug, "parent_id" => category_id, "description" => description.to_s }
30
+ end
31
+
32
+ def slug
33
+ @slug ||= @name.to_s.downcase.strip.gsub(/\s/, '-')
34
+ end
35
+ end
36
+ end
37
+
@@ -0,0 +1,9 @@
1
+ module WpRpc
2
+ module Collection
3
+ class Attachments < Base
4
+ def new(attributes)
5
+ WpRpc::Attachment.new(attributes, :conn => conn)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,38 @@
1
+ module WpRpc
2
+ module Collection
3
+ class Categories < Base
4
+ include Enumerable
5
+
6
+ def initialize(*args)
7
+ super(*args)
8
+ end
9
+
10
+ def all
11
+ @categories ||= load
12
+ end
13
+
14
+ # retrieve the categories via xmlrpc
15
+ def load
16
+ cats = []
17
+ conn.call('wp.getCategories', conn.blog_id, conn.username, conn.password).each do |c|
18
+ cats << WpRpc::Category.new_from_xmlrpc(c, :conn => conn)
19
+ end
20
+ @categories = cats
21
+ end
22
+
23
+ def [](i)
24
+ all[i]
25
+ end
26
+
27
+ def each
28
+ all.each { |c| yield c }
29
+ end
30
+
31
+ def create(attributes)
32
+ new_cat = WpRpc::Category.new(attributes, :conn => conn)
33
+ new_cat.save
34
+ new_cat
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ module WpRpc
2
+ module Collection
3
+ class Posts < Base
4
+ def find_recent(options = { })
5
+ options = { :limit => 10 }.merge(options)
6
+ posts = conn.get_recent_posts(options[:limit])
7
+ posts.collect { |post| Post.new(post, :conn => conn) }
8
+ end
9
+
10
+ def find(qid, options = { })
11
+ if qid.is_a?(Array)
12
+ qid.collect { |sqid| find(sqid) }
13
+ elsif qid == :recent
14
+ find_recent(options)
15
+ else
16
+ post = conn.get_post(qid)
17
+ Post.new(post, :conn => conn)
18
+ end
19
+ end
20
+
21
+ def new(attributes = { })
22
+ WpRpc::Post.new(attributes, :conn => conn)
23
+ end
24
+
25
+ def all
26
+ change_attributes(conn.call('wp.getPosts', conn.blog_id, conn.username, conn.password), pattern)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,95 @@
1
+ require "wp_rpc/collections/posts"
2
+ module WpRpc
3
+ class Post < Base
4
+ attr_accessor :title, :content
5
+ attr_accessor :created_at
6
+ attr_accessor :keywords, :categories, :published
7
+
8
+ def initialize(attributes = { }, options = { })
9
+ super(options)
10
+ self.attributes = attributes
11
+ end
12
+
13
+ def attributes=(attr)
14
+ symbolized_attr = { }
15
+ attr = attr.each { |k,v| symbolized_attr[k.to_sym] = v }
16
+ attr = symbolized_attr
17
+ @title = attr[:title]
18
+ @keywords = attr[:keywords].to_s.split(/,|;/).collect { |k| k.strip }
19
+ @categories = attr[:categories]
20
+ @content = attr[:content]
21
+ @created_at = attr[:dateCreated]
22
+ @id = attr[:postid]
23
+ @userid = attr[:userid]
24
+ @published = attr[:published]
25
+ end
26
+
27
+ def id
28
+ @id
29
+ end
30
+
31
+ def save
32
+ id ? update : create
33
+ end
34
+
35
+ def update
36
+ conn.edit_post(id, attributes, published)
37
+ self
38
+ end
39
+
40
+ def create
41
+ @id = conn.new_post(attributes, published)
42
+ self
43
+ end
44
+
45
+ def publish
46
+ self.published = true
47
+ save
48
+ end
49
+
50
+ def keywords
51
+ if @keywords.is_a? String
52
+ @keywords = @keywords.split(",")
53
+ elsif @keywords.is_a? Array
54
+ @keywords
55
+ else
56
+ []
57
+ end
58
+ end
59
+
60
+ def created_at
61
+ @created_at
62
+ end
63
+
64
+ def categories
65
+ if @categories.nil?
66
+ []
67
+ elsif @categories.is_a?(Array)
68
+ @categories
69
+ elsif @categories.is_a(String)
70
+ @categories = @categories.split(",")
71
+ else
72
+ []
73
+ end
74
+ end
75
+
76
+ def attributes
77
+ h = { }
78
+ h[:title] = title if title
79
+ h[:description] = content if content
80
+ h[:dateCreated] = created_at if created_at
81
+ h[:mt_keywords] = keywords.join(",")
82
+ h[:categories] = categories if categories
83
+ h
84
+ end
85
+
86
+ def reload
87
+ if id
88
+ saved_id = id
89
+ self.attributes = conn.posts.find(id).attributes
90
+ @id = saved_id
91
+ true
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,3 @@
1
+ module WpRpc
2
+ VERSION = "0.0.1"
3
+ end
data/lib/wp_rpc.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'wp_rpc/base'
2
+ require "wp_rpc/blog"
3
+ require "wp_rpc/post"
4
+ require "wp_rpc/category"
5
+ require "wp_rpc/attachment"
6
+ require "wp_rpc/version"
7
+ module WpRpc
8
+ require "xmlrpc/client"
9
+ require 'uri'
10
+ require 'mime/types'
11
+ end
data/spec/blog_spec.rb ADDED
@@ -0,0 +1,119 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe Blog do
4
+
5
+ describe "initialize" do
6
+ it "take the :username, :password, :url and :blog_id options" do
7
+ blog = a_wp_blog
8
+ blog.username.should == valid_wp_blog_options[:username]
9
+ blog.password.should == valid_wp_blog_options[:password]
10
+ blog.blog_id.should == valid_wp_blog_options[:blog_id]
11
+ end
12
+
13
+ it "should default to blog_id 1" do
14
+ Blog.new.blog_id.should == 1
15
+ end
16
+ end
17
+
18
+ it "should return an XMLRPC::Client" do
19
+ xmlrpc = a_wp_blog.send(:xmlrpc)
20
+ xmlrpc.should be_a_kind_of XMLRPC::Client
21
+ end
22
+
23
+ it "should make xmlrpc calls to metaWeblog.getPost" do
24
+ blog = a_wp_blog
25
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.getPost',
26
+ 999, blog.username, blog.password )
27
+ blog.get_post(999)
28
+ end
29
+
30
+ it "should make xmlrpc calls to metaWeblog.getRecentPosts" do
31
+ blog = a_wp_blog
32
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.getRecentPosts',
33
+ blog.blog_id, blog.username, blog.password, 345)
34
+ blog.get_recent_posts(345)
35
+ end
36
+
37
+ describe "edit_post" do
38
+
39
+ it "should make xmlrpc calls to metaWeblog.editPost with no published arg by default" do
40
+ blog = a_wp_blog
41
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.editPost',
42
+ 98, blog.username, blog.password,
43
+ valid_wp_post_options)
44
+ blog.edit_post(98, valid_wp_post_options)
45
+ end
46
+
47
+ it "should make xmlrpc calls to metaWeblog.editPost with published = true" do
48
+ blog = a_wp_blog
49
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.editPost',
50
+ 98, blog.username, blog.password,
51
+ valid_wp_post_options, true)
52
+ blog.edit_post(98, valid_wp_post_options, true)
53
+ end
54
+
55
+ it "should make xmlrpc calls to metaWeblog.editPost with published = false" do
56
+ blog = a_wp_blog
57
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.editPost',
58
+ 98, blog.username, blog.password,
59
+ valid_wp_post_options, false)
60
+ blog.edit_post(98, valid_wp_post_options, false)
61
+ end
62
+
63
+
64
+ end
65
+
66
+ describe "new_post" do
67
+ it "should make metaWeblog.newPost calls with no published arg by default" do
68
+ blog = a_wp_blog
69
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.newPost',
70
+ blog.blog_id, blog.username, blog.password,
71
+ valid_wp_post_options)
72
+ blog.new_post(valid_wp_post_options)
73
+ end
74
+
75
+ it "should make metaWeblog.newPost calls with published = true" do
76
+ blog = a_wp_blog
77
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.newPost',
78
+ blog.blog_id, blog.username, blog.password,
79
+ valid_wp_post_options, true)
80
+ blog.new_post(valid_wp_post_options, true)
81
+ end
82
+
83
+ it "should make metaWeblog.newPost calls with published = false" do
84
+ blog = a_wp_blog
85
+ blog.send(:xmlrpc).should_receive(:call).once.with('metaWeblog.newPost',
86
+ blog.blog_id, blog.username, blog.password,
87
+ valid_wp_post_options, false)
88
+ blog.new_post(valid_wp_post_options, false)
89
+ end
90
+
91
+ end
92
+
93
+ describe "upload_file" do
94
+ it "should make wp.uploadFile calls" do
95
+ blog = a_wp_blog
96
+ xmlrpc_valid_wp_upload_options = valid_wp_upload_options.merge({
97
+ :bits => XMLRPC::Base64.new(valid_wp_upload_options[:bits])
98
+ })
99
+ blog.send(:xmlrpc).should_receive(:call).once.with('wp.uploadFile', blog.blog_id, blog.username,
100
+ blog.password,
101
+ hash_including({
102
+ :name => valid_wp_upload_options[:name],
103
+ :type => valid_wp_upload_options[:type],
104
+ :overwrite => valid_wp_upload_options[:overwrite],
105
+ :bits => an_instance_of(XMLRPC::Base64)
106
+ }))
107
+ args = [:name, :type, :bits, :overwrite].collect { |k| valid_wp_upload_options[k] }
108
+ blog.upload_file(*args)
109
+ end
110
+ end
111
+
112
+ it "should return a CategoryCollection" do
113
+ blog = a_wp_blog
114
+ blog.categories.should be_a_kind_of Collection::Categories
115
+ blog.categories.conn.should == blog
116
+ end
117
+
118
+ end
119
+
@@ -0,0 +1,12 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe Collection::Categories do
4
+ it "should retrieve categories via xmlrpc" do
5
+ blog = a_wp_blog
6
+ blog.xmlrpc.should_receive(:call).once.with('wp.getCategories', blog.blog_id, blog.username, blog.password).and_return([{}, {}, {}])
7
+ cats = blog.categories.load
8
+ cats.size.should == 3
9
+ cats.first.should be_a_kind_of Category
10
+ cats.first.conn.should == blog
11
+ end
12
+ end
@@ -0,0 +1,24 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe Category do
4
+ describe "create" do
5
+ it "should call wp.newCategory" do
6
+ blog = a_wp_blog
7
+ blog.xmlrpc.should_receive(:call).once.with('wp.newCategory', blog.blog_id, blog.username, blog.password,
8
+ hash_including("name" => valid_category_options[:name])).and_return(10)
9
+ blog.categories.create valid_category_options
10
+ end
11
+
12
+ it "should return a Category instance with the right id" do
13
+ blog = a_wp_blog
14
+ blog.xmlrpc.should_receive(:call).once.and_return(10)
15
+ blog.categories.create(valid_category_options).id.should == 10
16
+ end
17
+ end
18
+
19
+ it "should generate a slug from the title if not provided" do
20
+ Category.new(:name => "Blog Posts ").slug.should == "blog-posts"
21
+ Category.new(:name => "Blog Posts", :slug => 'posts').slug.should == "posts"
22
+ Category.new(:name => nil).slug.should be_empty
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ ROOT_PATH = File.join(File.dirname(__FILE__), '..')
2
+ $:.unshift ROOT_PATH unless $:.include? ROOT_PATH
3
+
4
+ require 'rubygems'
5
+ require 'lib/wp_rpc.rb'
6
+ include WpRpc
7
+
8
+ def valid_wp_blog_options
9
+ { :username => 'lily', :password => 'lilybeans', :url => 'http://example.com', :blog_id => 666 }
10
+ end
11
+
12
+ def valid_wp_post_options
13
+ { :title => "Test Post", :description => "The text of the post", :dateCreated => Time.at(1284243726),
14
+ :mt_keywords => 'test,post,example', :categories => 'blog' }
15
+ end
16
+
17
+ def a_wp_blog
18
+ Blog.new(valid_wp_blog_options)
19
+ end
20
+
21
+ def valid_wp_upload_options
22
+ { :name => "A file", :type => "application/octet-stream",
23
+ :bits => "12345678910", :overwrite => false }
24
+ end
25
+
26
+ def valid_category_options
27
+ { :name => 'Posts', :slug => 'posts', :parent_id => nil, :description => "Blog posts" }
28
+ end
data/wp_rpc.gemspec ADDED
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/wp_rpc/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Alex Ferreira"]
6
+ gem.email = ["alex@dsol.com.br"]
7
+ gem.description = "A Ruby library to interact with the Wordpress XMLRPC interface"
8
+ gem.summary = "A Ruby library to interact with the Wordpress XMLRPC interface"
9
+ gem.homepage = ""
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "wp_rpc"
15
+ gem.require_paths = ["lib"]
16
+
17
+ gem.version = WpRpc::VERSION
18
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wp_rpc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alex Ferreira
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-09-26 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A Ruby library to interact with the Wordpress XMLRPC interface
15
+ email:
16
+ - alex@dsol.com.br
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - .rspec
23
+ - Gemfile
24
+ - LICENSE
25
+ - README.md
26
+ - Rakefile
27
+ - lib/wp_rpc.rb
28
+ - lib/wp_rpc/attachment.rb
29
+ - lib/wp_rpc/base.rb
30
+ - lib/wp_rpc/blog.rb
31
+ - lib/wp_rpc/category.rb
32
+ - lib/wp_rpc/collections/attachments.rb
33
+ - lib/wp_rpc/collections/categories.rb
34
+ - lib/wp_rpc/collections/posts.rb
35
+ - lib/wp_rpc/post.rb
36
+ - lib/wp_rpc/version.rb
37
+ - spec/blog_spec.rb
38
+ - spec/category_collection_spec.rb
39
+ - spec/category_spec.rb
40
+ - spec/spec_helper.rb
41
+ - wp_rpc.gemspec
42
+ homepage: ''
43
+ licenses: []
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 1.8.24
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: A Ruby library to interact with the Wordpress XMLRPC interface
66
+ test_files:
67
+ - spec/blog_spec.rb
68
+ - spec/category_collection_spec.rb
69
+ - spec/category_spec.rb
70
+ - spec/spec_helper.rb