hatenagroup 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWFjZWYzZjAxOTg2ZGZjYTIyZDgzMWE1MDcyMzBmMDFlY2RiMDYzYg==
4
+ MzM5ZDU3MDgzNjM3NjdjOTAyYjNlM2Q2OWZkY2I5Y2QwMjdhMDJmOQ==
5
5
  data.tar.gz: !binary |-
6
- ZTk0ZTE0ZjA3MjE5OGIzYThlNmU1OGY1NTFjMzk4NjQyN2U1NDA2OQ==
6
+ MzdkMzRhMTI4NGE2MTI1NTdmNGI4ZjcwNmNmOGJmMWFhY2UxMmRiMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NWMwNmY2NzAxMjlhYzdkMjFjMjI3MmZhNDMzNGRiZmZhYTYyNDYyZTZjMmI0
10
- Yzk3NDEyZDFjMWUyMjc3NGRjM2U1ZGJhMDY1YjI2NzYxMjJjMWRiYzg4Mzll
11
- ZjYyNWRlMjVmYTdlMzcyN2Q0OWJlMGI1ZjA5NjAyN2I5OTRmMDU=
9
+ MzliNjM0NTdlZThhNzUwNzBmNGQ2ODljZDRmMWE0ZGNjNmNkZTc4OTkxZTI0
10
+ MzBjMTRkY2JiZGU2MWEyMDM3ZDI0YWEwNmJkMmQ1OGI2ZDI0NjljN2JmMzFl
11
+ OGJiNDk1ZWI0NzZhZTJhOWMzODQ0YjJmOGMwNDViYjRiNDExZjI=
12
12
  data.tar.gz: !binary |-
13
- YzQxODc2MTRiYzQwMjNiNDUxMDA0MWQ0ZTU3MDZhMzM5YWNhZWVlYTM5YjJm
14
- NjIzNzNkMTQzYzE2MmIxOWM4YjQzMjFlODQ3ZjQwYmEwZjNhYWFiODliODNm
15
- YTU2NmU5NjFmOGRiN2Y4ZDQ5ODFmZjYxMWE5N2MwMDM1MmZjMjY=
13
+ YjA5YjQ1MGY5OThhMTA1NzI0MjY3M2MxYmQ5MTJlZDZkOTYxMzViOGI2NmE4
14
+ NjUxNjRiNTE0OThlMDQwYTNmODNmMWZkOGZiOTI0OTFmODNmNmNiODFmMTVl
15
+ MmZhNjdhOTgyOGZjOWZkM2U3YjU5MjA4ODg5Zjc1YzJmZDZmN2M=
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # HatenaGroup
2
2
 
3
+ [![Build Status](https://travis-ci.org/sh19910711/hatenagroup.rb.svg?branch=master)](https://travis-ci.org/sh19910711/hatenagroup.rb)
4
+
3
5
  The simple client library for hatena group.
4
6
 
5
7
  ## Installation
data/lib/hatenagroup.rb CHANGED
@@ -1,5 +1,2 @@
1
- require "hatenagroup/version"
2
-
3
- module Hatenagroup
4
- # Your code goes here...
5
- end
1
+ require 'hatenagroup/version'
2
+ require 'hatenagroup/calendar'
@@ -1,71 +1,13 @@
1
- require 'mechanize'
1
+ require 'hatenagroup/calendar/client'
2
+ require 'hatenagroup/calendar/keyword'
2
3
 
3
4
  module HatenaGroup
4
- class Calendar
5
- def initialize(group, hatena_user_id, hatena_password)
6
- @group = group
7
- @agent = Mechanize.new
8
- agent.log = Logger.new(STDERR)
9
- agent.log.level = Logger::INFO
10
- agent.user_agent = USER_AGENT
11
- login! hatena_user_id, hatena_password
5
+ module Calendar
6
+ def self.new(*args)
7
+ Client.new *args
12
8
  end
13
9
 
14
- def day(d)
15
- keyword d.strftime("%Y-%m-%d")
16
- end
17
-
18
- private
19
- attr_reader :agent
20
- attr_reader :group
21
-
22
- USER_AGENT = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
23
- HATENA_LOGIN_URL = 'https://www.hatena.ne.jp/login'
24
-
25
- def login!(hatena_user_id, hatena_password)
26
- agent.get(HATENA_LOGIN_URL).form_with(:action => '/login') do |form|
27
- form['name'] = hatena_user_id
28
- form['password'] = hatena_password
29
- form['persistent'] = 0
30
- form.submit
31
- end
32
- end
33
-
34
- def keyword(s)
35
- Keyword.new agent, group, s
36
- end
37
-
38
- class Keyword
39
- def initialize(agent, group, keyword)
40
- @agent = agent
41
- @group = group
42
- @keyword = keyword
43
- end
44
-
45
- def body
46
- agent.get(read_url).form_with(:name => 'edit', :action => '/keyword').field_with(:name => 'body').value
47
- end
48
-
49
- def body=(s)
50
- agent.get(edit_url).form_with(:name => 'edit', :action => '/keyword') do |form|
51
- next unless form
52
- form['body'] = s
53
- form.submit
54
- end
55
- end
56
-
57
- private
58
- attr_reader :agent
59
- attr_reader :keyword
60
- attr_reader :group
61
-
62
- def read_url
63
- "http://#{group}.g.hatena.ne.jp/keyword/#{keyword}?mode=edit&#{Time.now.to_i}"
64
- end
65
-
66
- def edit_url
67
- "http://#{group}.g.hatena.ne.jp/keyword/#{keyword}?mode=edit"
68
- end
69
- end
10
+ USER_AGENT = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
11
+ HATENA_LOGIN_URL = 'https://www.hatena.ne.jp/login'
70
12
  end
71
13
  end
@@ -0,0 +1,37 @@
1
+ require 'mechanize'
2
+
3
+ module HatenaGroup
4
+ module Calendar
5
+ class Client
6
+ attr_reader :agent
7
+ attr_reader :group
8
+
9
+ def initialize(group, hatena_user_id, hatena_password)
10
+ @group = group
11
+ @agent = ::Mechanize.new
12
+ agent.log = ::Logger.new(STDERR)
13
+ agent.log.level = ::Logger::INFO
14
+ agent.user_agent = USER_AGENT
15
+ login! hatena_user_id, hatena_password
16
+ end
17
+
18
+ def day(d)
19
+ if d.instance_of?(Date)
20
+ Keyword.new self, d.strftime("%Y-%m-%d")
21
+ else
22
+ Keyword.new self, d
23
+ end
24
+ end
25
+
26
+ private
27
+ def login!(hatena_user_id, hatena_password)
28
+ agent.get(HATENA_LOGIN_URL).form_with(:action => '/login') do |form|
29
+ form['name'] = hatena_user_id
30
+ form['password'] = hatena_password
31
+ form['persistent'] = 0
32
+ form.submit
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,30 @@
1
+ module HatenaGroup
2
+ module Calendar
3
+ class Keyword
4
+ def initialize(client, keyword)
5
+ @client = client
6
+ @keyword = keyword
7
+ end
8
+
9
+ def body
10
+ edit_form.field_with(:name => 'body').value
11
+ end
12
+
13
+ def body=(s)
14
+ edit_form do |form|
15
+ form['body'] = s
16
+ form.submit
17
+ end
18
+ end
19
+
20
+ private
21
+ attr_reader :client
22
+ attr_reader :keyword
23
+
24
+ def edit_form(&b)
25
+ url = "http://#{client.group}.g.hatena.ne.jp/keyword/#{keyword}?mode=edit"
26
+ client.agent.get(url).form_with(:action => '/keyword', &b)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Hatenagroup
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hatenagroup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroyuki Sano
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-24 00:00:00.000000000 Z
11
+ date: 2016-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mechanize
@@ -111,6 +111,8 @@ files:
111
111
  - hatenagroup.gemspec
112
112
  - lib/hatenagroup.rb
113
113
  - lib/hatenagroup/calendar.rb
114
+ - lib/hatenagroup/calendar/client.rb
115
+ - lib/hatenagroup/calendar/keyword.rb
114
116
  - lib/hatenagroup/version.rb
115
117
  homepage: https://github.com/sh19910711/hatenagroup.rb
116
118
  licenses: []