apple_warranty_check 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/.gitignore +2 -0
- data/README.md +2 -0
- data/lib/apple_warranty_check/process.rb +39 -17
- data/lib/apple_warranty_check/version.rb +1 -1
- data/spec/apple_warranty_check_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60bcec6d62ab2bc0417c81e48217baa8135f3e91
|
4
|
+
data.tar.gz: d34d92ced8b939bd51e2f4e95dbd58e35858535e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6732a3072693525ff52b36fa6b40befa186e20c99fc707c79e4bc4cc14f1862fe27b04012508942845a9f313f33cfb48babd4ad3c162ddcbeeb70e9f79c3d8e
|
7
|
+
data.tar.gz: 735b771c3a5a1569a50efe5d1f20610a869e477a08572d1b140874b4c81065b17cede030aed8555ac65c203081b1288ee3922a5f83360d44b6bf97264c122a82
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# AppleWarrantyCheck
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/apple_warranty_check)
|
3
4
|
[](https://travis-ci.org/flowerett/apple_warranty_check)
|
4
5
|
[](https://codeclimate.com/github/flowerett/apple_warranty_check)
|
6
|
+
[](https://gemnasium.com/flowerett/apple_warranty_check)
|
5
7
|
|
6
8
|
Simple tool to get warranty info for Apple devices by it's IMEI.
|
7
9
|
|
@@ -8,14 +8,14 @@ module AppleWarrantyCheck
|
|
8
8
|
BOOL_ARG = "(true|false)".freeze
|
9
9
|
|
10
10
|
PRODUCT_INFO_REGEXP = /warrantyPage.warrantycheck.displayProductInfo\((.*)\)/.freeze
|
11
|
-
PH_SUPPORT_INFO_REGEXP = /warrantyPage.warrantycheck.displayPHSupportInfo\(\s*#{BOOL_ARG},\s*#{STR_ARG},\s*#{STR_ARG},\s*#{STR_ARG}
|
11
|
+
PH_SUPPORT_INFO_REGEXP = /warrantyPage.warrantycheck.displayPHSupportInfo\(\s*#{BOOL_ARG},\s*#{STR_ARG},\s*#{STR_ARG},\s*#{STR_ARG}/.freeze
|
12
12
|
HW_SUPPORT_INFO_REGEXP = /warrantyPage.warrantycheck.displayHWSupportInfo\(\s*#{BOOL_ARG},\s*#{STR_ARG},\s*#{STR_ARG},\s*#{STR_ARG},\s*#{STR_ARG}/.freeze
|
13
13
|
|
14
14
|
PH_SUPPORT_STATUS = /Telephone Technical Support: (Active|Expired)/.freeze
|
15
15
|
HW_SUPPORT_STATUS = /Repairs and Service Coverage: (Active|Expired)/.freeze
|
16
16
|
EXP_DATE = /Estimated Expiration Date: (.*\s\d{2},\s\d{4})/.freeze
|
17
17
|
|
18
|
-
ERR_RESP_REGEXP = /var errorMsg = '(.*)'
|
18
|
+
ERR_RESP_REGEXP = /var errorMsg = '(.*)';/.freeze
|
19
19
|
|
20
20
|
NOT_REGISTERED_REGEXP = /window.location.href =(.*);/.freeze
|
21
21
|
|
@@ -23,14 +23,20 @@ module AppleWarrantyCheck
|
|
23
23
|
PH_SUPPORT_INFO_KEYS = %i(hasPhoneSuppCov phoneSuppSubHeader phoneSuppCovTxt phoneSuppLink).freeze
|
24
24
|
HW_SUPPORT_INFO_KEYS = %i(hasHWSuppCov HWRepairSubHead HWSuppCovTxt HWSuppLnk hasCLMessageCode).freeze
|
25
25
|
|
26
|
-
attr_accessor :imei
|
26
|
+
attr_accessor :imei, :response
|
27
27
|
|
28
28
|
def initialize(imei=nil)
|
29
29
|
@imei = imei
|
30
|
+
@response = get_response
|
30
31
|
end
|
31
32
|
|
32
33
|
def run
|
33
|
-
|
34
|
+
case response
|
35
|
+
when Net::HTTPSuccess
|
36
|
+
parse_body response.body
|
37
|
+
else
|
38
|
+
error_msg [response.code, response.message].join(': ')
|
39
|
+
end
|
34
40
|
end
|
35
41
|
|
36
42
|
def parse_body(html)
|
@@ -54,10 +60,12 @@ module AppleWarrantyCheck
|
|
54
60
|
end
|
55
61
|
|
56
62
|
def get_product_info(html)
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
63
|
+
process_with_exception 'could not find product info' do
|
64
|
+
[
|
65
|
+
PRODUCT_INFO_KEYS,
|
66
|
+
PRODUCT_INFO_REGEXP.match(html)[1].split(',').map{ |el| el.strip.gsub('\'', '') }
|
67
|
+
].transpose.to_h
|
68
|
+
end
|
61
69
|
end
|
62
70
|
|
63
71
|
private
|
@@ -68,26 +76,40 @@ module AppleWarrantyCheck
|
|
68
76
|
|
69
77
|
uri.query = URI.encode_www_form(params)
|
70
78
|
|
71
|
-
Net::HTTP.get_response(uri)
|
79
|
+
res = Net::HTTP.get_response(uri)
|
72
80
|
end
|
73
81
|
|
74
82
|
def get_support_info(regexp, keys, status_regexp, html)
|
75
|
-
|
83
|
+
process_with_exception 'could not find support info' do
|
84
|
+
match_data = regexp.match(html)
|
85
|
+
|
86
|
+
keys.map.
|
87
|
+
with_index{ |el, i| [el, match_data[i+1]] }.
|
88
|
+
to_h.
|
89
|
+
merge!(
|
90
|
+
support_status: status_regexp.match(match_data[2])[1],
|
91
|
+
expiration_date: (EXP_DATE.match(match_data[3])[1] rescue nil)
|
92
|
+
)
|
93
|
+
end
|
94
|
+
end
|
76
95
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
)
|
96
|
+
def process_with_exception(message)
|
97
|
+
yield
|
98
|
+
rescue NoMethodError
|
99
|
+
message
|
82
100
|
end
|
83
101
|
|
84
102
|
def error_response(html)
|
85
|
-
|
103
|
+
error_msg ERR_RESP_REGEXP.match(html)[1]
|
86
104
|
end
|
87
105
|
|
88
106
|
# TODO follow redirect to get live apple message
|
89
107
|
def not_registered
|
90
|
-
|
108
|
+
error_msg "Please validate your product's purchase date. Apple is unable to provide information about your service coverage."
|
109
|
+
end
|
110
|
+
|
111
|
+
def error_msg(message)
|
112
|
+
{ error: message }
|
91
113
|
end
|
92
114
|
end
|
93
115
|
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe AppleWarrantyCheck do
|
4
4
|
it 'has a version number' do
|
5
|
-
expect(AppleWarrantyCheck::VERSION).to eq '0.0.
|
5
|
+
expect(AppleWarrantyCheck::VERSION).to eq '0.0.3'
|
6
6
|
end
|
7
7
|
|
8
8
|
let(:valid_warranty_html) { File.open('spec/files/valid_warranty_resp.html').read }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apple_warranty_check
|
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
|
- Nick Chernyshev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|