Changes for purchases - handle different type of purchases

This commit is contained in:
chris2tof 2011-11-14 10:22:31 +08:00
parent d9d7099da6
commit c1d77fa6d6
4 changed files with 12 additions and 5 deletions

View File

@ -20,12 +20,13 @@ class Admin::PurchasesController < ApplicationController
protected protected
def download_purchase(purchase, url) def download_purchase(purchase, url)
uri = URI.parse("http://#{APP_CONFIG['store_ip']}/download/design") uri = URI.parse("http://#{APP_CONFIG['store_ip']}/download/purchase")
http = Net::HTTP.new(uri.host, uri.port) http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri) request = Net::HTTP::Post.new(uri.request_uri)
public_key = OpenSSL::PKey::RSA.new(File.read(APP_CONFIG['main_public_key'])) public_key = OpenSSL::PKey::RSA.new(File.read(APP_CONFIG['main_public_key']))
encrypted_data = public_key.public_encrypt({:purchase_id => purchase.purchase_id, encrypted_data = public_key.public_encrypt({:purchase_id => purchase.purchase_id,
:purchase_type => purchase._type,
:roaming_id => Site.find(session[:site]).roaming_id, :roaming_id => Site.find(session[:site]).roaming_id,
:url => url}.to_json) :url => url}.to_json)

View File

@ -7,5 +7,6 @@ class Purchase
field :author field :author
field :intro field :intro
field :downloaded, :type => Boolean field :downloaded, :type => Boolean
field :download_date, :type => Date
end end

View File

@ -6,7 +6,7 @@ PrototypeR4::Application.routes.draw do
match '/site/set_registered', :to => CentralServerExchangeApp match '/site/set_registered', :to => CentralServerExchangeApp
match '/site/public_key', :to => CentralServerExchangeApp match '/site/public_key', :to => CentralServerExchangeApp
match '/site/update', :to => GithubApp match '/site/update', :to => GithubApp
match '/purchase/design', :to => CentralServerExchangeApp match '/purchase/:type', :to => CentralServerExchangeApp
match "/panel/:app_name/frontend/:action" => redirect {|params| "/panel/#{params[:app_name]}/#{params[:action]}" } match "/panel/:app_name/frontend/:action" => redirect {|params| "/panel/#{params[:app_name]}/#{params[:action]}" }

View File

@ -28,11 +28,16 @@ class CentralServerExchangeApp < Sinatra::Base
end end
end end
post '/purchase/design' do post '/purchase/:type' do
begin begin
private_key = OpenSSL::PKey::RSA.new(@site.private_key) private_key = OpenSSL::PKey::RSA.new(@site.private_key)
p_design = PDesign.new.from_json(private_key.private_decrypt(request.params['purchase']))
p_design.save case params[:type]
when 'Design'
purchase = PDesign.new.from_json(private_key.private_decrypt(request.params['purchase']))
end
purchase.save
body 'true' body 'true'
rescue rescue
body 'false' body 'false'