Class: Wordpress::Blog

Inherits:
Object
  • Object
show all
Includes:
Loggable, ParamsCheck
Defined in:
lib/blog.rb

Instance Method Summary collapse

Methods included from Loggable

included, #log

Methods included from ParamsCheck

#check_param

Constructor Details

#initialize(params = {}) ⇒ Blog

Returns a new instance of Blog.



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/blog.rb', line 11

def initialize(params = {})
  @blog_uri = URI.parse(check_param(params, :blog_uri))

  @xmlrpc_path = params[:xmlrpc_path] || "xmlrpc.php"

  @id = params[:blog_id] || 0

  @user = check_param(params, :user)

  @password = check_param(params, :password)

  @client = XMLRPC::Client.new2(URI.join(@blog_uri.to_s, @xmlrpc_path).to_s)
end

Instance Method Details

#delete(item) ⇒ Object

update



61
62
63
64
65
66
67
68
69
70
# File 'lib/blog.rb', line 61

def delete(item)
  case item
  when Wordpress::Post
    return api_call("blogger.deletePost", "", item.id, @user, @password, true)
  when Wordpress::Page
    return blog_api_call("wp.deletePage", item.id)
  else
    raise "Unknown item type: #{item}"
  end
end

#get_page_listObject



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/blog.rb', line 72

def get_page_list
  page_list = blog_api_call("wp.getPages").collect do |struct|
    Wordpress::Page.from_struct(:wp, struct)
  end
  # link pages list with each other
  page_list.each do |page|
    page.parent = page_list.find{|p| p.id == page.parent_id} if page.parent_id
  end

  page_list
end

#get_post(post_id) ⇒ Object

initialize



25
26
27
# File 'lib/blog.rb', line 25

def get_post(post_id)
  Post.new(api_call("metaWeblog.getPost", post_id, @user, @password))
end

#publish(item) ⇒ Object

recent_posts



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/blog.rb', line 35

def publish(item)
  process_images(item) unless item.images.nil?
  case item
  when Wordpress::Post
    item.id = blog_api_call("metaWeblog.newPost", item.to_struct(:metaWeblog), true).to_i
  when Wordpress::Page
    item.id = blog_api_call("wp.newPage", item.to_struct(:wp), true).to_i
  else
    raise "Unknown item type: #{item}"
  end
  item.published = true
  return item
end

#recent_posts(number_of_posts) ⇒ Object

get_post



29
30
31
32
33
# File 'lib/blog.rb', line 29

def recent_posts(number_of_posts)
  blog_api_call("metaWeblog.getRecentPosts", number_of_posts).collect do |struct|
    Post.from_struct(:metaWeblog, struct)
  end
end

#update(item) ⇒ Object

publish



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/blog.rb', line 49

def update(item)
  process_images(item) unless item.images.nil?
  case item
  when Post
    return api_call("metaWeblog.editPost", item.id, @user, @password, item.to_struct(:metaWeblog), item.published)
  when Page
    return api_call("wp.editPage", @id, item.id, @user, @password, item.to_struct(:wp), item.published)
  else
    raise "Unknown item type: #{item}"
  end
end

#upload_file(file) ⇒ Object

get_page_list



84
85
86
87
88
89
90
91
92
# File 'lib/blog.rb', line 84

def upload_file(file)
  struct = {
    :name => File.basename(file.path),
    :type => MimeMagic.by_magic(file).type,
    :bits => XMLRPC::Base64.new(File.open(file.path, "r").read),
    :overwrite => true
  }
  return blog_api_call("wp.uploadFile", struct)
end