ipa-parser 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ipa-parser.gemspec +1 -1
- data/lib/ipa-parser/version.rb +1 -1
- data/lib/ipa-parser.rb +4 -54
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7b97491c42b899892444e373e1828981199a37f
|
4
|
+
data.tar.gz: fc008930d7824742330eae44fd2450e0163b38f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37406e74a5e5e85033363acb802a8332c61b7f7beceebf40f3f6a64e66228bb6078f6c068c5ac457039b7567c34e6f18f6e8cbecaec5ff1488df790609d45721
|
7
|
+
data.tar.gz: 514ca535486c3645e22bf023467e0510de67f9e1ec5661e9f46174a601b4c634813fd84af25158152e29d6ca5a15ea6efd683df6cfa0acd4de6a16f2821228e9
|
data/README.md
CHANGED
data/ipa-parser.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency 'CFPropertyList', '~> 2.
|
21
|
+
spec.add_dependency 'CFPropertyList', '~> 2.3.3'
|
22
22
|
spec.add_dependency 'rubyzip', '~> 1.1.0'
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.6"
|
data/lib/ipa-parser/version.rb
CHANGED
data/lib/ipa-parser.rb
CHANGED
@@ -23,67 +23,17 @@ module IpaParser
|
|
23
23
|
|
24
24
|
def initialize(ipa_file)
|
25
25
|
@ipa_file = Zip::File.open(ipa_file)
|
26
|
-
end
|
27
|
-
|
28
|
-
def info
|
29
26
|
@ipa_file.each do |entry|
|
30
|
-
if entry.name.match(/
|
27
|
+
if entry.name.match(/(.)*\.app\/Info.plist/)
|
31
28
|
@plist_path = entry.name
|
32
29
|
@plist_bin = entry.get_input_stream.read
|
33
30
|
end
|
34
31
|
end
|
35
|
-
|
36
|
-
plist = CFPropertyList::List.new(:data => @plist_bin)
|
37
|
-
data = CFPropertyList.native_types(plist.value)
|
32
|
+
@plist = CFPropertyList::List.new(:data => @plist_bin)
|
38
33
|
end
|
39
34
|
|
40
|
-
def
|
41
|
-
|
42
|
-
icon_file_names.each do |file_name|
|
43
|
-
@ipa_file.each do |entry|
|
44
|
-
if entry.name.match(/Payload\/(.)*\.app\/#{file_name}(.)*.png/)
|
45
|
-
matched_entries << @ipa_file.read(entry.name)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
matched_entries
|
50
|
-
end
|
51
|
-
|
52
|
-
# normally the last icon has the highest resolution
|
53
|
-
# icons in the ipa file are crushed, cannot display in browsers other than Safari
|
54
|
-
def crushed_icon
|
55
|
-
icons.last
|
56
|
-
end
|
57
|
-
|
58
|
-
def icon_file_names
|
59
|
-
begin
|
60
|
-
# icon names may or may not include '.png', so remove .png suffix for consistence
|
61
|
-
info["CFBundleIcons"]["CFBundlePrimaryIcon"]["CFBundleIconFiles"].map { |f| File::basename(f, '.png' ) }
|
62
|
-
rescue NoMethodError => e
|
63
|
-
[]
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def icon
|
68
|
-
if crushed_icon
|
69
|
-
crushed_file = Tempfile.new('crushed_icon.png', :encoding => 'ascii-8bit')
|
70
|
-
uncrushed_file = Tempfile.new('uncrushed_icon.png', :encoding => 'ascii-8bit')
|
71
|
-
begin
|
72
|
-
crushed_file.write(crushed_icon)
|
73
|
-
png_bin = File.expand_path("../../bin/pngcrush", __FILE__)
|
74
|
-
cmd = "#{png_bin} -revert-iphone-optimizations "
|
75
|
-
cmd << crushed_file.path + " " + uncrushed_file.path
|
76
|
-
`#{cmd}`
|
77
|
-
@data = uncrushed_file.read
|
78
|
-
ensure
|
79
|
-
crushed_file.close
|
80
|
-
uncrushed_file.close
|
81
|
-
crushed_file.unlink
|
82
|
-
uncrushed_file.unlink
|
83
|
-
end
|
84
|
-
end
|
85
|
-
@data
|
35
|
+
def info
|
36
|
+
CFPropertyList.native_types(@plist.value)
|
86
37
|
end
|
87
|
-
|
88
38
|
end
|
89
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipa-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- astro2linus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: CFPropertyList
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.3.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.3.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rubyzip
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.5.1
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: Extract information from a iPA file
|