1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.jclouds.blobstore.functions;
21
22 import static com.google.common.base.Preconditions.checkNotNull;
23
24 import java.util.Date;
25
26 import javax.inject.Inject;
27 import javax.inject.Singleton;
28
29 import org.jclouds.blobstore.options.GetOptions;
30 import org.jclouds.date.DateService;
31 import org.jclouds.util.Strings2;
32
33 import com.google.common.base.Function;
34
35
36
37
38
39 @Singleton
40 public class HttpGetOptionsListToGetOptions implements
41 Function<org.jclouds.http.options.GetOptions[], org.jclouds.blobstore.options.GetOptions> {
42 private final DateService dateService;
43
44 @Inject
45 HttpGetOptionsListToGetOptions(DateService dateService) {
46 this.dateService = checkNotNull(dateService, "dateService");
47 }
48
49 public GetOptions apply(org.jclouds.http.options.GetOptions[] from) {
50 checkNotNull(from, "options");
51
52 org.jclouds.blobstore.options.GetOptions to = new org.jclouds.blobstore.options.GetOptions();
53 if (from.length != 0) {
54 if (from[0].getIfMatch() != null) {
55 to.ifETagMatches(Strings2.replaceAll(from[0].getIfMatch(), '"', ""));
56 }
57 if (from[0].getIfModifiedSince() != null) {
58 Date time = dateService.rfc822DateParse(from[0].getIfModifiedSince());
59 to.ifModifiedSince(time);
60 }
61 if (from[0].getIfNoneMatch() != null) {
62 to.ifETagDoesntMatch(Strings2.replaceAll(from[0].getIfNoneMatch(), '"', ""));
63 }
64 if (from[0].getIfUnmodifiedSince() != null) {
65 Date time = dateService.rfc822DateParse(from[0].getIfUnmodifiedSince());
66 to.ifUnmodifiedSince(time);
67 }
68 for (String range : from[0].getRanges()) {
69 String[] firstLast = range.split("\\-");
70 to.range(Long.parseLong(firstLast[0]), Long.parseLong(firstLast[1]));
71 }
72 }
73 return to;
74 }
75
76 }