Class: Masuda::Diary

Inherits:
Object
  • Object
show all
Defined in:
lib/masuda.rb

Constant Summary collapse

@@host =
'anond.hatelabo.jp'
@@login_host =
'www.hatelabo.jp'
@@user_agent =
"RubyMasudaLibrary/#{VERSION}"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDiary

Returns a new instance of Diary.



45
46
47
# File 'lib/masuda.rb', line 45

def initialize
  @cookies = {}
end

Class Method Details

.restore(raw_diary) ⇒ Object



49
50
51
52
53
# File 'lib/masuda.rb', line 49

def self.restore(raw_diary)
  diary = Diary.new
  diary.update(raw_diary)
  diary
end

Instance Method Details

#entries(page = nil) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/masuda.rb', line 85

def entries(page = nil)
  path = page ? "/?page=#{page}" : '/'
  res = request(path)
  ets = nil

  if '200' == res.code
    ets, pages = to_entries(res.body)
    ets.instance_variable_set(:@pages, pages)
    def ets.pages; @pages; end
  end

  ets
end

#entry(id) ⇒ Object



73
74
75
76
77
78
79
# File 'lib/masuda.rb', line 73

def entry(id)
res = request("/#{id}/")
return nil unless ('200' == res.code)
source = res.body.to_a
et= to_entry(source)
load_trackbacks(source, self, et)
et
    end

#login(user, pass) ⇒ Object



55
56
57
58
59
60
61
62
# File 'lib/masuda.rb', line 55

def (user, pass)
  logout if logined?
  res = request('/login', {:mode => 'enter', :key => user, :password => pass, :autologin => 1}, @@login_host)
  cookies = res.get_fields('set-cookie')
  set_cookie(cookies) if cookies
  @user = user if (retval = logined?)
  retval
end

#logined?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/masuda.rb', line 69

def logined?
  %w(rk b).all? {|k| @cookies.has_key?(k) and @cookies[k].valid? }
end

#logoutObject



64
65
66
67
# File 'lib/masuda.rb', line 64

def logout
  @cookies.clear
  @user = nil
end

#my_entries(page = nil) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/masuda.rb', line 99

def my_entries(page = nil)
  return nil unless logined?
  path = page ? "/#{@user}/?page=#{page}" : "/#{@user}/"
  res = request(path)
  ets = nil

  if '200' == res.code
    ets, pages = to_entries(res.body)
    ets.instance_variable_set(:@pages, pages)
    def ets.pages; @pages; end
  end

  ets
end

#post(title, content) ⇒ Object



114
115
116
117
118
# File 'lib/masuda.rb', line 114

def post(title, content)
  return false unless logined?
  res = request("/#{@user}/edit", {:mode => 'confirm',  :rkm => rkm, :id => '', :title => title, :body => content, :edit => "\343\201\223\343\201\256\345\206\205\345\256\271\343\202\222\347\231\273\351\214\262\343\201\231\343\202\213"})
   ('302' == res.code)
end

#rawObject



120
121
122
# File 'lib/masuda.rb', line 120

def raw
  Marshal.dump('user' => @user, 'cookies' => @cookies.values.map {|cookie| cookie.raw })
end

#trackbacks(id) ⇒ Object



81
82
83
# File 'lib/masuda.rb', line 81

def trackbacks(id)
  entry(id).trackbacks
end

#update(raw_diary) ⇒ Object



124
125
126
127
128
# File 'lib/masuda.rb', line 124

def update(raw_diary)
  attrs = Marshal.restore(raw_diary)
  @user = attrs['user']
  set_cookie(attrs['cookies'])
end