asset upload api wip
This commit is contained in:
parent
d707a24443
commit
5f10503470
|
|
@ -0,0 +1,14 @@
|
|||
# encoding: utf-8
|
||||
|
||||
class AssetUploader < CarrierWave::Uploader::Base
|
||||
include CarrierWaveDirect::Uploader
|
||||
include CarrierWave::MimeTypes
|
||||
process :set_content_type
|
||||
|
||||
|
||||
def initialize(*)
|
||||
super
|
||||
JamRuby::UploaderConfiguration.set_aws_public_configuration(self)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -6,12 +6,12 @@
|
|||
user_id character varying(64) NOT NULL,
|
||||
asset_type character varying(64),
|
||||
created_at timestamp without time zone DEFAULT now() NOT NULL,
|
||||
url character varying(1024),
|
||||
uri character varying(1024),
|
||||
filename character varying(256),
|
||||
recording_id character varying(64),
|
||||
session_id character varying(64),
|
||||
ext_id character varying(64),
|
||||
metadata jsonb
|
||||
metadata json
|
||||
);
|
||||
SQL
|
||||
)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
class AddUniqueIndexToUserAssetsExtId < ActiveRecord::Migration
|
||||
|
||||
def self.up
|
||||
execute("ALTER TABLE user_assets ADD CONSTRAINT user_assets_ext_id_key UNIQUE (ext_id);")
|
||||
end
|
||||
|
||||
def self.down
|
||||
execute("ALTER TABLE user_assets DROP CONSTRAINT user_assets_ext_id_key;")
|
||||
end
|
||||
end
|
||||
|
|
@ -192,6 +192,8 @@ module JamRuby
|
|||
has_many :gift_cards, :class_name => "JamRuby::GiftCard"
|
||||
has_many :gift_card_purchases, :class_name => "JamRuby::GiftCardPurchase"
|
||||
|
||||
#uploads
|
||||
has_many :user_assets, class_name: "JamRuby::UserAsset"
|
||||
|
||||
# affiliate_partner
|
||||
has_one :affiliate_partner, :class_name => "JamRuby::AffiliatePartner", :foreign_key => :partner_user_id, inverse_of: :partner_user
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
module JamRuby
|
||||
class UserAsset < ActiveRecord::Base
|
||||
self.table_name = "user_assets"
|
||||
self.primary_key = 'id'
|
||||
|
||||
belongs_to :user, :inverse_of => :user_assets, :class_name => "JamRuby::User"
|
||||
validates :asset_type, :filename, :uri, presence: true
|
||||
|
||||
|
||||
before_validation(on: :create) do
|
||||
self.created_at ||= Time.now
|
||||
self.id = SecureRandom.uuid
|
||||
#type = description.gsub(/[^a-zA-Z0-9_.-]/, '')
|
||||
#self.uri = "user_assets/#{type}/#{created_at.strftime('%Y-%m-%d')}/#{filename_no_ext}-#{self.id}.#{filename_ext}"
|
||||
self.uri = "user_assets/#{created_at.strftime('%Y-%m-%d')}/#{filename_no_ext}-#{self.id}.#{filename_ext}"
|
||||
end
|
||||
|
||||
def filename_no_ext
|
||||
File.basename(filename, '.*')
|
||||
end
|
||||
|
||||
def filename_ext
|
||||
File.extname(filename)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -727,6 +727,33 @@ class ApiUsersController < ApiController
|
|||
|
||||
end
|
||||
|
||||
def user_assets
|
||||
user = User.find_by_id(params[:user_id])
|
||||
@user_asset = UserAsset.new
|
||||
@user_asset.user = user
|
||||
@user_asset.asset_type = params[:asset_type]
|
||||
@user_asset.fimename = params[:filename]
|
||||
@user_asset.recording_id = params[:recording_id]
|
||||
@user_asset.session_id = params[:session_id]
|
||||
@user_asset.ext_id = params[:ext_id]
|
||||
@user_asset.metadata = request.body.read
|
||||
|
||||
unless @user_asset.save
|
||||
# There are at least some conditions on valid dumps (need client_type)
|
||||
response.status = :unprocessable_entity
|
||||
respond_with @user_asset
|
||||
return
|
||||
end
|
||||
|
||||
if Rails.application.config.storage_type == :fog
|
||||
|
||||
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 => @dump.id}, :status => 200
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# user progression tracking
|
||||
def downloaded_client
|
||||
|
|
|
|||
Loading…
Reference in New Issue