croudia 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/croudia.gemspec +21 -0
- data/lib/croudia/api.rb +5 -0
- data/lib/croudia/identity.rb +39 -0
- data/lib/croudia/scraper/friendships.rb +33 -0
- data/lib/croudia/scraper/login.rb +40 -0
- data/lib/croudia/scraper/parser/users.rb +53 -0
- data/lib/croudia/scraper/parser/voices.rb +32 -0
- data/lib/croudia/scraper/parser.rb +13 -0
- data/lib/croudia/scraper/users.rb +20 -0
- data/lib/croudia/scraper/voices.rb +27 -0
- data/lib/croudia/scraper.rb +62 -0
- data/lib/croudia/user.rb +43 -0
- data/lib/croudia/version.rb +3 -0
- data/lib/croudia/voice.rb +21 -0
- data/lib/croudia.rb +23 -0
- data/spec/croudia/api_spec.rb +7 -0
- data/spec/croudia/identity_spec.rb +65 -0
- data/spec/croudia/scraper/friendships_spec.rb +61 -0
- data/spec/croudia/scraper/login_spec.rb +135 -0
- data/spec/croudia/scraper/parser/users_spec.rb +256 -0
- data/spec/croudia/scraper/parser/voices_spec.rb +119 -0
- data/spec/croudia/scraper/users_spec.rb +74 -0
- data/spec/croudia/scraper/voices_spec.rb +92 -0
- data/spec/croudia/scraper_spec.rb +120 -0
- data/spec/croudia/user_spec.rb +43 -0
- data/spec/croudia/version_spec.rb +7 -0
- data/spec/croudia/voice_spec.rb +16 -0
- data/spec/croudia_spec.rb +49 -0
- data/spec/fixtures/follower_wktk.html +89 -0
- data/spec/fixtures/following_wktk.html +89 -0
- data/spec/fixtures/user_wktk1.html +72 -0
- data/spec/fixtures/user_wktk2.html +75 -0
- data/spec/fixtures/user_wktk3.html +83 -0
- data/spec/fixtures/voices_reply_list.html +55 -0
- data/spec/fixtures/voices_timeline.html +60 -0
- data/spec/fixtures/voices_written.html +20 -0
- data/spec/helper.rb +32 -0
- metadata +157 -0
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::Scraper do
|
4
|
+
describe '#initialize' do
|
5
|
+
context 'when giving a block' do
|
6
|
+
it 'sets instance variables using block' do
|
7
|
+
Croudia::Scraper.new { |cr| cr.endpoint = 'http://wktk.in' }.
|
8
|
+
endpoint.should eq 'http://wktk.in'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'uses the default setting if not set' do
|
12
|
+
Croudia::Scraper.new { |_| }.endpoint.should eq Croudia.endpoint
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'sets @user_agent to @agent.user_agent' do
|
16
|
+
Croudia::Scraper.new { |cr| cr.user_agent = 'HelloHello!!!' }.user_agent.should eq 'HelloHello!!!'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when giving arguments' do
|
21
|
+
before do
|
22
|
+
stub_any('/').to_return(:status => 302, :headers => { :location => Croudia.endpoint + '/voices/timeline' })
|
23
|
+
stub_get('/voices/timeline').to_return(:body => '', :headers => {:content_type => 'text/html'})
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'logs in using arguments if 2 args provided' do
|
27
|
+
Croudia::Scraper.new('username', 'password')
|
28
|
+
a_post('/').should have_been_made
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not log in if args.size is less than 2' do
|
32
|
+
Croudia::Scraper.new('username')
|
33
|
+
a_post('/').should_not have_been_made
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#get' do
|
39
|
+
it 'gets the correct resource' do
|
40
|
+
stub_get('/correct_resource').to_return(:headers => {:content_type => 'text/html'})
|
41
|
+
Croudia::Scraper.new.get('/correct_resource')
|
42
|
+
a_get('/correct_resource').should have_been_made
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'can query params' do
|
46
|
+
stub_get('/hi?saying=hello').to_return(:headers => {:content_type => 'text/html'})
|
47
|
+
Croudia::Scraper.new.get('/hi', :saying => 'hello')
|
48
|
+
a_get('/hi?saying=hello').should have_been_made
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#post' do
|
53
|
+
it 'posts to the correct resource' do
|
54
|
+
stub_post('/correct_resource').to_return(:headers => {:content_type => 'text/html'})
|
55
|
+
Croudia::Scraper.new.post('/correct_resource')
|
56
|
+
a_post('/correct_resource').should have_been_made
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'can query params' do
|
60
|
+
stub_post('/hi').to_return(:headers => {:content_type => 'text/html'})
|
61
|
+
Croudia::Scraper.new.post('/hi', :saying => 'hello')
|
62
|
+
a_post('/hi').with(:body => /saying=hello/).should have_been_made
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'adds csrf-token to the query' do
|
66
|
+
stub_post('/hi').to_return(:headers => {:content_type => 'text/html'})
|
67
|
+
croudia = Croudia::Scraper.new
|
68
|
+
croudia.instance_variable_set('@authenticity_token', 'foofoo')
|
69
|
+
croudia.post('/hi')
|
70
|
+
a_post('/hi').with(:body => /authenticity_token=foofoo/).should have_been_made
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#pick_token' do
|
75
|
+
it 'picks the csrf-token if it is defined in the document' do
|
76
|
+
stub_get('/wktk').to_return(:body => fixture('user_wktk1'), :headers => {:content_type => 'text/html'})
|
77
|
+
croudia = Croudia::Scraper.new
|
78
|
+
croudia.get('/wktk')
|
79
|
+
croudia.instance_variable_get('@authenticity_token').should eq 'dummy_csrf_token'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe '#endpoint' do
|
84
|
+
it 'returns the current endpoint' do
|
85
|
+
Croudia::Scraper.new.endpoint.should eq 'https://croudia.com'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#endpoint=' do
|
90
|
+
it 'can set self.endpoint' do
|
91
|
+
croudia = Croudia::Scraper.new
|
92
|
+
croudia.endpoint = 'http://wktk.in'
|
93
|
+
croudia.endpoint.should eq 'http://wktk.in'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#user_agent' do
|
98
|
+
it 'returns the current user_agent' do
|
99
|
+
Croudia::Scraper.new.user_agent.should eq "The Croudia Gem/#{Croudia::VERSION} (https://github.com/wktk/croudia-gem)"
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'is the same value to @agent.user_agent' do
|
103
|
+
(c = Croudia::Scraper.new).user_agent.should eq c.agent.user_agent
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe '#user_agent=' do
|
108
|
+
it 'can set self.user_agent' do
|
109
|
+
croudia = Croudia::Scraper.new
|
110
|
+
croudia.user_agent = 'Foofoo'
|
111
|
+
croudia.user_agent.should eq 'Foofoo'
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'sets it to @agent.user_agent' do
|
115
|
+
croudia = Croudia::Scraper.new
|
116
|
+
croudia.user_agent = 'Barbar'
|
117
|
+
croudia.agent.user_agent.should eq 'Barbar'
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::User do
|
4
|
+
describe '#to_s' do
|
5
|
+
it 'returns username' do
|
6
|
+
Croudia::User.new(:username => 'wktk').to_s.should eq 'wktk'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
it 'sets @username as @id' do
|
12
|
+
Croudia::User.new(:username => 'wktk').id.should eq 'wktk'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'converts spreadia into an Integer' do
|
16
|
+
Croudia::User.new(:spreadia => '10').spreadia.should eq 10
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'converts favodia into an Integer' do
|
20
|
+
Croudia::User.new(:spreadia => '11').spreadia.should eq 11
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#==' do
|
25
|
+
it 'returns true if usernames are the same' do
|
26
|
+
user1 = Croudia::User.new(:username => 'wktk', :name => 'wktk')
|
27
|
+
user2 = Croudia::User.new(:username => 'wktk', :name => 'wktk!!')
|
28
|
+
(user1 == user2).should be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'returns false if usernames are different' do
|
32
|
+
user1 = Croudia::User.new(:username => 'wktk', :name => 'wktk')
|
33
|
+
user2 = Croudia::User.new(:username => 'croudia', :name => 'wktk')
|
34
|
+
(user1 == user2).should be_false
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'returns false if classes are different' do
|
38
|
+
user1 = Croudia::User.new(:username => 'wktk', :name => 'wktk')
|
39
|
+
user2 = { :username => 'wktk', :name => 'wktk' }
|
40
|
+
(user1 == user2).should be_false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::Voice do
|
4
|
+
describe '#to_s' do
|
5
|
+
it 'returns "@username: text"' do
|
6
|
+
user = Croudia::User.new(:username => 'wktk')
|
7
|
+
Croudia::Voice.new(:user => user, :desc => 'Hello!').to_s.should eq '@wktk: Hello!'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#to_i' do
|
12
|
+
it 'returns ID in Integer' do
|
13
|
+
Croudia::Voice.new(:id => '10', :desc => 'Hello!').to_i.should eq 10
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia do
|
4
|
+
context 'when delegating to Croudia::Scraper' do
|
5
|
+
before do
|
6
|
+
stub_get('/wktk').to_return(:body => fixture('user_wktk1'),
|
7
|
+
:headers => { :content_type => 'text/html' })
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should get the correct resource' do
|
11
|
+
Croudia.user('wktk')
|
12
|
+
a_get('/wktk').should have_been_made
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'returns the same result to Croudia::Scraper' do
|
16
|
+
Croudia.user('wktk').should eq Croudia::Scraper.new.user('wktk')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '.scraper' do
|
21
|
+
it 'returns a Croudia::Scraper' do
|
22
|
+
Croudia.scraper.should be_a Croudia::Scraper
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.new' do
|
27
|
+
it 'returns a Croudia::Scraper' do
|
28
|
+
Croudia.new.should be_a Croudia::Scraper
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '.client' do
|
33
|
+
it 'returns a Croudia::Scraper' do
|
34
|
+
Croudia.client.should be_a Croudia::Scraper
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '.respond_to?' do
|
39
|
+
it 'delegates to Croudia::Scraper' do
|
40
|
+
Croudia.respond_to?(:user).should be_true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.endpoint' do
|
45
|
+
it 'returns the default endpoint' do
|
46
|
+
Croudia.endpoint.should eq 'https://croudia.com'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Croudia(クローディア)</title>
|
6
|
+
<meta content="authenticity_token" name="csrf-param">
|
7
|
+
<meta content="dummy_csrf_token" name="csrf-token">
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<div data-role="page" data-dom-cache="false" class="no-cache" data-url="/follows/follower/wktk" data-id="hedder1" id="follower">
|
11
|
+
<div data-role="content">
|
12
|
+
<ul data-role="listview" data-split-icon="gear" id="follower_list" data-theme="c" data-dividertheme="i">
|
13
|
+
<li data-role="list-divider" class="bar">@wktkのフォロワー</li>
|
14
|
+
<li>
|
15
|
+
<a href="/follower1">
|
16
|
+
<img src="/avatar1" alt="follower 1" class="ui-li-icon avatar">
|
17
|
+
<p>
|
18
|
+
<span class="bord">follower 1</span>
|
19
|
+
<span class="gray">@follower1</span>
|
20
|
+
</p>
|
21
|
+
<!--
|
22
|
+
フォロー:8<br>
|
23
|
+
フォロワー:7
|
24
|
+
<a href="/follows/menu" data-rel="dialog" data-transition="slideup"></a>-->
|
25
|
+
<p class="fontg" style="font-size:12px;">
|
26
|
+
|
27
|
+
Description 1
|
28
|
+
|
29
|
+
<br>
|
30
|
+
<p class="font1" style="color:#5b9984;font-weight: normal">@follower1をフォローしています</p>
|
31
|
+
</p>
|
32
|
+
</a>
|
33
|
+
</li>
|
34
|
+
<li>
|
35
|
+
<a href="/follower2">
|
36
|
+
<img src="/avatar2" alt="follower 2" class="ui-li-icon avatar">
|
37
|
+
<p>
|
38
|
+
<span class="bord">follower 2</span>
|
39
|
+
<span class="gray">@follower2</span>
|
40
|
+
</p>
|
41
|
+
<!--
|
42
|
+
フォロー:8<br>
|
43
|
+
フォロワー:7
|
44
|
+
<a href="/follows/menu" data-rel="dialog" data-transition="slideup"></a>-->
|
45
|
+
<p class="fontg" style="font-size:12px;">
|
46
|
+
|
47
|
+
Description 2
|
48
|
+
|
49
|
+
<br>
|
50
|
+
<p class="font1" style="color:#e53b3b;font-weight: normal">@follower2をフォローしていません</p>
|
51
|
+
</p>
|
52
|
+
</a>
|
53
|
+
</li>
|
54
|
+
<li>
|
55
|
+
<a href="/follower3">
|
56
|
+
<img src="/avatar3" alt="follower 3" class="ui-li-icon avatar">
|
57
|
+
<p>
|
58
|
+
<span class="bord">follower 3</span>
|
59
|
+
<span class="gray">@follower3</span>
|
60
|
+
</p>
|
61
|
+
<!--
|
62
|
+
フォロー:8<br>
|
63
|
+
フォロワー:7
|
64
|
+
<a href="/follows/menu" data-rel="dialog" data-transition="slideup"></a>-->
|
65
|
+
<p class="fontg" style="font-size:12px;">
|
66
|
+
|
67
|
+
Description 3
|
68
|
+
|
69
|
+
<br>
|
70
|
+
</p>
|
71
|
+
</a>
|
72
|
+
</li>
|
73
|
+
</ul>
|
74
|
+
<br>
|
75
|
+
</div><!-- /content -->
|
76
|
+
<div data-role="footer" class="footer-docs" data-theme="b" data-position="fixed" data-id="fotter1">
|
77
|
+
<div data-role="navbar" data-iconpos="top" class="footer_navber" >
|
78
|
+
<ul>
|
79
|
+
<li><a href="/" data-icon="home" rel="external"><span class="small">ホーム</span></a></li>
|
80
|
+
<li><a href="/search/all_voice" data-icon="grid" rel="external"><span class="small">Pub</span></a></li>
|
81
|
+
<li><a href="/users/redirect_user" data-icon="info"><span class="small">プロフ</span></a></li>
|
82
|
+
<li><a href="/settings/account" data-icon="gear"><span class="small">設定</span></a></li>
|
83
|
+
<li><a href="JavaScript:scrollTo(0,0)" data-icon="arrow-u"><span class="small">上へ</span></a></li>
|
84
|
+
</ul>
|
85
|
+
</div><!-- /navbar -->
|
86
|
+
</div><!-- /footer -->
|
87
|
+
</div><!-- /page -->
|
88
|
+
</body>
|
89
|
+
</html>
|
@@ -0,0 +1,89 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Croudia(クローディア)</title>
|
6
|
+
<meta content="authenticity_token" name="csrf-param">
|
7
|
+
<meta content="dummy_csrf_token" name="csrf-token">
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<div data-role="page" data-dom-cache="false" class="no-cache" data-url="/follows/following/wktk" data-id="hedder1" id="following">
|
11
|
+
<div data-role="content">
|
12
|
+
<ul data-role="listview" data-split-icon="gear" id="following_list" data-theme="c" data-dividertheme="i">
|
13
|
+
<li data-role="list-divider" class="bar">@wktkのフォロー</li>
|
14
|
+
<li>
|
15
|
+
<a href="/following1">
|
16
|
+
<img src="/avatar1" alt="following 1" class="ui-li-icon avatar">
|
17
|
+
<p>
|
18
|
+
<span class="bord">following 1</span>
|
19
|
+
<span class="gray">@following1</span>
|
20
|
+
</p>
|
21
|
+
<!--
|
22
|
+
フォロー:8<br>
|
23
|
+
フォロワー:7
|
24
|
+
<a href="/follows/menu" data-rel="dialog" data-transition="slideup"></a>-->
|
25
|
+
<p class="fontg" style="font-size:12px;">
|
26
|
+
|
27
|
+
Description 1
|
28
|
+
|
29
|
+
<br>
|
30
|
+
<p class="font1" style="color:#5b9984;font-weight: normal">@following1をフォローしています</p>
|
31
|
+
</p>
|
32
|
+
</a>
|
33
|
+
</li>
|
34
|
+
<li>
|
35
|
+
<a href="/following2">
|
36
|
+
<img src="/avatar2" alt="following 2" class="ui-li-icon avatar">
|
37
|
+
<p>
|
38
|
+
<span class="bord">following 2</span>
|
39
|
+
<span class="gray">@following2</span>
|
40
|
+
</p>
|
41
|
+
<!--
|
42
|
+
フォロー:8<br>
|
43
|
+
フォロワー:7
|
44
|
+
<a href="/follows/menu" data-rel="dialog" data-transition="slideup"></a>-->
|
45
|
+
<p class="fontg" style="font-size:12px;">
|
46
|
+
|
47
|
+
Description 2
|
48
|
+
|
49
|
+
<br>
|
50
|
+
<p class="font1" style="color:#e53b3b;font-weight: normal">@following2をフォローしていません</p>
|
51
|
+
</p>
|
52
|
+
</a>
|
53
|
+
</li>
|
54
|
+
<li>
|
55
|
+
<a href="/following3">
|
56
|
+
<img src="/avatar3" alt="following 3" class="ui-li-icon avatar">
|
57
|
+
<p>
|
58
|
+
<span class="bord">following 3</span>
|
59
|
+
<span class="gray">@following3</span>
|
60
|
+
</p>
|
61
|
+
<!--
|
62
|
+
フォロー:8<br>
|
63
|
+
フォロワー:7
|
64
|
+
<a href="/follows/menu" data-rel="dialog" data-transition="slideup"></a>-->
|
65
|
+
<p class="fontg" style="font-size:12px;">
|
66
|
+
|
67
|
+
Description 3
|
68
|
+
|
69
|
+
<br>
|
70
|
+
</p>
|
71
|
+
</a>
|
72
|
+
</li>
|
73
|
+
</ul>
|
74
|
+
<br>
|
75
|
+
</div><!-- /content -->
|
76
|
+
<div data-role="footer" class="footer-docs" data-theme="b" data-position="fixed" data-id="fotter1">
|
77
|
+
<div data-role="navbar" data-iconpos="top" class="footer_navber" >
|
78
|
+
<ul>
|
79
|
+
<li><a href="/" data-icon="home" rel="external"><span class="small">ホーム</span></a></li>
|
80
|
+
<li><a href="/search/all_voice" data-icon="grid" rel="external"><span class="small">Pub</span></a></li>
|
81
|
+
<li><a href="/users/redirect_user" data-icon="info"><span class="small">プロフ</span></a></li>
|
82
|
+
<li><a href="/settings/account" data-icon="gear"><span class="small">設定</span></a></li>
|
83
|
+
<li><a href="JavaScript:scrollTo(0,0)" data-icon="arrow-u"><span class="small">上へ</span></a></li>
|
84
|
+
</ul>
|
85
|
+
</div><!-- /navbar -->
|
86
|
+
</div><!-- /footer -->
|
87
|
+
</div><!-- /page -->
|
88
|
+
</body>
|
89
|
+
</html>
|
@@ -0,0 +1,72 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>wktk! (@wktk) on Croudia</title>
|
6
|
+
<meta content="authenticity_token" name="csrf-param">
|
7
|
+
<meta content="dummy_csrf_token" name="csrf-token">
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<div data-role="page" data-url="/wktk" data-id="hedder1" id="user_profile">
|
11
|
+
<div data-role="content">
|
12
|
+
<ul data-role="listview" data-theme="c" data-dividertheme="i" style="padding-bottom:30px;">
|
13
|
+
<li data-role="list-divider" class="bar">wktk!のプロフィール</li>
|
14
|
+
</ul>
|
15
|
+
<img src="/testimages/download/9423" alt="wktk!" class="avatar_l" style="float:left;">
|
16
|
+
<span class="bord">wktk!</span>
|
17
|
+
<span class="gray"> @wktk</span>
|
18
|
+
<span class="fontg" style="word-break:break-all;">
|
19
|
+
|
20
|
+
|
21
|
+
This is a dummy description for test.
|
22
|
+
|
23
|
+
</span>
|
24
|
+
<br><br>
|
25
|
+
</ul>
|
26
|
+
<ul data-role="listview" data-inset="true" style="clear: both;">
|
27
|
+
<li>
|
28
|
+
<a href="/voices/user/wktk" rel="external">ささやき</a>
|
29
|
+
<span class="ui-li-count">3381</span>
|
30
|
+
</li>
|
31
|
+
<li>
|
32
|
+
<a href="/follows/following/wktk" rel="external">フォロー</a>
|
33
|
+
<span class="ui-li-count">46</span>
|
34
|
+
</li>
|
35
|
+
<li>
|
36
|
+
<a href="/follows/follower/wktk" rel="external">フォロワー</a>
|
37
|
+
<span class="ui-li-count">468</span>
|
38
|
+
</li>
|
39
|
+
</ul>
|
40
|
+
<ul data-role="listview" data-inset="true">
|
41
|
+
<li>
|
42
|
+
<a href="/voices/album/wktk" rel="external">アルバム</a>
|
43
|
+
<span class="ui-li-count">123</span>
|
44
|
+
</li>
|
45
|
+
</ul>
|
46
|
+
<ul data-role="listview" data-inset="true">
|
47
|
+
<li><a href="/units/addition/wktk" rel="external">リスト登録</a></li>
|
48
|
+
</ul>
|
49
|
+
<ul data-role="listview" data-inset="true">
|
50
|
+
<li><a rel="external" href="/users/google_maps/Tokyo, Japan">Tokyo, Japan</a></li>
|
51
|
+
<li><a href="http:///wktk.in" target="_blank">http://wktk.in</a></li>
|
52
|
+
</ul>
|
53
|
+
<ul data-role="listview" data-inset="true">
|
54
|
+
<li>
|
55
|
+
<a href="/spreads/spreadia/wktk" rel="external">スプレッディア</a>
|
56
|
+
<span class="ui-li-count">2525</span>
|
57
|
+
</li>
|
58
|
+
<li>
|
59
|
+
<a href="/favorites/favodia/wktk" rel="external">ファボーディア</a>
|
60
|
+
<span class="ui-li-count">4321</span>
|
61
|
+
</li>
|
62
|
+
</ul>
|
63
|
+
<ul data-role="listview" data-inset="true">
|
64
|
+
<li data-theme="a">
|
65
|
+
<a href="/settings/account" data-theme="a">設定</a>
|
66
|
+
</li>
|
67
|
+
</ul>
|
68
|
+
<br><br>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
</body>
|
72
|
+
</html>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>wktk! (@wktk) on Croudia</title>
|
6
|
+
<meta content="authenticity_token" name="csrf-param">
|
7
|
+
<meta content="dummy_csrf_token" name="csrf-token">
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<div data-role="page" data-url="/wktk" data-id="hedder1" id="user_profile">
|
11
|
+
<div data-role="content">
|
12
|
+
<ul data-role="listview" data-theme="c" data-dividertheme="i" style="padding-bottom:30px;">
|
13
|
+
<li data-role="list-divider" class="bar">wktk!のプロフィール</li>
|
14
|
+
</ul>
|
15
|
+
<img src="/testimages/download/9423" alt="wktk!" class="avatar_l" style="float:left;">
|
16
|
+
<span class="bord">wktk!</span>
|
17
|
+
<span class="gray"> @wktk</span>
|
18
|
+
<span class="fontg" style="word-break:break-all;">
|
19
|
+
|
20
|
+
|
21
|
+
This is a dummy description for test.
|
22
|
+
|
23
|
+
</span>
|
24
|
+
<p class="font1" style="color:#5b9984; clear: both;">
|
25
|
+
@wktkからフォローされています
|
26
|
+
<br>
|
27
|
+
<span class="font1" style="color:#5b9984; clear: both;">
|
28
|
+
@wktkをフォローしています
|
29
|
+
</span>
|
30
|
+
</p>
|
31
|
+
<a href="/follows/target_check_dialog/wktk" data-role="button" data-rel="dialog" data-theme="n" data-icon="arrow-r" >フォロー解除</a>
|
32
|
+
</ul>
|
33
|
+
<ul data-role="listview" data-inset="true" style="clear: both;">
|
34
|
+
<li>
|
35
|
+
<a href="/voices/user/wktk" rel="external">ささやき</a>
|
36
|
+
<span class="ui-li-count">3381</span>
|
37
|
+
</li>
|
38
|
+
<li>
|
39
|
+
<a href="/follows/following/wktk" rel="external">フォロー</a>
|
40
|
+
<span class="ui-li-count">46</span>
|
41
|
+
</li>
|
42
|
+
<li>
|
43
|
+
<a href="/follows/follower/wktk" rel="external">フォロワー</a>
|
44
|
+
<span class="ui-li-count">468</span>
|
45
|
+
</li>
|
46
|
+
</ul>
|
47
|
+
<ul data-role="listview" data-inset="true">
|
48
|
+
<li>
|
49
|
+
<a href="/voices/album/wktk" rel="external">アルバム</a>
|
50
|
+
<span class="ui-li-count">123</span>
|
51
|
+
</li>
|
52
|
+
</ul>
|
53
|
+
<ul data-role="listview" data-inset="true">
|
54
|
+
<li><a href="/units/addition/wktk" rel="external">リスト登録</a></li>
|
55
|
+
</ul>
|
56
|
+
<ul data-role="listview" data-inset="true">
|
57
|
+
<li>
|
58
|
+
<a href="/spreads/spreadia/wktk" rel="external">スプレッディア</a>
|
59
|
+
<span class="ui-li-count">2525</span>
|
60
|
+
</li>
|
61
|
+
<li>
|
62
|
+
<a href="/favorites/favodia/wktk" rel="external">ファボーディア</a>
|
63
|
+
<span class="ui-li-count">4321</span>
|
64
|
+
</li>
|
65
|
+
</ul>
|
66
|
+
<ul data-role="listview" data-inset="true">
|
67
|
+
<li data-theme="a">
|
68
|
+
<a href="/settings/account" data-theme="a">設定</a>
|
69
|
+
</li>
|
70
|
+
</ul>
|
71
|
+
<br><br>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
</body>
|
75
|
+
</html>
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>wktk! (@wktk) on Croudia</title>
|
6
|
+
<meta content="authenticity_token" name="csrf-param">
|
7
|
+
<meta content="dummy_csrf_token" name="csrf-token">
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<div data-role="page" data-url="/wktk" data-id="hedder1" id="user_profile">
|
11
|
+
<div data-role="content">
|
12
|
+
<ul data-role="listview" data-theme="c" data-dividertheme="i" style="padding-bottom:30px;">
|
13
|
+
<li data-role="list-divider" class="bar">wktk!のプロフィール</li>
|
14
|
+
</ul>
|
15
|
+
<img src="/testimages/download/9423" alt="wktk!" class="avatar_l" style="float:left;">
|
16
|
+
<span class="bord">wktk!</span>
|
17
|
+
<span class="gray"> @wktk</span>
|
18
|
+
<span class="fontg" style="word-break:break-all;">
|
19
|
+
|
20
|
+
|
21
|
+
This is a dummy description for test.
|
22
|
+
|
23
|
+
</span>
|
24
|
+
<p class="font1" style="color:#e53b3b; clear: both;">
|
25
|
+
@wktkからフォローされていません
|
26
|
+
<br>
|
27
|
+
<span class="font1" style="color:#e53b3b; clear: both;">
|
28
|
+
@wktkをフォローしていません
|
29
|
+
</span>
|
30
|
+
</p>
|
31
|
+
<form accept-charset="UTF-8" action="/follows/target_follow" method="post">
|
32
|
+
<div style="margin:0;padding:0;display:inline">
|
33
|
+
<input name="utf8" type="hidden" value="✓" />
|
34
|
+
<input name="authenticity_token" type="hidden" value="dummy_csrf_token" />
|
35
|
+
</div>
|
36
|
+
<input id="follow_action" name="follow_action" type="hidden" value="enable" />
|
37
|
+
<input id="target_user_name" name="target_user_name" type="hidden" value="wktk" />
|
38
|
+
<input type="submit" data-icon="arrow-r" value="フォローする" data-theme="b">
|
39
|
+
</form>
|
40
|
+
</ul>
|
41
|
+
<ul data-role="listview" data-inset="true" style="clear: both;">
|
42
|
+
<li>
|
43
|
+
<a href="/voices/user/wktk" rel="external">ささやき</a>
|
44
|
+
<span class="ui-li-count">3381</span>
|
45
|
+
</li>
|
46
|
+
<li>
|
47
|
+
<a href="/follows/following/wktk" rel="external">フォロー</a>
|
48
|
+
<span class="ui-li-count">46</span>
|
49
|
+
</li>
|
50
|
+
<li>
|
51
|
+
<a href="/follows/follower/wktk" rel="external">フォロワー</a>
|
52
|
+
<span class="ui-li-count">468</span>
|
53
|
+
</li>
|
54
|
+
</ul>
|
55
|
+
<ul data-role="listview" data-inset="true">
|
56
|
+
<li>
|
57
|
+
<a href="/voices/album/wktk" rel="external">アルバム</a>
|
58
|
+
<span class="ui-li-count">123</span>
|
59
|
+
</li>
|
60
|
+
</ul>
|
61
|
+
<ul data-role="listview" data-inset="true">
|
62
|
+
<li><a href="/units/addition/wktk" rel="external">リスト登録</a></li>
|
63
|
+
</ul>
|
64
|
+
<ul data-role="listview" data-inset="true">
|
65
|
+
<li>
|
66
|
+
<a href="/spreads/spreadia/wktk" rel="external">スプレッディア</a>
|
67
|
+
<span class="ui-li-count">2525</span>
|
68
|
+
</li>
|
69
|
+
<li>
|
70
|
+
<a href="/favorites/favodia/wktk" rel="external">ファボーディア</a>
|
71
|
+
<span class="ui-li-count">4321</span>
|
72
|
+
</li>
|
73
|
+
</ul>
|
74
|
+
<ul data-role="listview" data-inset="true">
|
75
|
+
<li data-theme="a">
|
76
|
+
<a href="/settings/account" data-theme="a">設定</a>
|
77
|
+
</li>
|
78
|
+
</ul>
|
79
|
+
<br><br>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
</body>
|
83
|
+
</html>
|