* perfdata more work
This commit is contained in:
parent
effc3397f4
commit
f5b8ac4da5
3
Gemfile
3
Gemfile
|
|
@ -32,7 +32,7 @@ gem 'pg', '0.14.0'
|
|||
gem 'compass-rails'
|
||||
gem 'rabl' # for JSON API development
|
||||
gem 'gon' # for passthrough of Ruby variables to Javascript variables
|
||||
gem 'eventmachine', '1.0.0'
|
||||
gem 'eventmachine', '1.0.3'
|
||||
gem 'amqp', '0.9.8'
|
||||
gem 'logging-rails', :require => 'logging/rails'
|
||||
gem 'omniauth', '1.1.1'
|
||||
|
|
@ -45,6 +45,7 @@ gem 'aws-sdk', '1.8.0'
|
|||
gem 'aasm', '3.0.16'
|
||||
gem 'carrierwave'
|
||||
gem 'devise', '>= 1.1.2'
|
||||
gem 'thin'
|
||||
#group :libv8 do
|
||||
# gem 'libv8', "~> 3.11.8"
|
||||
#end
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
require 'aws-sdk'
|
||||
|
||||
class ApiMusicSessionsController < ApiController
|
||||
|
||||
# have to be signed in currently to see this screen
|
||||
|
|
@ -163,16 +165,35 @@ class ApiMusicSessionsController < ApiController
|
|||
end
|
||||
|
||||
def perf_upload
|
||||
# URI.unescape(bucket_gen.objects[@perfdata.uri].url_for(:read, :expires => SampleApp::Application.config.perf_data_signed_url_timeout, :response_content_type => 'text/csv').to_s)
|
||||
music_session = MusicSession.find(params[:id])
|
||||
|
||||
if SampleApp::Application.config.upload_perf_to_s3
|
||||
@perfdata = MusicSessionPerfData.new()
|
||||
@perfdata.music_session = music_session
|
||||
@perfdata.client_id = params[:client_id]
|
||||
@perfdata.save
|
||||
|
||||
if @perfdata.errors.any?
|
||||
# we have to do this because api_session_detail_url will fail with a bad @music_session
|
||||
response.status = :unprocessable_entity
|
||||
respond_with @perfdata
|
||||
return
|
||||
end
|
||||
|
||||
if SampleApp::Application.config.storage_type == :fog
|
||||
|
||||
s3 = AWS::S3.new(:access_key_id => SampleApp::Application.config.aws_access_key_id,
|
||||
:secret_access_key => SampleApp::Application.config.aws_secret_access_key)
|
||||
bucket = s3.buckets[SampleApp::Application.config.aws_bucket]
|
||||
redirect_to URI.unescape(bucket.objects[@perdata.uri].url_for(:write, :expires => SampleApp::Application.config.perf_data_signed_url_timeout, :'response_content_type' => 'text/csv').to_s)
|
||||
else
|
||||
|
||||
if params[:redirected_back].nil?
|
||||
if params[:redirected_back].nil? || !params[:redirected_back]
|
||||
# first time that a client has asked to do a PUT (not redirected back here)
|
||||
redirect_to request.fullpath + '&redirected_back=true'
|
||||
else
|
||||
|
||||
# we should store it here to aid in development, but we don't have to until someone wants the feature
|
||||
# so... just return 200
|
||||
render :json => { :id => @perfdata.id }, :status => 200
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -113,5 +113,10 @@ module SampleApp
|
|||
config.aws_region = 'us-east-1'
|
||||
config.aws_bucket = 'jamkazam-dev'
|
||||
config.aws_cache = '315576000'
|
||||
|
||||
|
||||
# perf_data configs
|
||||
config.perf_data_bucket_key = "perf_data"
|
||||
config.perf_data_signed_url_timeout = 3600 # 1 hour
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ SampleApp::Application.configure do
|
|||
# Show the logging configuration on STDOUT
|
||||
config.show_log_configuration = true
|
||||
|
||||
config.websocket_gateway_enable = true
|
||||
config.websocket_gateway_enable = false
|
||||
|
||||
TEST_CONNECT_STATES = false
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ CarrierWave.root = Rails.root.join(Rails.public_path).to_s
|
|||
CarrierWave.base_path = ENV['RAILS_RELATIVE_URL_ROOT']
|
||||
|
||||
CarrierWave.configure do |config|
|
||||
config.storage = SampleApp::Application.config.store_type
|
||||
config.storage = SampleApp::Application.config.storage_type
|
||||
config.fog_credentials = {
|
||||
:provider => 'AWS',
|
||||
:aws_access_key_id => SampleApp::Application.config.aws_access_key_id,
|
||||
|
|
@ -13,8 +13,8 @@ CarrierWave.configure do |config|
|
|||
}
|
||||
config.fog_directory = SampleApp::Application.config.aws_bucket # required
|
||||
config.fog_public = true # optional, defaults to true
|
||||
config.fog_attributes = {'Cache-Control'=>"max-age=#{JamAdmin::Application.config.aws_cache}"} # optional, defaults to {}
|
||||
end
|
||||
config.fog_attributes = {'Cache-Control'=>"max-age=#{SampleApp::Application.config.aws_cache}"} # optional, defaults to {}
|
||||
end
|
||||
|
||||
|
||||
require 'carrierwave/orm/activerecord'
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ FactoryGirl.define do
|
|||
sequence(:client_id) { |n| "Client#{n}" }
|
||||
ip_address "1.1.1.1"
|
||||
as_musician true
|
||||
sequence(:client_id) { |n| "client_id#{n}"}
|
||||
end
|
||||
|
||||
factory :friendship, :class => JamRuby::Friendship do
|
||||
|
|
|
|||
|
|
@ -556,6 +556,26 @@ describe "Music Session API ", :type => :api do
|
|||
sessions.first["description"].should == "My Session"
|
||||
end
|
||||
|
||||
it "prepare for upload" do
|
||||
user = FactoryGirl.create(:user)
|
||||
music_session = FactoryGirl.create(:music_session, :creator => user, :description => "My Session")
|
||||
client = FactoryGirl.create(:connection, :user => user)
|
||||
|
||||
put "/api/sessions/#{music_session.id}/perf.json", "CONTENT_TYPE" => "application/json"
|
||||
last_response.status.should == 302
|
||||
redirect = last_response.headers["Location"]
|
||||
p redirect
|
||||
|
||||
put redirect + '.json', "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should == 200
|
||||
body = JSON.parse(last_response.body)
|
||||
perf_data_id = body["id"]
|
||||
|
||||
music_session_perf_data = MusicSessionPerfData.find(perf_data_id)
|
||||
music_session_perf_data.should_not be_nil
|
||||
music_session_perf_data.music_session.should == music_session
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue