Sha256: dc00adaa1e8ae3da47026b1a5fb3b50a1c5eef34ecbef4d2d37605f18c89abdf
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
require 'rack' require 'rack/contrib' require 'sinatra/base' require 'sinatra/param' require 'rack' require 'sequel' require 'venice' module Rack class InAppPurchase < Sinatra::Base VERSION = '0.1.0' use Rack::PostBodyContentTypeParser helpers Sinatra::Param Sequel.extension :core_extensions, :migration autoload :Product, ::File.join(::File.dirname(__FILE__), 'in-app-purchase/models/product') autoload :Receipt, ::File.join(::File.dirname(__FILE__), 'in-app-purchase/models/receipt') disable :raise_errors, :show_exceptions configure do if ENV['DATABASE_URL'] DB = Sequel.connect(ENV['DATABASE_URL']) Sequel::Migrator.run(DB, ::File.join(::File.dirname(__FILE__), "in-app-purchase/migrations"), table: 'in_app_purchase_schema_info') end end before do content_type :json end get '/products/identifiers' do Product.where(is_enabled: true).map(:product_identifier).to_json end post '/receipts/verify' do param :'receipt-data', String, required: true status 203 begin receipt = Venice::Receipt.verify!(params[:'receipt-data']) Receipt.create({ip_address: request.ip}.merge(receipt.to_h)) content = settings.content_callback.call(receipt) rescue nil { status: 0, receipt: receipt.to_h, content: content }.select{|k,v| v}.to_json rescue Venice::ReceiptVerificationError => error { status: Integer(error.message) }.to_json rescue halt 500 end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rack-in-app-purchase-0.1.0 | ./lib/rack/in-app-purchase.rb |