boutique 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -11,12 +11,19 @@ Installation
11
11
  You'll need some private/public certificates:
12
12
 
13
13
  % openssl genrsa -out private.pem 1024
14
- % openssl req -new -key private.pem -x509 -days 365 -out public.pem
14
+ % openssl req -new -key private.pem -x509 -days 1095 -out public.pem
15
15
 
16
- You can download PayPal's public certificate under `My Account > Encrypted
16
+ Make sure the email you use is the same as your PayPal merchant email, or else
17
+ PayPal will reject it.
18
+
19
+ You can download PayPal's public certificate under `Profile > Encrypted
17
20
  Payment Settings`. Click the download button for PayPal Public Certificate.
18
21
  Rename this certificate to something like `paypal.pem`.
19
22
 
23
+ While you're there, upload the `public.pem` certificate you just generated. Copy
24
+ the `Cert ID`, you'll use it for the `pem_cert_id` field in your config. You
25
+ can block unencrypted requests from `Website Payment Preferences`.
26
+
20
27
  Setup a `config.ru` file and run it like any other Sinatra application. You
21
28
  can configure what products you sell here:
22
29
 
@@ -84,6 +91,11 @@ Development
84
91
  Tests are setup to run individually via `ruby test/*_test.rb` or run them all
85
92
  via `rake`.
86
93
 
94
+ TODO
95
+ ====
96
+
97
+ * BUG: logs are required especially for errors
98
+
87
99
  License
88
100
  =======
89
101
 
data/boutique CHANGED
@@ -42,8 +42,11 @@ module Boutique
42
42
  end
43
43
 
44
44
  def self.migrate
45
- load_config rescue DataObjects::SyntaxError
45
+ load_config
46
+ DataMapper.auto_upgrade!
47
+ rescue DataObjects::SyntaxError => e
46
48
  DataMapper.auto_upgrade!
49
+ load_config
47
50
  end
48
51
 
49
52
  def self.stats(code)
@@ -9,8 +9,10 @@ require 'json'
9
9
  require 'openssl'
10
10
  require 'pony'
11
11
 
12
+ DataMapper::Model.raise_on_save_failure = true
13
+
12
14
  module Boutique
13
- VERSION = '0.0.7'
15
+ VERSION = '0.0.8'
14
16
 
15
17
  class << self
16
18
  def configure(setup_db=true)
@@ -238,7 +240,7 @@ module Boutique
238
240
  :body => "Thanks for purchasing #{self.product.name}! " +
239
241
  "To download it, follow this link:\n\n" +
240
242
  " #{self.product.return_url}?b=#{boutique_id}\n\n" +
241
- "Let us know if you have any troubles.\n"
243
+ "Please reply if you have any troubles.\n"
242
244
  )
243
245
  end
244
246
 
@@ -295,8 +297,8 @@ module Boutique
295
297
  error do
296
298
  Pony.mail(
297
299
  :to => Boutique.config.dev_email,
298
- :from => "boutique@#{Boutique.config.dev_email.split('@')[1..-1]}",
299
- :subject => 'Production Exception',
300
+ :from => "boutique@#{Boutique.config.dev_email.split('@')[1..-1].join}",
301
+ :subject => 'Boutique Error',
300
302
  :body => request.env['sinatra.error'].to_s
301
303
  ) if Boutique.config.dev_email
302
304
  end
@@ -324,6 +326,8 @@ module Boutique
324
326
  if !purchase.completed? &&
325
327
  params['txn_id'] &&
326
328
  params['payment_status'] &&
329
+ params['first_name'] &&
330
+ params['payer_email'] &&
327
331
  params['receiver_email'] == Boutique.config.pp_email
328
332
  purchase.complete(params['txn_id'], params['payer_email'], params['first_name'])
329
333
  purchase.send_mail
@@ -25,7 +25,7 @@ class AppTest < BoutiqueTest
25
25
  refute(purchase.completed?)
26
26
  assert_nil(Pony.last_mail)
27
27
 
28
- post "/notify/#{purchase.boutique_id}?payment_status=Completed&txn_id=1337&receiver_email=#{Boutique.config.pp_email}"
28
+ post "/notify/#{purchase.boutique_id}?payment_status=Completed&txn_id=1337&receiver_email=#{Boutique.config.pp_email}&payer_email=john@mailinator.com&first_name=John"
29
29
  assert(last_response.ok?)
30
30
 
31
31
  purchase.reload
@@ -5,7 +5,7 @@ class ModelTest < BoutiqueTest
5
5
  product = ebook_product
6
6
  product.save
7
7
  count = Boutique::Purchase.count
8
- purchase = Boutique::Purchase.create({})
8
+ purchase = Boutique::Purchase.new
9
9
  product.purchases << purchase
10
10
  product.save
11
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boutique
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70287039937920 !ruby/object:Gem::Requirement
16
+ requirement: &70164141101480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70287039937920
24
+ version_requirements: *70164141101480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: data_mapper
27
- requirement: &70287039937400 !ruby/object:Gem::Requirement
27
+ requirement: &70164141100940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70287039937400
35
+ version_requirements: *70164141100940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: pony
38
- requirement: &70287039953220 !ruby/object:Gem::Requirement
38
+ requirement: &70164141100480 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70287039953220
46
+ version_requirements: *70164141100480
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: minitest
49
- requirement: &70287039952700 !ruby/object:Gem::Requirement
49
+ requirement: &70164141099920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70287039952700
57
+ version_requirements: *70164141099920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: shotgun
60
- requirement: &70287039952160 !ruby/object:Gem::Requirement
60
+ requirement: &70164141099440 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70287039952160
68
+ version_requirements: *70164141099440
69
69
  description: A Sinatra module which accepts payments via PayPal and gives customers
70
70
  a secret URL to download your product.
71
71
  email: