Adding doorkeeper, adding a REST API
POST /api/statuses Params: status (text contents), in_reply_to_id (optional) GET /api/statuses/:id POST /api/statuses/:id/reblog GET /api/accounts/:id GET /api/accounts/:id/following GET /api/accounts/:id/followers POST /api/accounts/:id/follow POST /api/accounts/:id/unfollow POST /api/follows Params: uri (e.g. user@domain) OAuth authentication is currently disabled, but the API can be used with HTTP Auth.
This commit is contained in:
parent
3824c58853
commit
ab6696e855
54 changed files with 847 additions and 61 deletions
|
@ -3,7 +3,6 @@ class AccountsController < ApplicationController
|
|||
|
||||
before_action :set_account
|
||||
before_action :set_webfinger_header
|
||||
before_action :authenticate_user!, only: [:follow, :unfollow]
|
||||
|
||||
def show
|
||||
@statuses = @account.statuses.order('id desc').includes(thread: [:account], reblog: [:account], stream_entry: [])
|
||||
|
@ -14,16 +13,6 @@ class AccountsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def follow
|
||||
current_user.account.follow!(@account)
|
||||
redirect_to root_path
|
||||
end
|
||||
|
||||
def unfollow
|
||||
current_user.account.unfollow!(@account)
|
||||
redirect_to root_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_account
|
||||
|
|
36
app/controllers/api/accounts_controller.rb
Normal file
36
app/controllers/api/accounts_controller.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
class Api::AccountsController < ApiController
|
||||
before_action :set_account
|
||||
before_action :authenticate_user!
|
||||
respond_to :json
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def following
|
||||
@following = @account.following
|
||||
end
|
||||
|
||||
def followers
|
||||
@followers = @account.followers
|
||||
end
|
||||
|
||||
def statuses
|
||||
@statuses = @account.statuses
|
||||
end
|
||||
|
||||
def follow
|
||||
@follow = current_user.account.follow!(@account)
|
||||
render action: :show
|
||||
end
|
||||
|
||||
def unfollow
|
||||
@unfollow = current_user.account.unfollow!(@account)
|
||||
render action: :show
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_account
|
||||
@account = Account.find(params[:id])
|
||||
end
|
||||
end
|
9
app/controllers/api/follows_controller.rb
Normal file
9
app/controllers/api/follows_controller.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
class Api::FollowsController < ApiController
|
||||
before_action :authenticate_user!
|
||||
respond_to :json
|
||||
|
||||
def create
|
||||
@follow = FollowService.new.(current_user.account, params[:uri])
|
||||
render action: :show
|
||||
end
|
||||
end
|
18
app/controllers/api/statuses_controller.rb
Normal file
18
app/controllers/api/statuses_controller.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
class Api::StatusesController < ApiController
|
||||
before_action :authenticate_user!
|
||||
respond_to :json
|
||||
|
||||
def show
|
||||
@status = Status.find(params[:id])
|
||||
end
|
||||
|
||||
def create
|
||||
@status = PostStatusService.new.(current_user.account, params[:status], params[:in_reply_to_id].blank? ? nil : Status.find(params[:in_reply_to_id]))
|
||||
render action: :show
|
||||
end
|
||||
|
||||
def reblog
|
||||
@status = ReblogService.new.(current_user.account, Status.find(params[:id]))
|
||||
render action: :show
|
||||
end
|
||||
end
|
|
@ -1,3 +1,13 @@
|
|||
class ApiController < ApplicationController
|
||||
protect_from_forgery with: :null_session
|
||||
|
||||
protected
|
||||
|
||||
def current_resource_owner
|
||||
User.find(doorkeeper_token.user_id) if doorkeeper_token
|
||||
end
|
||||
|
||||
def current_user
|
||||
super || current_resource_owner
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,8 +3,6 @@ class StreamEntriesController < ApplicationController
|
|||
|
||||
before_action :set_account
|
||||
before_action :set_stream_entry
|
||||
before_action :authenticate_user!, only: [:reblog, :favourite]
|
||||
before_action :only_statuses!, only: [:reblog, :favourite]
|
||||
|
||||
def show
|
||||
@type = @stream_entry.activity_type.downcase
|
||||
|
@ -15,16 +13,6 @@ class StreamEntriesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def reblog
|
||||
ReblogService.new.(current_user.account, @stream_entry.activity)
|
||||
redirect_to root_path
|
||||
end
|
||||
|
||||
def favourite
|
||||
FavouriteService.new.(current_user.account, @stream_entry.activity)
|
||||
redirect_to root_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_account
|
||||
|
@ -34,8 +22,4 @@ class StreamEntriesController < ApplicationController
|
|||
def set_stream_entry
|
||||
@stream_entry = @account.stream_entries.find(params[:id])
|
||||
end
|
||||
|
||||
def only_statuses!
|
||||
redirect_to root_url unless @stream_entry.activity_type == 'Status'
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue