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.
Files changed (43) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +29 -0
  5. data/Rakefile +2 -0
  6. data/croudia.gemspec +21 -0
  7. data/lib/croudia/api.rb +5 -0
  8. data/lib/croudia/identity.rb +39 -0
  9. data/lib/croudia/scraper/friendships.rb +33 -0
  10. data/lib/croudia/scraper/login.rb +40 -0
  11. data/lib/croudia/scraper/parser/users.rb +53 -0
  12. data/lib/croudia/scraper/parser/voices.rb +32 -0
  13. data/lib/croudia/scraper/parser.rb +13 -0
  14. data/lib/croudia/scraper/users.rb +20 -0
  15. data/lib/croudia/scraper/voices.rb +27 -0
  16. data/lib/croudia/scraper.rb +62 -0
  17. data/lib/croudia/user.rb +43 -0
  18. data/lib/croudia/version.rb +3 -0
  19. data/lib/croudia/voice.rb +21 -0
  20. data/lib/croudia.rb +23 -0
  21. data/spec/croudia/api_spec.rb +7 -0
  22. data/spec/croudia/identity_spec.rb +65 -0
  23. data/spec/croudia/scraper/friendships_spec.rb +61 -0
  24. data/spec/croudia/scraper/login_spec.rb +135 -0
  25. data/spec/croudia/scraper/parser/users_spec.rb +256 -0
  26. data/spec/croudia/scraper/parser/voices_spec.rb +119 -0
  27. data/spec/croudia/scraper/users_spec.rb +74 -0
  28. data/spec/croudia/scraper/voices_spec.rb +92 -0
  29. data/spec/croudia/scraper_spec.rb +120 -0
  30. data/spec/croudia/user_spec.rb +43 -0
  31. data/spec/croudia/version_spec.rb +7 -0
  32. data/spec/croudia/voice_spec.rb +16 -0
  33. data/spec/croudia_spec.rb +49 -0
  34. data/spec/fixtures/follower_wktk.html +89 -0
  35. data/spec/fixtures/following_wktk.html +89 -0
  36. data/spec/fixtures/user_wktk1.html +72 -0
  37. data/spec/fixtures/user_wktk2.html +75 -0
  38. data/spec/fixtures/user_wktk3.html +83 -0
  39. data/spec/fixtures/voices_reply_list.html +55 -0
  40. data/spec/fixtures/voices_timeline.html +60 -0
  41. data/spec/fixtures/voices_written.html +20 -0
  42. data/spec/helper.rb +32 -0
  43. 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,7 @@
1
+ require 'helper'
2
+
3
+ describe 'Croudia::VERSION' do
4
+ it 'is a version string' do
5
+ Croudia::VERSION.should be_a String
6
+ end
7
+ 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="&#x2713;" />
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>