From 4f9b7432dd4d323ac6cc4efceeae2efaffe62e7d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Sep 2016 16:58:23 +0200 Subject: [PATCH] Fix #52 - Add API versioning (v1) --- .../components/actions/accounts.jsx | 10 ++-- .../components/actions/compose.jsx | 4 +- .../javascripts/components/actions/follow.jsx | 2 +- .../components/actions/interactions.jsx | 8 +-- .../components/actions/statuses.jsx | 2 +- .../components/actions/timelines.jsx | 4 +- .../api/{ => v1}/accounts_controller.rb | 2 +- .../api/{ => v1}/apps_controller.rb | 2 +- .../api/{ => v1}/follows_controller.rb | 2 +- .../api/{ => v1}/media_controller.rb | 2 +- .../api/{ => v1}/statuses_controller.rb | 2 +- app/helpers/api/accounts_helper.rb | 2 - app/helpers/api/apps_helper.rb | 2 - app/helpers/api/follows_helper.rb | 2 - app/helpers/api/media_helper.rb | 2 - app/helpers/api/salmon_helper.rb | 2 - app/helpers/api/statuses_helper.rb | 2 - app/helpers/api/subscriptions_helper.rb | 2 - app/helpers/home_helper.rb | 6 +- app/lib/feed_manager.rb | 2 +- app/views/api/accounts/followers.rabl | 2 - app/views/api/accounts/following.rabl | 2 - app/views/api/accounts/relationships.rabl | 2 - app/views/api/accounts/statuses.rabl | 2 - app/views/api/follows/show.rabl | 2 - app/views/api/statuses/home.rabl | 2 - app/views/api/statuses/mentions.rabl | 2 - app/views/api/v1/accounts/followers.rabl | 2 + app/views/api/v1/accounts/following.rabl | 2 + .../api/{ => v1}/accounts/relationship.rabl | 0 app/views/api/v1/accounts/relationships.rabl | 2 + app/views/api/{ => v1}/accounts/show.rabl | 0 app/views/api/v1/accounts/statuses.rabl | 2 + app/views/api/{ => v1}/apps/create.rabl | 0 app/views/api/v1/follows/show.rabl | 2 + app/views/api/{ => v1}/media/create.rabl | 0 app/views/api/{ => v1}/statuses/context.rabl | 4 +- app/views/api/v1/statuses/home.rabl | 2 + app/views/api/v1/statuses/mentions.rabl | 2 + app/views/api/{ => v1}/statuses/show.rabl | 4 +- config/routes.rb | 58 ++++++++++--------- .../api/{ => v1}/accounts_controller_spec.rb | 2 +- .../api/{ => v1}/apps_controller_spec.rb | 2 +- .../api/{ => v1}/follows_controller_spec.rb | 2 +- .../api/{ => v1}/media_controller_spec.rb | 2 +- .../api/{ => v1}/statuses_controller_spec.rb | 2 +- spec/helpers/api/accounts_helper_spec.rb | 5 -- spec/helpers/api/apps_helper_spec.rb | 15 ----- spec/helpers/api/follows_helper_spec.rb | 5 -- spec/helpers/api/media_helper_spec.rb | 5 -- spec/helpers/api/salmon_helper_spec.rb | 5 -- spec/helpers/api/statuses_helper_spec.rb | 5 -- spec/helpers/api/subscriptions_helper_spec.rb | 5 -- 53 files changed, 77 insertions(+), 134 deletions(-) rename app/controllers/api/{ => v1}/accounts_controller.rb (96%) rename app/controllers/api/{ => v1}/apps_controller.rb (76%) rename app/controllers/api/{ => v1}/follows_controller.rb (85%) rename app/controllers/api/{ => v1}/media_controller.rb (78%) rename app/controllers/api/{ => v1}/statuses_controller.rb (96%) delete mode 100644 app/helpers/api/accounts_helper.rb delete mode 100644 app/helpers/api/apps_helper.rb delete mode 100644 app/helpers/api/follows_helper.rb delete mode 100644 app/helpers/api/media_helper.rb delete mode 100644 app/helpers/api/salmon_helper.rb delete mode 100644 app/helpers/api/statuses_helper.rb delete mode 100644 app/helpers/api/subscriptions_helper.rb delete mode 100644 app/views/api/accounts/followers.rabl delete mode 100644 app/views/api/accounts/following.rabl delete mode 100644 app/views/api/accounts/relationships.rabl delete mode 100644 app/views/api/accounts/statuses.rabl delete mode 100644 app/views/api/follows/show.rabl delete mode 100644 app/views/api/statuses/home.rabl delete mode 100644 app/views/api/statuses/mentions.rabl create mode 100644 app/views/api/v1/accounts/followers.rabl create mode 100644 app/views/api/v1/accounts/following.rabl rename app/views/api/{ => v1}/accounts/relationship.rabl (100%) create mode 100644 app/views/api/v1/accounts/relationships.rabl rename app/views/api/{ => v1}/accounts/show.rabl (100%) create mode 100644 app/views/api/v1/accounts/statuses.rabl rename app/views/api/{ => v1}/apps/create.rabl (100%) create mode 100644 app/views/api/v1/follows/show.rabl rename app/views/api/{ => v1}/media/create.rabl (100%) rename app/views/api/{ => v1}/statuses/context.rabl (56%) create mode 100644 app/views/api/v1/statuses/home.rabl create mode 100644 app/views/api/v1/statuses/mentions.rabl rename app/views/api/{ => v1}/statuses/show.rabl (93%) rename spec/controllers/api/{ => v1}/accounts_controller_spec.rb (98%) rename spec/controllers/api/{ => v1}/apps_controller_spec.rb (90%) rename spec/controllers/api/{ => v1}/follows_controller_spec.rb (97%) rename spec/controllers/api/{ => v1}/media_controller_spec.rb (96%) rename spec/controllers/api/{ => v1}/statuses_controller_spec.rb (98%) delete mode 100644 spec/helpers/api/accounts_helper_spec.rb delete mode 100644 spec/helpers/api/apps_helper_spec.rb delete mode 100644 spec/helpers/api/follows_helper_spec.rb delete mode 100644 spec/helpers/api/media_helper_spec.rb delete mode 100644 spec/helpers/api/salmon_helper_spec.rb delete mode 100644 spec/helpers/api/statuses_helper_spec.rb delete mode 100644 spec/helpers/api/subscriptions_helper_spec.rb diff --git a/app/assets/javascripts/components/actions/accounts.jsx b/app/assets/javascripts/components/actions/accounts.jsx index b4183bbee..c4aa2d80c 100644 --- a/app/assets/javascripts/components/actions/accounts.jsx +++ b/app/assets/javascripts/components/actions/accounts.jsx @@ -36,7 +36,7 @@ export function fetchAccount(id) { 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)); @@ -48,7 +48,7 @@ export function fetchAccountTimeline(id) { 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)); @@ -62,7 +62,7 @@ export function expandAccountTimeline(id) { 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)); @@ -97,7 +97,7 @@ export function followAccount(id) { 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)); @@ -109,7 +109,7 @@ export function unfollowAccount(id) { 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)); diff --git a/app/assets/javascripts/components/actions/compose.jsx b/app/assets/javascripts/components/actions/compose.jsx index b4d0b06a2..402c59dc6 100644 --- a/app/assets/javascripts/components/actions/compose.jsx +++ b/app/assets/javascripts/components/actions/compose.jsx @@ -36,7 +36,7 @@ export function submitCompose() { 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')) @@ -75,7 +75,7 @@ export function uploadCompose(files) { 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)); } diff --git a/app/assets/javascripts/components/actions/follow.jsx b/app/assets/javascripts/components/actions/follow.jsx index f747a3190..8eb440789 100644 --- a/app/assets/javascripts/components/actions/follow.jsx +++ b/app/assets/javascripts/components/actions/follow.jsx @@ -16,7 +16,7 @@ export function submitFollow(router) { 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)); diff --git a/app/assets/javascripts/components/actions/interactions.jsx b/app/assets/javascripts/components/actions/interactions.jsx index 3b3e2a6b6..8ce0c7561 100644 --- a/app/assets/javascripts/components/actions/interactions.jsx +++ b/app/assets/javascripts/components/actions/interactions.jsx @@ -12,7 +12,7 @@ export function reblog(status) { 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)); @@ -24,7 +24,7 @@ export function reblog(status) { 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 => { // @@ -59,7 +59,7 @@ export function favourite(status) { 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)); @@ -69,7 +69,7 @@ export function favourite(status) { 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 => { // diff --git a/app/assets/javascripts/components/actions/statuses.jsx b/app/assets/javascripts/components/actions/statuses.jsx index 1dcf300c4..9b757fceb 100644 --- a/app/assets/javascripts/components/actions/statuses.jsx +++ b/app/assets/javascripts/components/actions/statuses.jsx @@ -18,7 +18,7 @@ export function fetchStatus(id) { 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)); diff --git a/app/assets/javascripts/components/actions/timelines.jsx b/app/assets/javascripts/components/actions/timelines.jsx index 8a05c37fd..f92f758f5 100644 --- a/app/assets/javascripts/components/actions/timelines.jsx +++ b/app/assets/javascripts/components/actions/timelines.jsx @@ -45,7 +45,7 @@ export function refreshTimeline(timeline) { 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)); @@ -67,7 +67,7 @@ export function expandTimeline(timeline) { 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)); diff --git a/app/controllers/api/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb similarity index 96% rename from app/controllers/api/accounts_controller.rb rename to app/controllers/api/v1/accounts_controller.rb index 490c28e75..23f48782f 100644 --- a/app/controllers/api/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -1,4 +1,4 @@ -class Api::AccountsController < ApiController +class Api::V1::AccountsController < ApiController before_action :doorkeeper_authorize! before_action :set_account respond_to :json diff --git a/app/controllers/api/apps_controller.rb b/app/controllers/api/v1/apps_controller.rb similarity index 76% rename from app/controllers/api/apps_controller.rb rename to app/controllers/api/v1/apps_controller.rb index 629cb2416..f7a5e0b0a 100644 --- a/app/controllers/api/apps_controller.rb +++ b/app/controllers/api/v1/apps_controller.rb @@ -1,4 +1,4 @@ -class Api::AppsController < ApplicationController +class Api::V1::AppsController < ApplicationController respond_to :json def create diff --git a/app/controllers/api/follows_controller.rb b/app/controllers/api/v1/follows_controller.rb similarity index 85% rename from app/controllers/api/follows_controller.rb rename to app/controllers/api/v1/follows_controller.rb index dbd44cc54..de006f671 100644 --- a/app/controllers/api/follows_controller.rb +++ b/app/controllers/api/v1/follows_controller.rb @@ -1,4 +1,4 @@ -class Api::FollowsController < ApiController +class Api::V1::FollowsController < ApiController before_action :doorkeeper_authorize! respond_to :json diff --git a/app/controllers/api/media_controller.rb b/app/controllers/api/v1/media_controller.rb similarity index 78% rename from app/controllers/api/media_controller.rb rename to app/controllers/api/v1/media_controller.rb index d5a0a124a..4896534ad 100644 --- a/app/controllers/api/media_controller.rb +++ b/app/controllers/api/v1/media_controller.rb @@ -1,4 +1,4 @@ -class Api::MediaController < ApiController +class Api::V1::MediaController < ApiController before_action :doorkeeper_authorize! respond_to :json diff --git a/app/controllers/api/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb similarity index 96% rename from app/controllers/api/statuses_controller.rb rename to app/controllers/api/v1/statuses_controller.rb index 44fb40bae..4196852f2 100644 --- a/app/controllers/api/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -1,4 +1,4 @@ -class Api::StatusesController < ApiController +class Api::V1::StatusesController < ApiController before_action :doorkeeper_authorize! respond_to :json diff --git a/app/helpers/api/accounts_helper.rb b/app/helpers/api/accounts_helper.rb deleted file mode 100644 index d9a54c7bc..000000000 --- a/app/helpers/api/accounts_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Api::AccountsHelper -end diff --git a/app/helpers/api/apps_helper.rb b/app/helpers/api/apps_helper.rb deleted file mode 100644 index f6b0c6635..000000000 --- a/app/helpers/api/apps_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Api::AppsHelper -end diff --git a/app/helpers/api/follows_helper.rb b/app/helpers/api/follows_helper.rb deleted file mode 100644 index d8022d93c..000000000 --- a/app/helpers/api/follows_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Api::FollowsHelper -end diff --git a/app/helpers/api/media_helper.rb b/app/helpers/api/media_helper.rb deleted file mode 100644 index ecaa91e7b..000000000 --- a/app/helpers/api/media_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Api::MediaHelper -end diff --git a/app/helpers/api/salmon_helper.rb b/app/helpers/api/salmon_helper.rb deleted file mode 100644 index 513c6fb7d..000000000 --- a/app/helpers/api/salmon_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Api::SalmonHelper -end diff --git a/app/helpers/api/statuses_helper.rb b/app/helpers/api/statuses_helper.rb deleted file mode 100644 index 3187f3e3b..000000000 --- a/app/helpers/api/statuses_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Api::StatusesHelper -end diff --git a/app/helpers/api/subscriptions_helper.rb b/app/helpers/api/subscriptions_helper.rb deleted file mode 100644 index 3796aee42..000000000 --- a/app/helpers/api/subscriptions_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Api::SubscriptionsHelper -end diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb index d08264e1e..61a4b4dd8 100644 --- a/app/helpers/home_helper.rb +++ b/app/helpers/home_helper.rb @@ -3,11 +3,11 @@ module HomeHelper { 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 diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 8e141eb41..c6ba96771 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -54,6 +54,6 @@ class FeedManager 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 diff --git a/app/views/api/accounts/followers.rabl b/app/views/api/accounts/followers.rabl deleted file mode 100644 index 9bb0d9c8f..000000000 --- a/app/views/api/accounts/followers.rabl +++ /dev/null @@ -1,2 +0,0 @@ -collection @followers -extends('api/accounts/show') diff --git a/app/views/api/accounts/following.rabl b/app/views/api/accounts/following.rabl deleted file mode 100644 index 9f2155293..000000000 --- a/app/views/api/accounts/following.rabl +++ /dev/null @@ -1,2 +0,0 @@ -collection @following -extends('api/accounts/show') diff --git a/app/views/api/accounts/relationships.rabl b/app/views/api/accounts/relationships.rabl deleted file mode 100644 index 16fdc40d9..000000000 --- a/app/views/api/accounts/relationships.rabl +++ /dev/null @@ -1,2 +0,0 @@ -collection @accounts -extends 'api/accounts/relationship' diff --git a/app/views/api/accounts/statuses.rabl b/app/views/api/accounts/statuses.rabl deleted file mode 100644 index 12f00dd21..000000000 --- a/app/views/api/accounts/statuses.rabl +++ /dev/null @@ -1,2 +0,0 @@ -collection @statuses -extends('api/statuses/show') diff --git a/app/views/api/follows/show.rabl b/app/views/api/follows/show.rabl deleted file mode 100644 index 0f24ddb4d..000000000 --- a/app/views/api/follows/show.rabl +++ /dev/null @@ -1,2 +0,0 @@ -object @account -extends('api/accounts/show') diff --git a/app/views/api/statuses/home.rabl b/app/views/api/statuses/home.rabl deleted file mode 100644 index 12f00dd21..000000000 --- a/app/views/api/statuses/home.rabl +++ /dev/null @@ -1,2 +0,0 @@ -collection @statuses -extends('api/statuses/show') diff --git a/app/views/api/statuses/mentions.rabl b/app/views/api/statuses/mentions.rabl deleted file mode 100644 index 12f00dd21..000000000 --- a/app/views/api/statuses/mentions.rabl +++ /dev/null @@ -1,2 +0,0 @@ -collection @statuses -extends('api/statuses/show') diff --git a/app/views/api/v1/accounts/followers.rabl b/app/views/api/v1/accounts/followers.rabl new file mode 100644 index 000000000..c54b0487e --- /dev/null +++ b/app/views/api/v1/accounts/followers.rabl @@ -0,0 +1,2 @@ +collection @followers +extends('api/v1/accounts/show') diff --git a/app/views/api/v1/accounts/following.rabl b/app/views/api/v1/accounts/following.rabl new file mode 100644 index 000000000..87b454ffa --- /dev/null +++ b/app/views/api/v1/accounts/following.rabl @@ -0,0 +1,2 @@ +collection @following +extends('api/v1/accounts/show') diff --git a/app/views/api/accounts/relationship.rabl b/app/views/api/v1/accounts/relationship.rabl similarity index 100% rename from app/views/api/accounts/relationship.rabl rename to app/views/api/v1/accounts/relationship.rabl diff --git a/app/views/api/v1/accounts/relationships.rabl b/app/views/api/v1/accounts/relationships.rabl new file mode 100644 index 000000000..022ea2ac4 --- /dev/null +++ b/app/views/api/v1/accounts/relationships.rabl @@ -0,0 +1,2 @@ +collection @accounts +extends 'api/v1/accounts/relationship' diff --git a/app/views/api/accounts/show.rabl b/app/views/api/v1/accounts/show.rabl similarity index 100% rename from app/views/api/accounts/show.rabl rename to app/views/api/v1/accounts/show.rabl diff --git a/app/views/api/v1/accounts/statuses.rabl b/app/views/api/v1/accounts/statuses.rabl new file mode 100644 index 000000000..0a0ed13c5 --- /dev/null +++ b/app/views/api/v1/accounts/statuses.rabl @@ -0,0 +1,2 @@ +collection @statuses +extends('api/v1/statuses/show') diff --git a/app/views/api/apps/create.rabl b/app/views/api/v1/apps/create.rabl similarity index 100% rename from app/views/api/apps/create.rabl rename to app/views/api/v1/apps/create.rabl diff --git a/app/views/api/v1/follows/show.rabl b/app/views/api/v1/follows/show.rabl new file mode 100644 index 000000000..e07106164 --- /dev/null +++ b/app/views/api/v1/follows/show.rabl @@ -0,0 +1,2 @@ +object @account +extends('api/v1/accounts/show') diff --git a/app/views/api/media/create.rabl b/app/views/api/v1/media/create.rabl similarity index 100% rename from app/views/api/media/create.rabl rename to app/views/api/v1/media/create.rabl diff --git a/app/views/api/statuses/context.rabl b/app/views/api/v1/statuses/context.rabl similarity index 56% rename from app/views/api/statuses/context.rabl rename to app/views/api/v1/statuses/context.rabl index 71aff690d..e9176dc29 100644 --- a/app/views/api/statuses/context.rabl +++ b/app/views/api/v1/statuses/context.rabl @@ -2,12 +2,12 @@ object false 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 diff --git a/app/views/api/v1/statuses/home.rabl b/app/views/api/v1/statuses/home.rabl new file mode 100644 index 000000000..0a0ed13c5 --- /dev/null +++ b/app/views/api/v1/statuses/home.rabl @@ -0,0 +1,2 @@ +collection @statuses +extends('api/v1/statuses/show') diff --git a/app/views/api/v1/statuses/mentions.rabl b/app/views/api/v1/statuses/mentions.rabl new file mode 100644 index 000000000..0a0ed13c5 --- /dev/null +++ b/app/views/api/v1/statuses/mentions.rabl @@ -0,0 +1,2 @@ +collection @statuses +extends('api/v1/statuses/show') diff --git a/app/views/api/statuses/show.rabl b/app/views/api/v1/statuses/show.rabl similarity index 93% rename from app/views/api/statuses/show.rabl rename to app/views/api/v1/statuses/show.rabl index f06aa6e74..3595bafb4 100644 --- a/app/views/api/statuses/show.rabl +++ b/app/views/api/v1/statuses/show.rabl @@ -10,11 +10,11 @@ node(:favourited) { |status| current_account.favourited?(status) } 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 diff --git a/config/routes.rb b/config/routes.rb index 737dbbecf..f95ac2ab7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -39,38 +39,40 @@ Rails.application.routes.draw 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 + resources :follows, only: [:create] + resources :media, only: [:create] + resources :apps, only: [:create] + + resources :accounts, only: [:show] do + collection do + get :relationships + end - post :reblog - post :unreblog - post :favourite - post :unfavourite - end - end + member do + get :statuses + get :followers + get :following - 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 + post :follow + post :unfollow + end end end end diff --git a/spec/controllers/api/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb similarity index 98% rename from spec/controllers/api/accounts_controller_spec.rb rename to spec/controllers/api/v1/accounts_controller_spec.rb index 7fef8b9fe..bc7c78c70 100644 --- a/spec/controllers/api/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -1,6 +1,6 @@ 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')) } diff --git a/spec/controllers/api/apps_controller_spec.rb b/spec/controllers/api/v1/apps_controller_spec.rb similarity index 90% rename from spec/controllers/api/apps_controller_spec.rb rename to spec/controllers/api/v1/apps_controller_spec.rb index ebadddde2..20a0755ff 100644 --- a/spec/controllers/api/apps_controller_spec.rb +++ b/spec/controllers/api/v1/apps_controller_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -RSpec.describe Api::AppsController, type: :controller do +RSpec.describe Api::V1::AppsController, type: :controller do render_views describe 'POST #create' do diff --git a/spec/controllers/api/follows_controller_spec.rb b/spec/controllers/api/v1/follows_controller_spec.rb similarity index 97% rename from spec/controllers/api/follows_controller_spec.rb rename to spec/controllers/api/v1/follows_controller_spec.rb index f1775dfbc..1346141fa 100644 --- a/spec/controllers/api/follows_controller_spec.rb +++ b/spec/controllers/api/v1/follows_controller_spec.rb @@ -1,6 +1,6 @@ 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')) } diff --git a/spec/controllers/api/media_controller_spec.rb b/spec/controllers/api/v1/media_controller_spec.rb similarity index 96% rename from spec/controllers/api/media_controller_spec.rb rename to spec/controllers/api/v1/media_controller_spec.rb index e6c44cc9f..1b91354d4 100644 --- a/spec/controllers/api/media_controller_spec.rb +++ b/spec/controllers/api/v1/media_controller_spec.rb @@ -1,6 +1,6 @@ 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')) } diff --git a/spec/controllers/api/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb similarity index 98% rename from spec/controllers/api/statuses_controller_spec.rb rename to spec/controllers/api/v1/statuses_controller_spec.rb index b1f0a7bcc..7af54299a 100644 --- a/spec/controllers/api/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -1,6 +1,6 @@ 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')) } diff --git a/spec/helpers/api/accounts_helper_spec.rb b/spec/helpers/api/accounts_helper_spec.rb deleted file mode 100644 index 8880aaef4..000000000 --- a/spec/helpers/api/accounts_helper_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe Api::AccountsHelper, type: :helper do - -end diff --git a/spec/helpers/api/apps_helper_spec.rb b/spec/helpers/api/apps_helper_spec.rb deleted file mode 100644 index e26bca2cc..000000000 --- a/spec/helpers/api/apps_helper_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -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 diff --git a/spec/helpers/api/follows_helper_spec.rb b/spec/helpers/api/follows_helper_spec.rb deleted file mode 100644 index ecd9acc7a..000000000 --- a/spec/helpers/api/follows_helper_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe Api::FollowsHelper, type: :helper do - -end diff --git a/spec/helpers/api/media_helper_spec.rb b/spec/helpers/api/media_helper_spec.rb deleted file mode 100644 index 5eb2def2a..000000000 --- a/spec/helpers/api/media_helper_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe Api::MediaHelper, type: :helper do - -end diff --git a/spec/helpers/api/salmon_helper_spec.rb b/spec/helpers/api/salmon_helper_spec.rb deleted file mode 100644 index 23f1584df..000000000 --- a/spec/helpers/api/salmon_helper_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe Api::SalmonHelper, type: :helper do - -end diff --git a/spec/helpers/api/statuses_helper_spec.rb b/spec/helpers/api/statuses_helper_spec.rb deleted file mode 100644 index c1793fda5..000000000 --- a/spec/helpers/api/statuses_helper_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe Api::StatusesHelper, type: :helper do - -end diff --git a/spec/helpers/api/subscriptions_helper_spec.rb b/spec/helpers/api/subscriptions_helper_spec.rb deleted file mode 100644 index 9e6457c6f..000000000 --- a/spec/helpers/api/subscriptions_helper_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe Api::SubscriptionsHelper, type: :helper do - -end