croudia 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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>
|