mirror of
https://github.com/ENSL/ensl.org.git
synced 2025-05-07 15:51:08 +00:00
Added server api
This commit is contained in:
parent
ed3bf229c0
commit
03ef45225c
4 changed files with 104 additions and 54 deletions
21
app/controllers/api/v1/servers_controller.rb
Normal file
21
app/controllers/api/v1/servers_controller.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
class Api::V1::ServersController < Api::V1::BaseController
|
||||||
|
def index
|
||||||
|
render json: { servers: active_servers }
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def active_servers
|
||||||
|
Server.active.map do |s|
|
||||||
|
{
|
||||||
|
id: s.id,
|
||||||
|
description: s.description,
|
||||||
|
dns: s.dns,
|
||||||
|
ip: s.ip,
|
||||||
|
port: s.port,
|
||||||
|
password: s.password,
|
||||||
|
category_id: s.category_id
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -6,76 +6,77 @@ Ensl::Application.routes.draw do
|
||||||
namespace :api do
|
namespace :api do
|
||||||
namespace :v1 do
|
namespace :v1 do
|
||||||
resources :users, only: [:show, :index]
|
resources :users, only: [:show, :index]
|
||||||
|
resources :servers, only: [:index]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
root to: "articles#news_index"
|
root to: "articles#news_index"
|
||||||
|
|
||||||
resources :articles do
|
resources :articles do
|
||||||
resources :versions
|
resources :versions
|
||||||
end
|
end
|
||||||
|
|
||||||
match 'contests/del_map'
|
match 'contests/del_map'
|
||||||
match 'contests/scores'
|
match 'contests/scores'
|
||||||
match 'contests/historical', to: "contests#historical"
|
match 'contests/historical', to: "contests#historical"
|
||||||
|
|
||||||
resources :contests do
|
resources :contests do
|
||||||
get 'current', on: :collection
|
get 'current', on: :collection
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :log_events
|
resources :log_events
|
||||||
resources :categories
|
resources :categories
|
||||||
resources :options
|
resources :options
|
||||||
resources :polls
|
resources :polls
|
||||||
|
|
||||||
match 'comments/quote'
|
match 'comments/quote'
|
||||||
|
|
||||||
resources :comments
|
resources :comments
|
||||||
resources :shoutmsgs
|
resources :shoutmsgs
|
||||||
resources :teamers
|
resources :teamers
|
||||||
resources :teams
|
resources :teams
|
||||||
resources :gathers
|
resources :gathers
|
||||||
resources :gatherers
|
resources :gatherers
|
||||||
resources :groups
|
resources :groups
|
||||||
resources :groupers
|
resources :groupers
|
||||||
resources :forumers
|
resources :forumers
|
||||||
resources :topics
|
resources :topics
|
||||||
|
|
||||||
match 'forums/up'
|
match 'forums/up'
|
||||||
match 'forums/down'
|
match 'forums/down'
|
||||||
|
|
||||||
resources :forums
|
resources :forums
|
||||||
resources :users
|
resources :users
|
||||||
resources :locks
|
resources :locks
|
||||||
resources :contesters
|
resources :contesters
|
||||||
resources :contests
|
resources :contests
|
||||||
resources :challenges
|
resources :challenges
|
||||||
resources :servers
|
resources :servers
|
||||||
resources :predictions
|
resources :predictions
|
||||||
resources :rounds
|
resources :rounds
|
||||||
resources :matches do |m|
|
resources :matches do |m|
|
||||||
get :admin, to: "matches#admin", on: :collection
|
get :admin, to: "matches#admin", on: :collection
|
||||||
get :ref, to: "matches#ref"
|
get :ref, to: "matches#ref"
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :maps
|
resources :maps
|
||||||
resources :logs
|
resources :logs
|
||||||
resources :log_files
|
resources :log_files
|
||||||
resources :directories
|
resources :directories
|
||||||
resources :data_files
|
resources :data_files
|
||||||
resources :predictions
|
resources :predictions
|
||||||
resources :weeks
|
resources :weeks
|
||||||
resources :movies
|
resources :movies
|
||||||
resources :messages
|
resources :messages
|
||||||
resources :sites
|
resources :sites
|
||||||
resources :bans
|
resources :bans
|
||||||
resources :tweets
|
resources :tweets
|
||||||
resources :issues
|
resources :issues
|
||||||
|
|
||||||
match 'posts/quote'
|
match 'posts/quote'
|
||||||
|
|
||||||
resources :posts
|
resources :posts
|
||||||
resources :brackets
|
resources :brackets
|
||||||
|
|
||||||
match 'about/action'
|
match 'about/action'
|
||||||
match 'about/staff'
|
match 'about/staff'
|
||||||
|
@ -127,10 +128,10 @@ Ensl::Application.routes.draw do
|
||||||
|
|
||||||
match 'votes/create'
|
match 'votes/create'
|
||||||
|
|
||||||
match ':controller/:action', requirements: { action: /A-Za-z/ }
|
match ':controller/:action', requirements: { action: /A-Za-z/ }
|
||||||
match ':controller/:action/:id'
|
match ':controller/:action/:id'
|
||||||
match ':controller/:action/:id.:format'
|
match ':controller/:action/:id.:format'
|
||||||
match ':controller/:action/:id/:id2'
|
match ':controller/:action/:id/:id2'
|
||||||
|
|
||||||
match 'teamers/replace', to: 'teamers#replace', as: 'teamers_replace'
|
match 'teamers/replace', to: 'teamers#replace', as: 'teamers_replace'
|
||||||
end
|
end
|
||||||
|
|
20
spec/controllers/api/v1/servers_controller_spec.rb
Normal file
20
spec/controllers/api/v1/servers_controller_spec.rb
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Api::V1::ServersController do
|
||||||
|
before do
|
||||||
|
request.accept = 'application/json'
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#index' do
|
||||||
|
let!(:server) { create :server, :active }
|
||||||
|
let!(:inactive_server) { create :server, :inactive }
|
||||||
|
|
||||||
|
it 'returns a list of servers' do
|
||||||
|
get :index
|
||||||
|
expect(response).to be_success
|
||||||
|
expect(json['servers'].length).to eq(1)
|
||||||
|
json_server = json['servers'][0]
|
||||||
|
expect(json_server['id']).to eq(server.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,8 +1,16 @@
|
||||||
FactoryGirl.define do
|
FactoryGirl.define do
|
||||||
factory :server do
|
factory :server do
|
||||||
sequence(:name) { |n| "ServerName#{n}" }
|
sequence(:name) { |n| "ServerName#{n}" }
|
||||||
sequence(:dns) { |n| "DNS#{n}" }
|
sequence(:dns) { |n| "DNS#{n}" }
|
||||||
sequence(:ip) { |n| "192.168.#{n % 255}.#{n}" }
|
sequence(:ip) { |n| "192.168.#{n % 255}.#{n}" }
|
||||||
sequence(:port) { |n| "#{1000 + n}" }
|
sequence(:port) { |n| "#{1000 + n}" }
|
||||||
end
|
|
||||||
|
trait :active do
|
||||||
|
active true
|
||||||
|
end
|
||||||
|
|
||||||
|
trait :inactive do
|
||||||
|
active false
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
Loading…
Reference in a new issue