fcid 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +22 -0
  4. data/app/controllers/fcid/feeds_controller.rb +22 -0
  5. data/app/controllers/fcid/friendships_controller.rb +74 -0
  6. data/app/controllers/fcid/messages_controller.rb +24 -0
  7. data/app/controllers/fcid/session_controller.rb +80 -0
  8. data/app/controllers/fcid/users_controller.rb +25 -0
  9. data/app/views/fcid/_ajax_new.html.erb +3 -0
  10. data/app/views/fcid/_announce.html.erb +5 -0
  11. data/app/views/fcid/_footer.html.erb +0 -0
  12. data/app/views/fcid/_navigation.html.erb +0 -0
  13. data/app/views/fcid/create.html.erb +6 -0
  14. data/app/views/fcid/feeds/_feed.html.erb +29 -0
  15. data/app/views/fcid/feeds/index.html.erb +4 -0
  16. data/app/views/fcid/feeds/show.html.erb +0 -0
  17. data/app/views/fcid/friendships/index.html.erb +5 -0
  18. data/app/views/fcid/friendships/new.html.erb +22 -0
  19. data/app/views/fcid/messages/_message.html.erb +0 -0
  20. data/app/views/fcid/messages/_message_tr.html.erb +8 -0
  21. data/app/views/fcid/messages/index.html.erb +20 -0
  22. data/app/views/fcid/new.html.erb +30 -0
  23. data/app/views/fcid/session/new.html.erb +40 -0
  24. data/app/views/fcid/users/_ajax_new.html.erb +3 -0
  25. data/app/views/fcid/users/create.html.erb +6 -0
  26. data/app/views/fcid/users/new.html.erb +33 -0
  27. data/app/views/friendships/new.html.erb +22 -0
  28. data/app/views/session/new.html.erb +20 -0
  29. data/config/routes.rb +29 -0
  30. data/lib/fcid/active_resource/exceptions.rb +7 -0
  31. data/lib/fcid/active_resource/extra_params.rb +66 -0
  32. data/lib/fcid/active_resource/session.rb +45 -0
  33. data/lib/fcid/base.rb +7 -0
  34. data/lib/fcid/config.rb +88 -0
  35. data/lib/fcid/consumer.rb +51 -0
  36. data/lib/fcid/controller.rb +46 -0
  37. data/lib/fcid/email.rb +9 -0
  38. data/lib/fcid/engine.rb +5 -0
  39. data/lib/fcid/feed.rb +17 -0
  40. data/lib/fcid/friendship.rb +5 -0
  41. data/lib/fcid/helpers.rb +49 -0
  42. data/lib/fcid/message.rb +5 -0
  43. data/lib/fcid/notification.rb +5 -0
  44. data/lib/fcid/publisher/base.rb +398 -0
  45. data/lib/fcid/session.rb +5 -0
  46. data/lib/fcid/user.rb +50 -0
  47. data/lib/fcid/user_methods.rb +39 -0
  48. data/lib/fcid/version.rb +3 -0
  49. data/lib/fcid.rb +12 -0
  50. data/lib/fcid_client.rb +14 -0
  51. data/lib/tasks/fcid_tasks.rake +4 -0
  52. data/lib/vendor/authenticated_system.rb +153 -0
  53. data/lib/vendor/authenticated_test_helper.rb +11 -0
  54. data/test/dummy/README.rdoc +261 -0
  55. data/test/dummy/Rakefile +7 -0
  56. data/test/dummy/app/assets/javascripts/application.js +15 -0
  57. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  58. data/test/dummy/app/controllers/application_controller.rb +3 -0
  59. data/test/dummy/app/helpers/application_helper.rb +2 -0
  60. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  61. data/test/dummy/config/application.rb +59 -0
  62. data/test/dummy/config/boot.rb +10 -0
  63. data/test/dummy/config/database.yml +25 -0
  64. data/test/dummy/config/environment.rb +5 -0
  65. data/test/dummy/config/environments/development.rb +37 -0
  66. data/test/dummy/config/environments/production.rb +67 -0
  67. data/test/dummy/config/environments/test.rb +37 -0
  68. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  69. data/test/dummy/config/initializers/inflections.rb +15 -0
  70. data/test/dummy/config/initializers/mime_types.rb +5 -0
  71. data/test/dummy/config/initializers/secret_token.rb +7 -0
  72. data/test/dummy/config/initializers/session_store.rb +8 -0
  73. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  74. data/test/dummy/config/locales/en.yml +5 -0
  75. data/test/dummy/config/routes.rb +58 -0
  76. data/test/dummy/config.ru +4 -0
  77. data/test/dummy/public/404.html +26 -0
  78. data/test/dummy/public/422.html +26 -0
  79. data/test/dummy/public/500.html +25 -0
  80. data/test/dummy/public/favicon.ico +0 -0
  81. data/test/dummy/script/rails +6 -0
  82. data/test/fcid_test.rb +9 -0
  83. data/test/test_helper.rb +15 -0
  84. metadata +169 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = Fcid
2
+
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the fcid plugin.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+
15
+ desc 'Generate documentation for the fcid plugin.'
16
+ Rake::RDocTask.new(:rdoc) do |rdoc|
17
+ rdoc.rdoc_dir = 'rdoc'
18
+ rdoc.title = 'Fcid'
19
+ rdoc.options << '--line-numbers' << '--inline-source'
20
+ rdoc.rdoc_files.include('README')
21
+ rdoc.rdoc_files.include('lib/**/*.rb')
22
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ class Fcid::FeedsController < ApplicationController
3
+
4
+ def index
5
+ @user = Fcid::User.find current_user.id
6
+ Fcid::Feed.with_session @user do
7
+ @feeds = Fcid::Feed.find :all
8
+ end
9
+ end
10
+
11
+ def show
12
+ @feed = Fcid::Feed.find params[:id]
13
+ end
14
+
15
+ def destroy
16
+ @feed = Fcid::Feed.find params[:id]
17
+ @feed.destroy
18
+ flash[:notice] = "删除成功"
19
+ redirect_to fcid_feeds_path
20
+ end
21
+
22
+ end
@@ -0,0 +1,74 @@
1
+ # encoding: utf-8
2
+ class Fcid::FriendshipsController < ApplicationController
3
+
4
+ layout :calc_layout
5
+
6
+ before_filter :login_required
7
+
8
+ # 输出 json 和 xml 或者其他的一些信息
9
+ # 可能得缓存,具体方案得研究
10
+ def index
11
+ Fcid::Friendship.with_session current_user do
12
+ @friendships = Fcid::Friendship.find :all
13
+ end
14
+ end
15
+
16
+ def create
17
+ Fcid::Friendship.with_session current_user do
18
+ logger.debug current_user.fcid_auth_token
19
+ @user = Fcid::User.find current_user.id
20
+ @friendship = Fcid::Friendship.new params[:fcid_friendship]
21
+ @friendship.user_id = @user.id
22
+ @success = @friendship.save
23
+ end
24
+ respond_to do |format|
25
+
26
+ format.html do
27
+ if @success
28
+ flash[:notice] = "操作成功"
29
+ else
30
+ flash[:error] = @friendship.errors.full_messages.first
31
+ end
32
+ @redirect_to = params[:redirect_to]
33
+ if @redirect_to.blank?
34
+ redirect_to :back
35
+ else
36
+ redirect_to @redirect_to
37
+ end
38
+ end
39
+
40
+
41
+ format.js do
42
+ render :update do |page|
43
+ page.alert("yes")
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+
50
+ def new
51
+ friend_id = params[:friend_id]
52
+ @friend = Fcid::User.find params[:friend_id]
53
+ if @friend.friend?(current_user)
54
+ # 已经是朋友了
55
+ else
56
+ @friendship = Fcid::Friendship.new :note=>nil,:friend_id=>friend_id,:user_id=>nil
57
+ end
58
+ end
59
+
60
+ def destroy
61
+ friend_id = params[:friend_id]
62
+ @friend = Fcid::User.find params[:friend_id]
63
+ end
64
+
65
+ protected
66
+ def calc_layout
67
+ if params[:nolayout]
68
+ false
69
+ else
70
+ nil
71
+ end
72
+ end
73
+
74
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ class Fcid::MessagesController < ApplicationController
3
+
4
+ def index
5
+ @user = Fcid::User.find current_user.id
6
+ Fcid::Message.with_session @user do
7
+ @messages = Fcid::Message.find :all
8
+ end
9
+ end
10
+
11
+ def show
12
+ @message = Fcid::Message.find params[:id]
13
+ end
14
+
15
+ def create
16
+ end
17
+
18
+ def new
19
+ end
20
+
21
+ def destroy
22
+ end
23
+
24
+ end
@@ -0,0 +1,80 @@
1
+ # encoding: utf-8
2
+ class Fcid::SessionController < ApplicationController
3
+
4
+ def oauth
5
+ oauth_token,oauth_verifier = params[:oauth_token] , params[:oauth_verifier]
6
+ if oauth_token && oauth_verifier
7
+ @access_token = session[:request_token].get_access_token :oauth_verifier => oauth_verifier
8
+ hash = Hash.from_xml @access_token.get("/users/me.xml").body
9
+ user_hash = hash['user']
10
+ # ::User.sync(@user['id'])
11
+ user = ::User.find_or_initialize_by_id(user_hash['id'])
12
+ user_hash.each_pair do |key,value|
13
+ # user[key] = value
14
+ end
15
+ user[:uname] = user_hash['username']
16
+ user[:avatar] = user_hash['avatar']
17
+ user[:access_token] = @access_token.token
18
+ user[:access_secret] = @access_token.secret
19
+ user.save!
20
+
21
+ self.current_user = user
22
+ url = params[:redirect_to] || session[:redirect_to] || root_path
23
+ session.delete :redirect_to
24
+ redirect_to url
25
+ else
26
+ # 先检测是否登录了 fcid
27
+ @request_token = Fcid.consumer.get_request_token
28
+ session[:request_token] = @request_token
29
+ redirect_to @request_token.authorize_url + "&dialog=1"
30
+ end
31
+ rescue OAuth::Unauthorized=> e
32
+ (flash[:error] = "无权访问,请确认配置文件设置是否正确(api_key,api_secret)") && redirect_to(:back)
33
+ end
34
+
35
+ def create
36
+ if fcid_user = Fcid::User.authenticate(params[:username_or_email], params[:password])
37
+ ::User.sync(fcid_user["id"])
38
+ self.current_user = ::User.find(fcid_user["id"])
39
+ end
40
+ if logged_in?
41
+ respond_to do |format|
42
+ format.html do
43
+ flash[:notice] = "登录成功。"
44
+ url = params[:redirect_to] || session[:redirect_to] || root_path
45
+ session.delete :redirect_to
46
+ redirect_to url
47
+ end
48
+
49
+ format.js do
50
+ end
51
+ end
52
+ else
53
+ flash[:error] = "登录失败,请确认你输入的信息是正确的,或者此用户未被激活"
54
+ redirect_to new_fcid_session_path
55
+ end
56
+ end
57
+
58
+ def new
59
+ if params[:redirect_to]
60
+ session[:redirect_to] = params[:redirect_to]
61
+ end
62
+ end
63
+
64
+ def destroy
65
+ cookies.delete :auth_token
66
+ cookies.delete :fcid_auth_token #删除passport上面的cookie,防止再次通过passport上的cookie登录
67
+ session.delete :user
68
+ session.delete :user_id
69
+ flash[:notice] = "您已经成功退出系统。"
70
+ redirect_to(:back)
71
+ end
72
+
73
+ # sync user infomation from fcid.net
74
+ def sync
75
+ ::User.sync(current_user.id) if logged_in?
76
+ flash[:notice] = "同步成功"
77
+ redirect_to_back_or_default '/'
78
+ end
79
+
80
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ class Fcid::UsersController < ApplicationController
3
+ # Be sure to include AuthenticationSystem in Application Controller instead
4
+ def new
5
+ @user = Fcid::User.new
6
+ respond_to do |format|
7
+ format.html
8
+ format.text do
9
+ render :partial=>"ajax_new"
10
+ end
11
+ end
12
+ end
13
+
14
+ def destroy
15
+ end
16
+
17
+ def create
18
+ @user = Fcid::User.new params[:fcid_user]
19
+ if @user.save
20
+ # it will render an create.html.erb
21
+ else
22
+ render :action=>"new"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,3 @@
1
+ <% form_remote_tag :url=>passport_path do %>
2
+ <%= render :partial=>"form" %>
3
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <div class="announce">
2
+ <div>
3
+ <p>本系统用户系统由 <%= link_to "非常ID","http://www.fcid.net" %> <%= link_to image_tag(File.join(Fcid.url('assets','logo.gif')),:alt=>"非常ID",:style=>"height:16px") %> 提供</p>
4
+ </div>
5
+ </div>
File without changes
File without changes
@@ -0,0 +1,6 @@
1
+ <div class="box">
2
+ <h2>注册成功</h2>
3
+ <p>
4
+ <div class="empty">恭喜你成为本站注册会员,请您去您的信箱 <%= link_to(@user.email,"http://www.#{@user.email.split("@").last}") %> 收取激活邮件完成本次注册。</div>
5
+ </p>
6
+ </div>
@@ -0,0 +1,29 @@
1
+ <%= time_separator feed.created_at %>
2
+ <div class="fcid-feed clear">
3
+ <div class="fcid-feed-left">
4
+ <div class="fcid-feed-avatar">
5
+ <%= avatar feed.actor %>
6
+ </div>
7
+ </div>
8
+
9
+ <div class="fcid-feed-right">
10
+ <div class="fcid-feed-title">
11
+ <%= feed.title %>
12
+ <div class="fcid-feed-time">
13
+ <%= time_ago_in_words feed.created_at %>
14
+ </div>
15
+ </div>
16
+ <div class="fcid-feed-body">
17
+ <%= feed.body %>
18
+ </div>
19
+ <div class="fcid-feed-pictures">
20
+ <% feed.pictures.each do |picture| %>
21
+ <div class="fcid-feed-picture">
22
+ <%= link_to image_tag(picture[:url]),picture[:link] %>
23
+ </div>
24
+ <% end %>
25
+ </div>
26
+ <div class="fcid-feed-setting">
27
+ </div>
28
+ </div>
29
+ </div>
@@ -0,0 +1,4 @@
1
+ <h2>动态</h2>
2
+ <div class="feeds">
3
+ <%= render :collection=>@feeds,:partial=>"fcid/feeds/feed",:as=>:feed %>
4
+ </div>
File without changes
@@ -0,0 +1,5 @@
1
+ <% @friendships.each do |friendship| %>
2
+ <div class="fcid-friendship">
3
+ <%# friendship.user.inspect %>
4
+ </div>
5
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <div class="show-box clear">
2
+ <div class="show-box-left">
3
+ <p><%= avatar @friend %></p>
4
+ <p><%= uname @friend %></p>
5
+ </div>
6
+ <div class="show-box-right">
7
+ <% remote_form_for @friendship,:url=>friendships_path do |f| %>
8
+ <%= f.hidden_field :friend_id %>
9
+ <p>
10
+ <label>附言</label>
11
+ <%= f.text_area :note %>
12
+ </p>
13
+
14
+ <p>
15
+ <label>&nbsp;</label>
16
+ <%= submit_tag '提交' %>
17
+ </p>
18
+
19
+ <% end %>
20
+ </div>
21
+ </div>
22
+
File without changes
@@ -0,0 +1,8 @@
1
+ <!--
2
+ <%= message.inspect %>
3
+ -->
4
+ <tr id="<%= dom_id message %>">
5
+ <td><%= message.sender.uname %></td>
6
+ <td><%= message.subject %></td>
7
+ <td><%= format_time message.created_at %></td>
8
+ </tr>
@@ -0,0 +1,20 @@
1
+ <table class="lister messages fcid-messages">
2
+ <thead>
3
+ <tr>
4
+ <td>发送人</td>
5
+ <td>主题</td>
6
+ <td>时间</td>
7
+ </tr>
8
+ </thead>
9
+ <tbody>
10
+ <%= render :partial=>"message_tr",:collection=>@messages,:as=>:message %>
11
+ </tbody>
12
+ <tfoot>
13
+ <tr>
14
+ <td colspan="4">
15
+ <%# will_paginate @messages %>
16
+ </td>
17
+ </tr>
18
+ </tfoot>
19
+ </table>
20
+
@@ -0,0 +1,30 @@
1
+ <%= error_messages_for :user %>
2
+ <div class="box">
3
+ <h2>注册新用户</h2>
4
+ <% form_for @user,:url=>fcid_path do |f| %>
5
+ <p>
6
+ <label>用户名</label>
7
+ <%= f.text_field :username %>
8
+ </p>
9
+
10
+ <p>
11
+ <label>邮件地址</label>
12
+ <%= f.text_field :email %>
13
+ </p>
14
+
15
+ <p>
16
+ <label>密码</label>
17
+ <%= f.password_field :password %>
18
+ </p>
19
+
20
+ <p>
21
+ <label>再次输入密码</label>
22
+ <%= f.password_field :password_confirmation %>
23
+ </p>
24
+
25
+ <p class="clear">
26
+ <label>&nbsp;</label>
27
+ <%= submit_tag ' 注册用户 ' %>
28
+ </p>
29
+ <% end %>
30
+ </div>
@@ -0,0 +1,40 @@
1
+ <ul class="breadcrumb">
2
+ <li><%= link_to AS['site.name'],root_path %> <span class="diver">/</span></li>
3
+ <li>用户登录</li>
4
+ </ul>
5
+ <%= form_tag fcid_session_path ,:class =>"form-horizontal" do %>
6
+ <fieldset>
7
+ <legend>用户登录</legend>
8
+ <div class="control-group">
9
+ <label class="control-label">用户</label>
10
+ <div class="controls"><%= text_field_tag "username_or_email" %></div>
11
+ </div>
12
+
13
+ <div class="control-group">
14
+ <label>密码</label>
15
+ <div class="controls"><%= password_field_tag "password" %></div>
16
+ </div>
17
+
18
+ <div class="control-group">
19
+ <label>&nbsp;</label>
20
+ <div class="controls">
21
+ <%= submit_tag "登录",:class => "btn primary", :onclick => "form.submit();this.disabled = true;" %>
22
+ <%= link_to "注册",new_fcid_user_path %>
23
+ <%= link_to "找回密码","http://#{Fcid.host}/users/recover" %>
24
+ <%= link_to "重发邮件","http://#{Fcid.host}/users/recover" %>
25
+ <br /> <br />
26
+ <%= link_to_function "使用OAuth方式登录","window.open('#{oauth_fcid_session_path}','fcid-oauth','width=400,height=300')",:class => "btn"%>
27
+ </div>
28
+ </div>
29
+
30
+ <div class="control-group">
31
+ <label>&nbsp;</label>
32
+ <div class="controls">
33
+ <%= render :partial=>"fcid/announce" %>
34
+ </div>
35
+ </div>
36
+
37
+ </fieldset>
38
+
39
+ <% end %>
40
+
@@ -0,0 +1,3 @@
1
+ <% form_remote_tag :url=>passport_path do %>
2
+ <%= render :partial=>"form" %>
3
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <div class="box">
2
+ <h2>注册成功</h2>
3
+ <p>
4
+ <div class="empty">恭喜你成为本站注册会员,请您去您的信箱 <%= link_to(@user.email,"http://www.#{@user.email.split("@").last}") %> 收取激活邮件完成本次注册。</div>
5
+ </p>
6
+ </div>
@@ -0,0 +1,33 @@
1
+ <%= error_messages_for :user %>
2
+ <div class="box">
3
+ <h3>注册新用户</h3>
4
+ <div>
5
+ <% form_for @user,:url=>fcid_users_path do |f| %>
6
+ <div>
7
+ <label>用户名</label>
8
+ <div><%= f.text_field :username %></div>
9
+ </div>
10
+
11
+ <div>
12
+ <label>邮件地址</label>
13
+ <div><%= f.text_field :email %></div>
14
+ </div>
15
+
16
+ <div>
17
+ <label>密码</label>
18
+ <div><%= f.password_field :password %></div>
19
+ </div>
20
+
21
+ <div>
22
+ <label>再次输入密码</label>
23
+ <div><%= f.password_field :password_confirmation %></div>
24
+ </div>
25
+
26
+ <div class="whole-line">
27
+ <%= submit_tag ' 注册用户 ' %>
28
+ </div>
29
+ <% end %>
30
+ </div>
31
+ </div>
32
+
33
+ <%= render :partial=>"fcid/announce" %>
@@ -0,0 +1,22 @@
1
+ <div class="show-box clear">
2
+ <div class="show-box-left">
3
+ <p><%= avatar @friend %></p>
4
+ <p><%= uname @friend %></p>
5
+ </div>
6
+ <div class="show-box-right">
7
+ <% remote_form_for @friendship,:url=>friendships_path do |f| %>
8
+ <%= f.hidden_field :friend_id %>
9
+ <p>
10
+ <label>附言</label>
11
+ <%= f.text_area :note %>
12
+ </p>
13
+
14
+ <p>
15
+ <label>&nbsp;</label>
16
+ <%= submit_tag '提交' %>
17
+ </p>
18
+
19
+ <% end %>
20
+ </div>
21
+ </div>
22
+
@@ -0,0 +1,20 @@
1
+ <% form_tag session_path do %>
2
+ <p>
3
+ <label>用户</label>
4
+ <%= text_field_tag "username_or_email" %>
5
+ </p>
6
+
7
+ <p>
8
+ <label>密码</label>
9
+ <%= password_field_tag "password" %>
10
+ </p>
11
+
12
+ <p>
13
+ <label>&nbsp;</label>
14
+ <%= submit_tag "登录" %>
15
+ <%= link_to "注册",new_fcid_path %>
16
+ <%= link_to "找回密码","http://#{Fcid.host}/users/recover" %>
17
+ <%= link_to "重发邮件","http://#{Fcid.host}/users/recover" %>
18
+ </p>
19
+
20
+ <% end %>
data/config/routes.rb ADDED
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+
3
+ if Rails.version < "3"
4
+ ActionController::Routing::Routes.draw do |map|
5
+
6
+ map.namespace :fcid do |fcid|
7
+ fcid.resource :session,:controller=>"session"
8
+ fcid.resources :messages
9
+ fcid.resources :users
10
+ fcid.resources :friendships
11
+ fcid.resources :feeds
12
+ end
13
+
14
+ end
15
+ else
16
+
17
+ Rails.application.routes.draw do
18
+ namespace :fcid do
19
+ resource :session,:controller => "session" do
20
+ match :oauth
21
+ end
22
+ resources :messages
23
+ resources :users
24
+ resources :friendships
25
+ resources :feeds
26
+ end
27
+ end
28
+
29
+ end
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+ module Fcid
3
+ module ActiveResource
4
+ class InvalidApiKeyException < Exception
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+ module Fcid
3
+ module ActiveResource
4
+
5
+ module Base
6
+ module ExtraParams
7
+ def self.included(base)
8
+ base.class_eval do
9
+ @@extra_params = {}
10
+ class_inheritable_accessor :extra_params
11
+ self.extra_params = {}
12
+ extend ClassMethods
13
+ class << self
14
+ alias_method_chain :connection,:extra_params
15
+ end
16
+ end
17
+ end
18
+
19
+ module ClassMethods
20
+ def connection_with_extra_params(*args)
21
+ connection = connection_without_extra_params(*args)
22
+ connection.extra_params = extra_params
23
+ connection
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+
30
+ module Connection
31
+ module ExtraParams
32
+ def self.included(base)
33
+ base.class_eval do
34
+ include InstanceMethods
35
+ attr_accessor :extra_params
36
+ alias_method_chain :request,:extra_params
37
+ alias_method_chain :initialize,:extra_params
38
+ end
39
+
40
+ end
41
+
42
+
43
+ module InstanceMethods
44
+
45
+ def initialize_with_extra_params(*args,&block)
46
+ @extra_params = {}
47
+ initialize_without_extra_params *args,&block
48
+ end
49
+
50
+ def request_with_extra_params(method, path, *arguments)
51
+ unless extra_params.empty?
52
+ if path =~ /\?/
53
+ path += "&" + @extra_params.to_param
54
+ else
55
+ path += "?" + @extra_params.to_param
56
+ end
57
+ end
58
+ Rails.logger.debug "request url: #{path}"
59
+ request_without_extra_params(method,path,*arguments)
60
+ end
61
+ end
62
+
63
+ end
64
+ end
65
+ end
66
+ end