Sha256: 012c304364e1e68febba21ddfaf6c00464ad72c5fc9fc3c045130f70aead15c1

Contents?: true

Size: 1.82 KB

Versions: 1

Compression:

Stored size: 1.82 KB

Contents

require File.dirname(__FILE__) + '/base'
require 'builder'

module GData

  class Blogger < GData::Base

    def initialize(blog_id, entry_id=nil)
      @blog_id = blog_id
      @entry_id = entry_id
      super 'blogger', 'gdata-ruby', 'www.blogger.com'
    end

    def feed
      request "/feeds/#{@blog_id}/posts/default"
    end

    def list_blogs(profile_id)
      request "/feeds/#{profile_id}/blogs"
    end

    def entry
      @entry ||= Hpricot(request("/feeds/#{@blog_id}/posts/default/#{@entry_id}"))
    end

    def enclosure
      entry.search('//link[@rel="enclosure"]')
    end

    def enclosure?
      enclosure.any?
    end
  
    def add_enclosure(enclosure_url, enclosure_length)
      raise "An enclosure has already been added to this entry" if enclosure?
      # todo(stevejenson): replace with builder
      entry.search('//entry').append(%Q{<link rel="enclosure" type="audio/mpeg" title="MP3" href="#{enclosure_url}" length="#{enclosure_length}" />})
      save_entry
    end

    def remove_enclosure
      if enclosure?
        enclosure.remove
        save_entry
      end
    end

    def save_entry
      path = "/feeds/#{@blog_id}/posts/default/#{@entry_id}"
  
      put(path, entry.to_s)
    end

    # Creates a new entry with the given title and body
    def entry(title, body, labels=[])
      x = Builder::XmlMarkup.new :indent => 2
      @entry = x.entry 'xmlns' => 'http://www.w3.org/2005/Atom' do
        x.title title, 'type' => 'text'
        x.content 'type' => 'xhtml' do
          x.div 'xmlns' => 'http://www.w3.org/1999/xhtml' do
            x << body
          end
        end
        labels.each do |label|
          x.category 'scheme' => "http://www.blogger.com/atom/ns#", 'term' => label
        end
      end
      
      path = "/feeds/#{@blog_id}/posts/default"
      post(path, @entry)
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
csexton-twitter_archive-0.0.6 lib/twitter_archive/backends/blogger/blogger.rb