@@ -7,15 +7,15 @@ class Fetcher {
7
7
case failure( Error )
8
8
}
9
9
10
- enum Error {
10
+ enum Failure : Error {
11
11
case invalidResponse
12
12
case invalidStatusCode
13
13
case invalidData
14
14
case invalidContentLength
15
15
case conversionError
16
16
}
17
17
18
- let URL : Foundation . URL
18
+ let url : URL
19
19
var task : URLSessionDataTask ?
20
20
var active = false
21
21
@@ -25,8 +25,8 @@ class Fetcher {
25
25
26
26
// MARK: - Initialization
27
27
28
- init ( URL : Foundation . URL ) {
29
- self . URL = URL
28
+ init ( url : URL ) {
29
+ self . url = url
30
30
}
31
31
32
32
// MARK: - Fetching
@@ -37,40 +37,42 @@ class Fetcher {
37
37
DispatchQueue . global ( qos: DispatchQoS . QoSClass. background) . async { [ weak self] in
38
38
guard let weakSelf = self , weakSelf. active else { return }
39
39
40
- weakSelf. task = weakSelf. session. dataTask ( with: weakSelf. URL , completionHandler: {
40
+ weakSelf. task = weakSelf. session. dataTask ( with: weakSelf. url , completionHandler: {
41
41
[ weak self] data, response, error -> Void in
42
42
43
43
guard let weakSelf = self , weakSelf. active else { return }
44
44
45
45
if let error = error {
46
- weakSelf. complete { completion ( . failure( error as! Fetcher . Error ) ) }
46
+ weakSelf. complete { completion ( . failure( error) ) }
47
47
return
48
48
}
49
49
50
50
guard let httpResponse = response as? HTTPURLResponse else {
51
- weakSelf. complete { completion ( . failure( Error . invalidResponse) ) }
51
+ weakSelf. complete { completion ( . failure( Failure . invalidResponse) ) }
52
52
return
53
53
}
54
54
55
55
guard httpResponse. statusCode == 200 else {
56
- weakSelf. complete { completion ( . failure( Error . invalidStatusCode) ) }
56
+ weakSelf. complete { completion ( . failure( Failure . invalidStatusCode) ) }
57
57
return
58
58
}
59
59
60
60
guard let data = data, httpResponse. validateLength ( data) else {
61
- weakSelf. complete { completion ( . failure( Error . invalidContentLength) ) }
61
+ weakSelf. complete { completion ( . failure( Failure . invalidContentLength) ) }
62
62
return
63
63
}
64
64
65
65
guard let decodedImage = Image . decode ( data) else {
66
- weakSelf. complete { completion ( . failure( Error . conversionError) ) }
66
+ weakSelf. complete { completion ( . failure( Failure . conversionError) ) }
67
67
return
68
68
}
69
69
70
70
let image = preprocess ( decodedImage)
71
71
72
72
if weakSelf. active {
73
- weakSelf. complete { completion ( Result . success ( image) ) }
73
+ weakSelf. complete {
74
+ completion ( Result . success ( image) )
75
+ }
74
76
}
75
77
} )
76
78
0 commit comments