oja 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/oja.rb +33 -4
- data/lib/oja/cli.rb +9 -2
- data/lib/oja/receipt.rb +8 -4
- metadata +2 -2
data/lib/oja.rb
CHANGED
@@ -3,13 +3,42 @@ require 'oja/request'
|
|
3
3
|
require 'oja/response'
|
4
4
|
|
5
5
|
module Oja
|
6
|
-
|
7
|
-
|
6
|
+
# Verify a receipt data with the App Store. You can either pass the receipt
|
7
|
+
# and password as two arguments or as a option hash.
|
8
|
+
#
|
9
|
+
# Receipt data should be raw, not Base64 encoded. It usually begins with
|
10
|
+
# ‘{ "signature" = ’.
|
11
|
+
#
|
12
|
+
# Example:
|
13
|
+
# Oja.verify(receipt_data, password)
|
14
|
+
# Oja.verify(:data => receipt_data, :password => password)
|
15
|
+
def self.verify(*args)
|
16
|
+
receipt = Oja::Receipt.new(argument_hash(*args, [:data, :password]))
|
8
17
|
receipt.verify
|
9
18
|
end
|
10
19
|
|
11
|
-
|
12
|
-
|
20
|
+
# Verify a receipt file with the App Store. You can either pass the filename
|
21
|
+
# and password as two arguments or as a option hash.
|
22
|
+
#
|
23
|
+
# Example:
|
24
|
+
# Oja.verify_filename(filename, password)
|
25
|
+
# Oja.verify(:filename => filename, :password => password)
|
26
|
+
def self.verify_filename(*args)
|
27
|
+
receipt = Oja::Receipt.new(argument_hash(*args, [:filename, :password]))
|
13
28
|
receipt.verify
|
14
29
|
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def self.argument_hash(*args)
|
34
|
+
args = args.dup
|
35
|
+
parts = args.pop
|
36
|
+
if args[0].kind_of?(Hash)
|
37
|
+
args[0]
|
38
|
+
else
|
39
|
+
h = {}; parts.each_with_index do |part, index|
|
40
|
+
h[part] = args[index]
|
41
|
+
end; h
|
42
|
+
end
|
43
|
+
end
|
15
44
|
end
|
data/lib/oja/cli.rb
CHANGED
@@ -8,13 +8,20 @@ module Oja
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def usage
|
11
|
-
puts "Usage: #{File.basename($0)} <receipt-file>"
|
11
|
+
puts "Usage: #{File.basename($0)} <receipt-file> [options]"
|
12
|
+
puts ""
|
13
|
+
puts "Options"
|
14
|
+
puts " -p, --password <password>"
|
12
15
|
end
|
13
16
|
|
14
17
|
def receipt_filename
|
15
18
|
@argv[0]
|
16
19
|
end
|
17
20
|
|
21
|
+
def password
|
22
|
+
@options['p'] || @options['password']
|
23
|
+
end
|
24
|
+
|
18
25
|
def print_receipt_details(receipt_data)
|
19
26
|
receipt_data.each do |key, value|
|
20
27
|
puts "#{key}: #{value}"
|
@@ -22,7 +29,7 @@ module Oja
|
|
22
29
|
end
|
23
30
|
|
24
31
|
def check_receipt
|
25
|
-
if response = Oja.verify_filename(receipt_filename)
|
32
|
+
if response = Oja.verify_filename(:filename => receipt_filename, :password => password)
|
26
33
|
if response.active?
|
27
34
|
puts "[!] Receipt appears to be valid and active"
|
28
35
|
puts
|
data/lib/oja/receipt.rb
CHANGED
@@ -2,7 +2,7 @@ require 'base64'
|
|
2
2
|
|
3
3
|
module Oja
|
4
4
|
class Receipt
|
5
|
-
attr_accessor :filename
|
5
|
+
attr_accessor :filename, :password
|
6
6
|
attr_writer :data
|
7
7
|
|
8
8
|
def initialize(attributes)
|
@@ -31,10 +31,14 @@ module Oja
|
|
31
31
|
Base64.encode64(data)
|
32
32
|
end
|
33
33
|
|
34
|
+
def attributes
|
35
|
+
attributes = { 'receipt-data' => receipt_data }
|
36
|
+
attributes['password'] = password if password
|
37
|
+
attributes
|
38
|
+
end
|
39
|
+
|
34
40
|
def to_json
|
35
|
-
JSON.dump(
|
36
|
-
'receipt-data' => receipt_data
|
37
|
-
)
|
41
|
+
JSON.dump(attributes)
|
38
42
|
end
|
39
43
|
|
40
44
|
def verify
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oja
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nap
|