metaweblog 0.1.0 → 0.2.0
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.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +5 -0
- data/examples/get_posts.rb +13 -0
- data/examples/publish_new_entry.rb +17 -0
- data/lib/metaweblog/client.rb +4 -5
- data/lib/metaweblog/post.rb +53 -0
- data/lib/metaweblog/version.rb +1 -1
- data/metaweblog.gemspec +1 -0
- data/spec/metaweblog/client_spec.rb +13 -6
- data/spec/metaweblog/post_spec.rb +51 -0
- metadata +25 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 430757e72fb340b24d2589db4dde0c0170b429eb
|
4
|
+
data.tar.gz: eca57d56e475dc18a103298f7b0814860e72b61f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6b122aba4f970ed65200b0951145e4a80b846ecabc633b1a486578b1a53447b1b8150b6a1d3254b5bfcde4adb601b7c34d09f0e8f9205db1f5b787db2c125b94
|
7
|
+
data.tar.gz: 0dfae078d8da9c52f405b642648d29170716995aa904cccced4f1a37b842ec810cdd7e5baa848982014b6fa739154091d4657957747031b28260ca4899dee633
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'metaweblog'
|
4
|
+
|
5
|
+
blog_id, username, password = *(ARGV.dup.first(3))
|
6
|
+
|
7
|
+
client = MetaWeblog::Client.new("http://blog.fc2.com/xmlrpc.php",
|
8
|
+
blog_id,
|
9
|
+
username, password)
|
10
|
+
|
11
|
+
client.recent_posts.each do |post|
|
12
|
+
puts post
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'metaweblog'
|
4
|
+
|
5
|
+
blog_id, username, password = *(ARGV.dup.first(3))
|
6
|
+
|
7
|
+
entry = MetaWeblog::Post.new({
|
8
|
+
title: "Hello, MetaWeblog #{MetaWeblog::VERSION}",
|
9
|
+
description: 'This entry has been posted by metaweblog gem.',
|
10
|
+
pubDate: Time.new(2009, 4, 1)
|
11
|
+
})
|
12
|
+
|
13
|
+
client = MetaWeblog::Client.new("http://blog.fc2.com/xmlrpc.php",
|
14
|
+
blog_id,
|
15
|
+
username, password)
|
16
|
+
|
17
|
+
puts client.post(entry)
|
data/lib/metaweblog/client.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require 'metaweblog/post'
|
3
4
|
require 'xmlrpc/client'
|
4
5
|
|
5
6
|
module MetaWeblog
|
6
|
-
POST_MEMBERS = [:title, :link, :description]
|
7
|
-
Post = Struct.new(*POST_MEMBERS)
|
8
|
-
|
9
7
|
class Client
|
10
8
|
attr_reader :uri, :proxy, :blog_id, :username, :password, :client
|
11
9
|
|
@@ -16,6 +14,7 @@ module MetaWeblog
|
|
16
14
|
@username = username
|
17
15
|
@password = password
|
18
16
|
@client = XMLRPC::Client.new2(@uri, @proxy)
|
17
|
+
@client.http_header_extra = { 'Accept-Encoding' => 'identity' }
|
19
18
|
end
|
20
19
|
|
21
20
|
def get(post_id)
|
@@ -23,11 +22,11 @@ module MetaWeblog
|
|
23
22
|
end
|
24
23
|
|
25
24
|
def post(post, publish=true)
|
26
|
-
client.call('metaWeblog.newPost', blog_id, username, password, post, publish)
|
25
|
+
client.call('metaWeblog.newPost', blog_id, username, password, post.to_h, publish)
|
27
26
|
end
|
28
27
|
|
29
28
|
def edit(post_id, post, publish=true)
|
30
|
-
client.call('metaWeblog.editPost', post_id, username, password, post, publish)
|
29
|
+
client.call('metaWeblog.editPost', post_id, username, password, post.to_h, publish)
|
31
30
|
end
|
32
31
|
|
33
32
|
def recent_posts(n=10)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module MetaWeblog
|
4
|
+
|
5
|
+
class Post
|
6
|
+
def self.members
|
7
|
+
[:title, :link, :description, :pubDate]
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
@data = {}
|
12
|
+
|
13
|
+
if args.length == 1 && args.last.is_a?(Hash)
|
14
|
+
h = args.last
|
15
|
+
data = self.class.members.map { |m| (h[m] || h[m.to_s]) }
|
16
|
+
else
|
17
|
+
data = args
|
18
|
+
end
|
19
|
+
self.class.members.each_with_index do |member, i|
|
20
|
+
self.__send__ "#{member}=", data[i] if data[i]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def [](m)
|
25
|
+
@data[m]
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_h
|
29
|
+
@data.dup
|
30
|
+
end
|
31
|
+
|
32
|
+
members.each do |member|
|
33
|
+
define_method member do
|
34
|
+
@data[member]
|
35
|
+
end
|
36
|
+
|
37
|
+
define_method "#{member}=" do |val|
|
38
|
+
@data[member] = val
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def pub_date=(pub_date)
|
43
|
+
@data[:pubDate] = case pub_date
|
44
|
+
when String then Time.parse(pub_date)
|
45
|
+
when Time, DateTime then pub_date
|
46
|
+
else
|
47
|
+
raise ArgumentError, "The argument is not String, Time and DateTime."
|
48
|
+
end
|
49
|
+
end
|
50
|
+
alias :pubDate= :pub_date=
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
data/lib/metaweblog/version.rb
CHANGED
data/metaweblog.gemspec
CHANGED
@@ -6,6 +6,7 @@ require 'metaweblog/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "metaweblog"
|
8
8
|
spec.version = MetaWeblog::VERSION
|
9
|
+
spec.version = "#{spec.version}.pre#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS']
|
9
10
|
spec.authors = ["Tatsuya Sato"]
|
10
11
|
spec.email = ["satoryu.1981@gmail.com"]
|
11
12
|
spec.description = <<-DESC
|
@@ -5,29 +5,36 @@ require 'spec_helper'
|
|
5
5
|
describe MetaWeblog::Client do
|
6
6
|
before do
|
7
7
|
@client = MetaWeblog::Client.new('http://blog.example.com/xmlrpc',
|
8
|
-
'blog_id',
|
9
|
-
|
10
|
-
'password')
|
11
|
-
@xml_client = stub()
|
8
|
+
'blog_id', 'username', 'password')
|
9
|
+
@xml_client = double()
|
12
10
|
@client.instance_variable_set(:@client, @xml_client)
|
13
11
|
end
|
12
|
+
|
14
13
|
describe "#post" do
|
15
|
-
let(:expected_post)
|
14
|
+
let(:expected_post) do
|
15
|
+
{ title: 'title', description: 'hogehoge' }
|
16
|
+
end
|
17
|
+
let(:post) { MetaWeblog::Post.new(expected_post) }
|
18
|
+
|
16
19
|
before do
|
17
20
|
@xml_client.should_receive(:call).with('metaWeblog.newPost',
|
18
21
|
'blog_id',
|
19
22
|
'username', 'password',
|
20
23
|
expected_post, true)
|
21
24
|
end
|
25
|
+
|
22
26
|
it do
|
23
|
-
expect { @client.post(
|
27
|
+
expect { @client.post(post) }.not_to raise_error
|
24
28
|
end
|
25
29
|
end
|
30
|
+
|
26
31
|
describe "#get" do
|
27
32
|
let(:post_id) { 12345 }
|
33
|
+
|
28
34
|
before do
|
29
35
|
@xml_client.should_receive(:call).with('metaWeblog.getPost', post_id, 'username', 'password')
|
30
36
|
end
|
37
|
+
|
31
38
|
it do
|
32
39
|
expect { @client.get(post_id) }.not_to raise_error
|
33
40
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetaWeblog::Post do
|
4
|
+
let(:post) { MetaWeblog::Post.new(*args) }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
context 'Given an array of values' do
|
8
|
+
let(:args) do
|
9
|
+
[ 'title', 'http://blog.example.com/1234', 'desc' ]
|
10
|
+
end
|
11
|
+
|
12
|
+
specify '' do
|
13
|
+
expect(post.title).to eq('title')
|
14
|
+
expect(post.link).to eq('http://blog.example.com/1234')
|
15
|
+
expect(post.description).to eq('desc')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'Given only a hash' do
|
20
|
+
let(:args) do
|
21
|
+
[{ :title => 'Hello', 'description' => 'This is blog', :extra => 'not defined' }]
|
22
|
+
end
|
23
|
+
|
24
|
+
specify 'should assign values for members' do
|
25
|
+
expect(post[:title]).to eq(args[0][:title])
|
26
|
+
expect(post[:description]).to eq(args[0]['description'])
|
27
|
+
expect(post[:link]).to be_nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#pubDate' do
|
33
|
+
let(:args) { ['title', nil, nil, pubDate ] }
|
34
|
+
|
35
|
+
context 'Given as String' do
|
36
|
+
let(:pubDate) { 'Wed, 29 Jul 1981 21:16:00 +0900' }
|
37
|
+
|
38
|
+
specify 'should be Time object' do
|
39
|
+
expect(post.pubDate).to be_a(Time)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'Given as Time object' do
|
44
|
+
let(:pubDate) { Time.now }
|
45
|
+
|
46
|
+
specify 'should be Time object' do
|
47
|
+
expect(post.pubDate).to eq(pubDate)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,109 +1,109 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metaweblog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tatsuya Sato
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-05-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.3'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.3'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '2.0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '2.0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
|
-
description:
|
63
|
-
|
64
|
-
|
55
|
+
description: " Ruby client for metaWeblog API.\n This gem makes it easier for
|
56
|
+
developers to talk with your Blog supporting\n metaWeblog API. \n This gem
|
57
|
+
only depends on REXML provided as one of Ruby's standard lib. \n"
|
65
58
|
email:
|
66
59
|
- satoryu.1981@gmail.com
|
67
60
|
executables: []
|
68
61
|
extensions: []
|
69
62
|
extra_rdoc_files: []
|
70
63
|
files:
|
71
|
-
- .gitignore
|
64
|
+
- ".gitignore"
|
65
|
+
- ".rspec"
|
66
|
+
- ".travis.yml"
|
67
|
+
- CHANGELOG.md
|
72
68
|
- Gemfile
|
73
69
|
- LICENSE.txt
|
74
70
|
- README.md
|
75
71
|
- Rakefile
|
72
|
+
- examples/get_posts.rb
|
73
|
+
- examples/publish_new_entry.rb
|
76
74
|
- lib/metaweblog.rb
|
77
75
|
- lib/metaweblog/client.rb
|
76
|
+
- lib/metaweblog/post.rb
|
78
77
|
- lib/metaweblog/version.rb
|
79
78
|
- metaweblog.gemspec
|
80
79
|
- spec/metaweblog/client_spec.rb
|
80
|
+
- spec/metaweblog/post_spec.rb
|
81
81
|
- spec/spec_helper.rb
|
82
82
|
homepage: http://github.com/satoryu/metaweblog
|
83
83
|
licenses:
|
84
84
|
- MIT
|
85
|
+
metadata: {}
|
85
86
|
post_install_message:
|
86
87
|
rdoc_options: []
|
87
88
|
require_paths:
|
88
89
|
- lib
|
89
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
91
|
requirements:
|
92
|
-
- -
|
92
|
+
- - ">="
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: 1.9.3
|
95
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
96
|
requirements:
|
98
|
-
- -
|
97
|
+
- - ">="
|
99
98
|
- !ruby/object:Gem::Version
|
100
99
|
version: '0'
|
101
100
|
requirements: []
|
102
101
|
rubyforge_project:
|
103
|
-
rubygems_version:
|
102
|
+
rubygems_version: 2.2.0
|
104
103
|
signing_key:
|
105
|
-
specification_version:
|
104
|
+
specification_version: 4
|
106
105
|
summary: Ruby client for metaWeblog API.
|
107
106
|
test_files:
|
108
107
|
- spec/metaweblog/client_spec.rb
|
108
|
+
- spec/metaweblog/post_spec.rb
|
109
109
|
- spec/spec_helper.rb
|