dispatch(fetchAccountRequest(id));
- axios.all([boundApi.get(`/api/accounts/${id}`), boundApi.get(`/api/accounts/relationships?id=${id}`)]).then(values => {
+ axios.all([boundApi.get(`/api/v1/accounts/${id}`), boundApi.get(`/api/v1/accounts/relationships?id=${id}`)]).then(values => {
dispatch(fetchAccountSuccess(values[0].data, values[1].data[0]));
}).catch(error => {
dispatch(fetchAccountFail(id, error));
return (dispatch, getState) => {
dispatch(fetchAccountTimelineRequest(id));
- api(getState).get(`/api/accounts/${id}/statuses`).then(response => {
+ api(getState).get(`/api/v1/accounts/${id}/statuses`).then(response => {
dispatch(fetchAccountTimelineSuccess(id, response.data));
}).catch(error => {
dispatch(fetchAccountTimelineFail(id, error));
dispatch(expandAccountTimelineRequest(id));
- api(getState).get(`/api/accounts/${id}/statuses?max_id=${lastId}`).then(response => {
+ api(getState).get(`/api/v1/accounts/${id}/statuses?max_id=${lastId}`).then(response => {
dispatch(expandAccountTimelineSuccess(id, response.data));
}).catch(error => {
dispatch(expandAccountTimelineFail(id, error));
return (dispatch, getState) => {
dispatch(followAccountRequest(id));
- api(getState).post(`/api/accounts/${id}/follow`).then(response => {
+ api(getState).post(`/api/v1/accounts/${id}/follow`).then(response => {
dispatch(followAccountSuccess(response.data));
}).catch(error => {
dispatch(followAccountFail(error));
return (dispatch, getState) => {
dispatch(unfollowAccountRequest(id));
- api(getState).post(`/api/accounts/${id}/unfollow`).then(response => {
+ api(getState).post(`/api/v1/accounts/${id}/unfollow`).then(response => {
dispatch(unfollowAccountSuccess(response.data));
}).catch(error => {
dispatch(unfollowAccountFail(error));
return function (dispatch, getState) {
dispatch(submitComposeRequest());
- api(getState).post('/api/statuses', {
+ api(getState).post('/api/v1/statuses', {
status: getState().getIn(['compose', 'text'], ''),
in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null),
media_ids: getState().getIn(['compose', 'media_attachments']).map(item => item.get('id'))
let data = new FormData();
data.append('file', files[0]);
- api(getState).post('/api/media', data, {
+ api(getState).post('/api/v1/media', data, {
onUploadProgress: function (e) {
dispatch(uploadComposeProgress(e.loaded, e.total));
}
return function (dispatch, getState) {
dispatch(submitFollowRequest());
- api(getState).post('/api/follows', {
+ api(getState).post('/api/v1/follows', {
uri: getState().getIn(['follow', 'text'])
}).then(function (response) {
dispatch(submitFollowSuccess(response.data));
return function (dispatch, getState) {
dispatch(reblogRequest(status));
- api(getState).post(`/api/statuses/${status.get('id')}/reblog`).then(function (response) {
+ api(getState).post(`/api/v1/statuses/${status.get('id')}/reblog`).then(function (response) {
// The reblog API method returns a new status wrapped around the original. In this case we are only
// interested in how the original is modified, hence passing it skipping the wrapper
dispatch(reblogSuccess(status, response.data.reblog));
export function unreblog(status) {
return (dispatch, getState) => {
- api(getState).post(`/api/statuses/${status.get('id')}/unreblog`).then(response => {
+ api(getState).post(`/api/v1/statuses/${status.get('id')}/unreblog`).then(response => {
//
}).catch(error => {
//
return function (dispatch, getState) {
dispatch(favouriteRequest(status));
- api(getState).post(`/api/statuses/${status.get('id')}/favourite`).then(function (response) {
+ api(getState).post(`/api/v1/statuses/${status.get('id')}/favourite`).then(function (response) {
dispatch(favouriteSuccess(status, response.data));
}).catch(function (error) {
dispatch(favouriteFail(status, error));
export function unfavourite(status) {
return (dispatch, getState) => {
- api(getState).post(`/api/statuses/${status.get('id')}/unfavourite`).then(response => {
+ api(getState).post(`/api/v1/statuses/${status.get('id')}/unfavourite`).then(response => {
//
}).catch(error => {
//
dispatch(fetchStatusRequest(id));
- axios.all([boundApi.get(`/api/statuses/${id}`), boundApi.get(`/api/statuses/${id}/context`)]).then(values => {
+ axios.all([boundApi.get(`/api/v1/statuses/${id}`), boundApi.get(`/api/v1/statuses/${id}/context`)]).then(values => {
dispatch(fetchStatusSuccess(values[0].data, values[1].data));
}).catch(error => {
dispatch(fetchStatusFail(id, error));
return function (dispatch, getState) {
dispatch(refreshTimelineRequest(timeline));
- api(getState).get(`/api/statuses/${timeline}`).then(function (response) {
+ api(getState).get(`/api/v1/statuses/${timeline}`).then(function (response) {
dispatch(refreshTimelineSuccess(timeline, response.data));
}).catch(function (error) {
dispatch(refreshTimelineFail(timeline, error));
dispatch(expandTimelineRequest(timeline));
- api(getState).get(`/api/statuses/${timeline}?max_id=${lastId}`).then(response => {
+ api(getState).get(`/api/v1/statuses/${timeline}?max_id=${lastId}`).then(response => {
dispatch(expandTimelineSuccess(timeline, response.data));
}).catch(error => {
dispatch(expandTimelineFail(timeline, error));
-class Api::AccountsController < ApiController
+class Api::V1::AccountsController < ApiController
before_action :doorkeeper_authorize!
before_action :set_account
respond_to :json
-class Api::AppsController < ApplicationController
+class Api::V1::AppsController < ApplicationController
respond_to :json
def create
-class Api::FollowsController < ApiController
+class Api::V1::FollowsController < ApiController
before_action :doorkeeper_authorize!
respond_to :json
-class Api::MediaController < ApiController
+class Api::V1::MediaController < ApiController
before_action :doorkeeper_authorize!
respond_to :json
-class Api::StatusesController < ApiController
+class Api::V1::StatusesController < ApiController
before_action :doorkeeper_authorize!
respond_to :json
+++ /dev/null
-module Api::AccountsHelper
-end
+++ /dev/null
-module Api::AppsHelper
-end
+++ /dev/null
-module Api::FollowsHelper
-end
+++ /dev/null
-module Api::MediaHelper
-end
+++ /dev/null
-module Api::SalmonHelper
-end
+++ /dev/null
-module Api::StatusesHelper
-end
+++ /dev/null
-module Api::SubscriptionsHelper
-end
{
token: @token,
- account: render(file: 'api/accounts/show', locals: { account: current_user.account }, formats: :json),
+ account: render(file: 'api/v1/accounts/show', locals: { account: current_user.account }, formats: :json),
timelines: {
- home: render(file: 'api/statuses/home', locals: { statuses: @home }, formats: :json),
- mentions: render(file: 'api/statuses/mentions', locals: { statuses: @mentions }, formats: :json)
+ home: render(file: 'api/v1/statuses/home', locals: { statuses: @home }, formats: :json),
+ mentions: render(file: 'api/v1/statuses/mentions', locals: { statuses: @mentions }, formats: :json)
}
}
end
end
end
- Rabl::Renderer.new('api/statuses/show', status, view_path: 'app/views', format: :json, scope: rabl_scope.new(target_account)).render
+ Rabl::Renderer.new('api/v1/statuses/show', status, view_path: 'app/views', format: :json, scope: rabl_scope.new(target_account)).render
end
end
+++ /dev/null
-collection @followers
-extends('api/accounts/show')
+++ /dev/null
-collection @following
-extends('api/accounts/show')
+++ /dev/null
-collection @accounts
-extends 'api/accounts/relationship'
+++ /dev/null
-collection @statuses
-extends('api/statuses/show')
+++ /dev/null
-object @account
-extends('api/accounts/show')
+++ /dev/null
-collection @statuses
-extends('api/statuses/show')
+++ /dev/null
-collection @statuses
-extends('api/statuses/show')
--- /dev/null
+collection @followers
+extends('api/v1/accounts/show')
--- /dev/null
+collection @following
+extends('api/v1/accounts/show')
--- /dev/null
+collection @accounts
+extends 'api/v1/accounts/relationship'
--- /dev/null
+collection @statuses
+extends('api/v1/statuses/show')
--- /dev/null
+object @account
+extends('api/v1/accounts/show')
node :ancestors do
@ancestors.map do |status|
- partial('api/statuses/show', object: status)
+ partial('api/v1/statuses/show', object: status)
end
end
node :descendants do
@descendants.map do |status|
- partial('api/statuses/show', object: status)
+ partial('api/v1/statuses/show', object: status)
end
end
--- /dev/null
+collection @statuses
+extends('api/v1/statuses/show')
--- /dev/null
+collection @statuses
+extends('api/v1/statuses/show')
node(:reblogged) { |status| current_account.reblogged?(status) }
child :reblog => :reblog do
- extends('api/statuses/show')
+ extends('api/v1/statuses/show')
end
child :account do
- extends('api/accounts/show')
+ extends('api/v1/accounts/show')
end
child :media_attachments, object_root: false do
post '/salmon/:id', to: 'salmon#update', as: :salmon
# JSON / REST API
- resources :statuses, only: [:create, :show, :destroy] do
- collection do
- get :home
- get :mentions
+ namespace :v1 do
+ resources :statuses, only: [:create, :show, :destroy] do
+ collection do
+ get :home
+ get :mentions
+ end
+
+ member do
+ get :context
+
+ post :reblog
+ post :unreblog
+ post :favourite
+ post :unfavourite
+ end
end
- member do
- get :context
-
- post :reblog
- post :unreblog
- post :favourite
- post :unfavourite
- end
- end
-
- resources :follows, only: [:create]
- resources :media, only: [:create]
- resources :apps, only: [:create]
-
- resources :accounts, only: [:show] do
- collection do
- get :relationships
- end
-
- member do
- get :statuses
- get :followers
- get :following
-
- post :follow
- post :unfollow
+ resources :follows, only: [:create]
+ resources :media, only: [:create]
+ resources :apps, only: [:create]
+
+ resources :accounts, only: [:show] do
+ collection do
+ get :relationships
+ end
+
+ member do
+ get :statuses
+ get :followers
+ get :following
+
+ post :follow
+ post :unfollow
+ end
end
end
end
require 'rails_helper'
-RSpec.describe Api::AccountsController, type: :controller do
+RSpec.describe Api::V1::AccountsController, type: :controller do
render_views
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
require 'rails_helper'
-RSpec.describe Api::AppsController, type: :controller do
+RSpec.describe Api::V1::AppsController, type: :controller do
render_views
describe 'POST #create' do
require 'rails_helper'
-RSpec.describe Api::FollowsController, type: :controller do
+RSpec.describe Api::V1::FollowsController, type: :controller do
render_views
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
require 'rails_helper'
-RSpec.describe Api::MediaController, type: :controller do
+RSpec.describe Api::V1::MediaController, type: :controller do
render_views
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
require 'rails_helper'
-RSpec.describe Api::StatusesController, type: :controller do
+RSpec.describe Api::V1::StatusesController, type: :controller do
render_views
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+++ /dev/null
-require 'rails_helper'
-
-RSpec.describe Api::AccountsHelper, type: :helper do
-
-end
+++ /dev/null
-require 'rails_helper'
-
-# Specs in this file have access to a helper object that includes
-# the Api::AppsHelper. For example:
-#
-# describe Api::AppsHelper do
-# describe "string concat" do
-# it "concats two strings with spaces" do
-# expect(helper.concat_strings("this","that")).to eq("this that")
-# end
-# end
-# end
-RSpec.describe Api::AppsHelper, type: :helper do
- pending "add some examples to (or delete) #{__FILE__}"
-end
+++ /dev/null
-require 'rails_helper'
-
-RSpec.describe Api::FollowsHelper, type: :helper do
-
-end
+++ /dev/null
-require 'rails_helper'
-
-RSpec.describe Api::MediaHelper, type: :helper do
-
-end
+++ /dev/null
-require 'rails_helper'
-
-RSpec.describe Api::SalmonHelper, type: :helper do
-
-end
+++ /dev/null
-require 'rails_helper'
-
-RSpec.describe Api::StatusesHelper, type: :helper do
-
-end
+++ /dev/null
-require 'rails_helper'
-
-RSpec.describe Api::SubscriptionsHelper, type: :helper do
-
-end