apple_models 1.0.4 → 2.0.0

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MjQ4OWRhNzI3YTRjY2MwZDhmZDI4MGFhNWYyYmIwYjJmNjM5MjNkMw==
5
- data.tar.gz: !binary |-
6
- MGU3ZTc0ZmQxMDIwOGYzZGYzNTJiNDljM2JiNWJlNWI5Mzc4OTc4OQ==
2
+ SHA1:
3
+ metadata.gz: 8d79a30fb81134b1ff4cd680decbc11660c73005
4
+ data.tar.gz: ec6976f73dc52ef25991a43b9db652787cb74f0f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MWYwMzIyOTYyMDZkMTVmYTFhYzJhOTY1MDZlZGY3ZDRlOTk1OWM5YzgzOTUy
10
- ODcyZGQ1ZDNhNzI1MzlmNDNjYzRmZjE0YTQyY2M2NTE2NWU0ZDEwYWY4NTg4
11
- ZmU5YWE2ZjdmODljMTZjZjFlNzY4N2Y4ZTNiYmU2MmY4ZjQyOTA=
12
- data.tar.gz: !binary |-
13
- YzAwZGM3Yzk0ZDk2MmQ0ZDJiMzM2YmVkMzJhYTg2MzEwMmQ3NDM3MzRjZWI0
14
- NmI0YTAxMjlhYjQ2NTc0MWMyNWZkOWU2ODFhYmVlNTQ0ODQwNDFjOTNmMDE0
15
- NWUzM2ZhYTJhN2Q1ZmZkYWFlNjAxMmU5MTkwYTkyODhkMmZiMWY=
6
+ metadata.gz: 7e5412c5f15b3ca2de61c632679094a420fcca5ec9b745e24d626a566b5e57f88cc20b4982808f59558b3b907eefca453abafd8d11c39351f044bf3423b204ec
7
+ data.tar.gz: e588efddf4a2025d9b213490addcb37c2a7b2bf6a545d5c95aa21643eca3aada0668b0fc0ffc1be072ce3100576679f8cf4d76066d5dfb792544ead89e797c27
data/.travis.yml CHANGED
@@ -1,8 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.0.0
3
4
  - 1.9.3
5
+ - 1.9.2
6
+ - 1.8.7
4
7
  - jruby-18mode
5
8
  - jruby-19mode
6
- - rbx-18mode
7
- - rbx-19mode
8
- - 1.8.7
9
+ - ruby-head
10
+ - jruby-head
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Apple Models [![Build Status](https://travis-ci.org/tboyko/apple_models.png?branch=master)](http://travis-ci.org/tboyko/apple_models) [![Code Climate](https://codeclimate.com/github/tboyko/apple_models.png)](https://codeclimate.com/github/tboyko/apple_models)
2
2
 
3
- Retrieve the model name of an Apple product based on the model id. __Note:__ the model id is also referred to as the product code and the product id.
3
+ Retrieve the model and version of an Apple product based on the model id. __Note:__ the model id is also referred to as the product code and the product id.
4
4
 
5
- __Special Note:__ At this time, only iOS product lookups are available. Feel free to fork and expand the hash!
5
+ __Special Note:__ At this time, only iOS product lookups are available. Feel free to fork and expand the catalog!
6
6
 
7
7
  ## Installation
8
8
 
@@ -21,7 +21,12 @@ Or install it yourself as:
21
21
  ## Usage
22
22
 
23
23
  ```ruby
24
- AppleModels.find('iPad2,7') # returns "iPad Mini"
24
+ device = AppleModels.find('iPad2,7')
25
+
26
+ device.identifier # "iPad2,7"
27
+ device.model # "iPad"
28
+ device.version # "Mini (Global)"
29
+ device.friendly_name # "iPad Mini (Global)"
25
30
  ```
26
31
 
27
32
  ## Contributing
@@ -0,0 +1,16 @@
1
+ module AppleModels
2
+ class Device
3
+ attr_reader :identifier,
4
+ :model,
5
+ :version
6
+
7
+ def initialize params
8
+ params.each { |k,v| instance_variable_set("@#{k}", v) }
9
+ end
10
+
11
+ def friendly_name
12
+ "#{model} #{version}"
13
+ end
14
+
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module AppleModels
2
- VERSION = "1.0.4"
2
+ VERSION = "2.0.0"
3
3
  end
data/lib/apple_models.rb CHANGED
@@ -1,51 +1,57 @@
1
1
  require 'apple_models/version'
2
+ require 'apple_models/device'
2
3
 
3
4
  module AppleModels
4
- @@catalog = {
5
- 'AppleTV1,1' => 'Apple TV 1',
6
- 'AppleTV2,1' => 'Apple TV 2',
7
- 'AppleTV3,1' => 'Apple TV 3',
8
- 'AppleTV3,2' => 'Apple TV 3',
9
- 'iPhone1,1' => 'iPhone 2G',
10
- 'iPhone1,2' => 'iPhone 3G',
11
- 'iPhone2,1' => 'iPhone 3GS',
12
- 'iPhone3,1' => 'iPhone 4',
13
- 'iPhone3,2' => 'iPhone 4', # CDMA Prototype
14
- 'iPhone3,3' => 'iPhone 4', # CDMA
15
- 'iPhone4,1' => 'iPhone 4S',
16
- 'iPhone5,1' => 'iPhone 5',
17
- 'iPhone5,2' => 'iPhone 5',
18
- 'iPhone5,3' => 'iPhone 5',
19
- 'iPhone5,4' => 'iPhone 5',
20
- 'iPhone6,1' => 'iPhone 5S',
21
- 'iPhone6,2' => 'iPhone 5S',
22
- 'iProd0,1' => 'iPad', # Prototype
23
- 'iPad1,1' => 'iPad', # WiFi and WiFi + Cellular models use same product code
24
- 'iPad2,1' => 'iPad 2', # WiFi
25
- 'iPad2,2' => 'iPad 2', # WiFi + Cellular, GSM
26
- 'iPad2,3' => 'iPad 2', # WiFi + Cellular, CDMA
27
- 'iPad2,4' => 'iPad 2', # WiFi, unannounced internal chipset change of iPad2,1
28
- 'iPad2,5' => 'iPad Mini', # WiFi
29
- 'iPad2,6' => 'iPad Mini', # WiFi + Cellular
30
- 'iPad2,7' => 'iPad Mini', # WiFi + Cellular, Verizon
31
- 'iPad3,1' => 'iPad 3',
32
- 'iPad3,2' => 'iPad 3', # WiFi + Cellular, AT&T
33
- 'iPad3,3' => 'iPad 3', # WiFi + Cellular, Verizon
34
- 'iPad3,4' => 'iPad 4', # WiFi
35
- 'iPad3,5' => 'iPad 4', # WiFi + Cellular, AT&T
36
- 'iPad3,6' => 'iPad 4', # WiFi + Cellular, Verizon & Sprint
37
- 'iPad4,2' => 'iPad Air',
38
- 'iPad4,4' => 'iPad Mini Retina',
39
- 'iPad4,5' => 'iPad Mini Retina',
40
- 'iPod1,1' => 'iPod Touch 1G',
41
- 'iPod2,1' => 'iPod Touch 2G',
42
- 'iPod2,2' => 'iPod Touch 3G', # Prototype
43
- 'iPod3,1' => 'iPod Touch 3G',
44
- 'iPod4,1' => 'iPod Touch 4G',
45
- 'iPod5,1' => 'iPod Touch 5G'
46
- }
5
+ @@catalog = [
6
+ # identifier model version
7
+ [ 'AppleTV1,1', 'Apple TV', '1' ],
8
+ [ 'AppleTV2,1', 'Apple TV', '2' ],
9
+ [ 'AppleTV3,1', 'Apple TV', '3' ],
10
+ [ 'AppleTV3,2', 'Apple TV', '3' ],
11
+ [ 'iPhone1,1', 'iPhone', '2G' ],
12
+ [ 'iPhone1,2', 'iPhone', '3G' ],
13
+ [ 'iPhone2,1', 'iPhone', '3GS' ],
14
+ [ 'iPhone3,1', 'iPhone', '4 (GSM)' ],
15
+ [ 'iPhone3,2', 'iPhone', '4 (GSM)' ],
16
+ [ 'iPhone3,3', 'iPhone', '4 (CDMA)' ],
17
+ [ 'iPhone4,1', 'iPhone', '4S' ],
18
+ [ 'iPhone5,1', 'iPhone', '5 (GSM)' ],
19
+ [ 'iPhone5,2', 'iPhone', '5 (Global)' ],
20
+ [ 'iPhone5,3', 'iPhone', '5C (GSM)' ],
21
+ [ 'iPhone5,4', 'iPhone', '5C (Global)' ],
22
+ [ 'iPhone6,1', 'iPhone', '5S (GSM)' ],
23
+ [ 'iPhone6,2', 'iPhone', '5S (Global)' ],
24
+ [ 'iProd0,1', 'iPad', 'Prototype' ],
25
+ [ 'iPad1,1', 'iPad', '1' ],
26
+ [ 'iPad2,1', 'iPad', '2 (WiFi)' ],
27
+ [ 'iPad2,2', 'iPad', '2 (GSM)' ],
28
+ [ 'iPad2,3', 'iPad', '2 (CDMA)' ],
29
+ [ 'iPad2,4', 'iPad', '2' ],
30
+ [ 'iPad2,5', 'iPad', 'Mini (WiFi)' ],
31
+ [ 'iPad2,6', 'iPad', 'Mini (GSM)' ],
32
+ [ 'iPad2,7', 'iPad', 'Mini (Global)' ],
33
+ [ 'iPad3,1', 'iPad', '3 (WiFi)' ],
34
+ [ 'iPad3,2', 'iPad', '3 (CDMA)' ],
35
+ [ 'iPad3,3', 'iPad', '3 (GSM)' ],
36
+ [ 'iPad3,4', 'iPad', '4 (WiFi)' ],
37
+ [ 'iPad3,5', 'iPad', '4 (GSM)' ],
38
+ [ 'iPad3,6', 'iPad', '4 (Global)' ],
39
+ [ 'iPad4,2', 'iPad', 'Air (Cellular)' ],
40
+ [ 'iPad4,4', 'iPad', 'Mini Retina (WiFi)' ],
41
+ [ 'iPad4,5', 'iPad', 'Mini Retina (Cellular)' ],
42
+ [ 'iPod1,1', 'iPod', 'Touch 1G' ],
43
+ [ 'iPod2,1', 'iPod', 'Touch 2G' ],
44
+ [ 'iPod2,2', 'iPod', 'Touch 3' ],
45
+ [ 'iPod3,1', 'iPod', 'Touch 3' ],
46
+ [ 'iPod4,1', 'iPod', 'Touch 4' ],
47
+ [ 'iPod5,1', 'iPod', 'Touch 5' ],
48
+ ]
47
49
 
48
50
  def self.find(product_id)
49
- @@catalog[product_id]
51
+ if (match = @@catalog.select { |i| i[0] == product_id }.first)
52
+ Device.new identifier: match[0],
53
+ model: match[1],
54
+ version: match[2]
55
+ end
50
56
  end
51
57
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe AppleModels do
4
4
  it 'returns the correct model name when provided a model id' do
5
- AppleModels.find('iPad2,7').should match 'iPad Mini'
5
+ AppleModels.find('iPad2,7').friendly_name.should == 'iPad Mini (Global)'
6
6
  end
7
7
 
8
8
  it 'returns nil when an unknown model id is provided' do
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe AppleModels::Device do
4
+
5
+ subject(:device) do
6
+ id = "iPhone6,2"
7
+ model = "iPhone"
8
+ version = "5S (Global)"
9
+
10
+ device = AppleModels::Device.new identifier: id,
11
+ model: model,
12
+ version: version
13
+ end
14
+
15
+ it 'initializes with an array of parameters' do
16
+ device.identifier.should == "iPhone6,2"
17
+ end
18
+
19
+ it 'produces a friendly name' do
20
+ device.friendly_name.should == "iPhone 5S (Global)"
21
+ end
22
+
23
+ end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apple_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taylor Boyko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-17 00:00:00.000000000 Z
11
+ date: 2014-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
@@ -54,8 +54,10 @@ files:
54
54
  - Rakefile
55
55
  - apple_models.gemspec
56
56
  - lib/apple_models.rb
57
+ - lib/apple_models/device.rb
57
58
  - lib/apple_models/version.rb
58
59
  - spec/apple_models_spec.rb
60
+ - spec/device_spec.rb
59
61
  - spec/spec_helper.rb
60
62
  homepage: https://github.com/tboyko/apple_models
61
63
  licenses:
@@ -67,20 +69,21 @@ require_paths:
67
69
  - lib
68
70
  required_ruby_version: !ruby/object:Gem::Requirement
69
71
  requirements:
70
- - - ! '>='
72
+ - - '>='
71
73
  - !ruby/object:Gem::Version
72
74
  version: '0'
73
75
  required_rubygems_version: !ruby/object:Gem::Requirement
74
76
  requirements:
75
- - - ! '>='
77
+ - - '>='
76
78
  - !ruby/object:Gem::Version
77
79
  version: '0'
78
80
  requirements: []
79
81
  rubyforge_project:
80
- rubygems_version: 2.1.10
82
+ rubygems_version: 2.0.14
81
83
  signing_key:
82
84
  specification_version: 4
83
85
  summary: ''
84
86
  test_files:
85
87
  - spec/apple_models_spec.rb
88
+ - spec/device_spec.rb
86
89
  - spec/spec_helper.rb