diff --git a/app/controllers/api/v1/teams_controller.rb b/app/controllers/api/v1/teams_controller.rb new file mode 100644 index 0000000..27479dc --- /dev/null +++ b/app/controllers/api/v1/teams_controller.rb @@ -0,0 +1,23 @@ +class Api::V1::TeamsController < Api::V1::BaseController + def index + render json: Api::V1::UsersCollection.as_json + end + + def show + @team = Team.find params[:id] + render json: { + id: @team.id, + name: @team.name, + logo: @team.logo, + members: @team.teamers.active.map do |m| + { + id: m.user.id, + username: m.user.username, + steamid: m.user.steamid + } + end + } + rescue ActiveRecord::RecordNotFound + raise ActionController::RoutingError.new("User Not Found") + end +end diff --git a/app/services/google_calendar.rb b/app/services/google_calendar.rb index 5996844..a965a12 100644 --- a/app/services/google_calendar.rb +++ b/app/services/google_calendar.rb @@ -39,7 +39,7 @@ end class GoogleCalendar class Request - BASE_URL = "https://www.googleapis.com/calendar/v3/calendars" + BASE_URL = "https://www.googleapis.com/" EVENTS_ENDPOINT = "events" def self.events_list(id, timezone_offset) @@ -61,7 +61,12 @@ class GoogleCalendar def get_data Rails.cache.fetch(cache_key, expires_in: 5.minutes) do - Faraday.get(request_url) + if Rails.env.development? + conn = Faraday.new(BASE_URL, ssl: {verify: false}) + else + conn = Faraday.new(BASE_URL) + end + conn.get(request_url) end end @@ -76,7 +81,7 @@ class GoogleCalendar #that is longer ago then 7 days. #Alternative: maxResults=2500 time_min = (Time.now - 7.days).utc.iso8601 - "#{BASE_URL}/#{@id}/#{@endpoint}/?key=#{ENV['GOOGLE_API_KEY']}&timeMin=#{time_min}" + "calendar/v3/calendars/#{@id}/#{@endpoint}/?key=#{ENV['GOOGLE_API_KEY']}&timeMin=#{time_min}" end end diff --git a/config/routes.rb b/config/routes.rb index 80f0f11..d1d98fb 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,6 +6,7 @@ Ensl::Application.routes.draw do namespace :api do namespace :v1 do resources :users, only: [:show, :index] + resources :teams, only: [:show] resources :servers, only: [:index] resources :maps, only: [:index] end diff --git a/spec/controllers/api/v1/teams_controller_spec.rb b/spec/controllers/api/v1/teams_controller_spec.rb new file mode 100644 index 0000000..2388787 --- /dev/null +++ b/spec/controllers/api/v1/teams_controller_spec.rb @@ -0,0 +1,35 @@ +require "spec_helper" + +describe Api::V1::TeamsController do + before do + request.accept = "application/json" + end + + describe "#show" do + before(:each) do + @founder = create :user + @team_member = create :user + @ex_team_member = create :user + @team = create :team, founder: @founder + Teamer.create user: @team_member, team: @team, rank: Teamer::RANK_MEMBER + Teamer.create user: @ex_team_member, team: @team, rank: Teamer::RANK_REMOVED + end + + it "returns team data" do + get :show, id: @team.id + expect(response).to be_success + expect(json["id"]).to eq(@team.id) + expect(json["name"]).to eq(@team.name) + + json["members"].each do |member| + expect(@team.teamers.active.map(&:user_id)).to include(member["id"]) + end + end + + it "returns 404 if team not found" do + expect { + get :show, id: Team.last.id + 1 + }.to raise_error(ActionController::RoutingError) + end + end +end