apple_models 1.0.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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