trackerific 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardoc/checksums +6 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/VERSION +1 -1
- data/doc/Trackerific.html +258 -0
- data/doc/Trackerific/Base.html +390 -0
- data/doc/Trackerific/Details.html +514 -0
- data/doc/Trackerific/Error.html +127 -0
- data/doc/Trackerific/Event.html +601 -0
- data/doc/Trackerific/FedEx.html +395 -0
- data/doc/Trackerific/UPS.html +360 -0
- data/doc/Trackerific/USPS.html +453 -0
- data/doc/_index.html +195 -0
- data/doc/class_list.html +47 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +320 -0
- data/doc/file.README.html +213 -0
- data/doc/file_list.html +49 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +213 -0
- data/doc/js/app.js +205 -0
- data/doc/js/full_list.js +150 -0
- data/doc/js/jquery.js +16 -0
- data/doc/method_list.html +206 -0
- data/doc/top-level-namespace.html +103 -0
- data/lib/fedex.rb +17 -7
- data/lib/trackerific.rb +16 -2
- data/lib/trackerific_details.rb +30 -0
- data/lib/trackerific_event.rb +38 -0
- data/lib/ups.rb +40 -14
- data/lib/usps.rb +28 -5
- data/spec/lib/fedex_spec.rb +8 -10
- data/spec/lib/trackerific_details_spec.rb +19 -0
- data/spec/lib/trackerific_event_spec.rb +20 -0
- data/spec/lib/ups_spec.rb +8 -6
- data/spec/lib/usps_spec.rb +8 -10
- data/trackerific.gemspec +32 -1
- metadata +35 -4
@@ -0,0 +1,213 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<title>
|
7
|
+
File: README
|
8
|
+
|
9
|
+
— Documentation by YARD 0.7.1
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
relpath = '';
|
19
|
+
if (relpath != '') relpath += '/';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
25
|
+
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script type="text/javascript" charset="utf-8">
|
30
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
+
</script>
|
32
|
+
|
33
|
+
<div id="header">
|
34
|
+
<div id="menu">
|
35
|
+
|
36
|
+
<a href="_index.html" title="Index">Index</a> »
|
37
|
+
<span class="title">File: README</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a id="class_list_link" href="#">Class List</a>
|
46
|
+
|
47
|
+
<a id="method_list_link" href="#">Method List</a>
|
48
|
+
|
49
|
+
<a id="file_list_link" href="#">File List</a>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
<div class="clear"></div>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<iframe id="search_frame"></iframe>
|
56
|
+
|
57
|
+
<div id="content"><div id='filecontents'><h2>Installation:</h2>
|
58
|
+
<p>
|
59
|
+
To use this gem, add this line to your Gemfile
|
60
|
+
</p>
|
61
|
+
<pre class="code">
|
62
|
+
<span class='id gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>trackerific</span><span class='tstring_end'>'</span></span>
|
63
|
+
</pre>
|
64
|
+
<p>
|
65
|
+
and then run
|
66
|
+
</p>
|
67
|
+
<pre class="code">
|
68
|
+
<span class='id bundle'>bundle</span> <span class='id install'>install</span>
|
69
|
+
</pre>
|
70
|
+
<h2>Usage:</h2>
|
71
|
+
<pre class="code">
|
72
|
+
<span class='comment'># Track a FedEx package:
|
73
|
+
</span> <span class='id fedex'>fedex</span> <span class='op'>=</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>FedEx</span><span class='period'>.</span><span class='id new'>new</span> <span class='symbol'>:account</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123456789</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:meter</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123456789</span><span class='tstring_end'>'</span></span>
|
74
|
+
<span class='id tracking_info'>tracking_info</span> <span class='op'>=</span> <span class='id fedex'>fedex</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>183689015000001</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
75
|
+
|
76
|
+
<span class='comment'># Track a USPS package:
|
77
|
+
</span> <span class='id usps'>usps</span> <span class='op'>=</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>USPS</span><span class='period'>.</span><span class='id new'>new</span> <span class='symbol'>:user_id</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123USERID4567</span><span class='tstring_end'>'</span></span>
|
78
|
+
<span class='id tracking_info'>tracking_info</span> <span class='op'>=</span> <span class='id usps'>usps</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
79
|
+
|
80
|
+
<span class='comment'># Track a UPS package:
|
81
|
+
</span> <span class='id ups'>ups</span> <span class='op'>=</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>UPS</span><span class='period'>.</span><span class='id new'>new</span> <span class='symbol'>:user_id</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>userid</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:key</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>kQdEJwuHBjtQ7g2</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:password</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>secret</span><span class='tstring_end'>'</span></span>
|
82
|
+
<span class='id tracking_info'>tracking_info</span> <span class='op'>=</span> <span class='id ups'>ups</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>1Z12345E0291980793</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
83
|
+
</pre>
|
84
|
+
<h3>Tracking Results</h3>
|
85
|
+
<p>
|
86
|
+
The tracking results for all three providers are returned in a Hash in this
|
87
|
+
format:
|
88
|
+
</p>
|
89
|
+
<pre class="code">
|
90
|
+
<span class='lbrace'>{</span>
|
91
|
+
<span class='symbol'>:package_id</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>the package id being tracked</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
92
|
+
<span class='symbol'>:summary</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>summary of the tracking results</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
93
|
+
<span class='symbol'>:details</span> <span class='op'>=></span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>array containing each tracking status by date</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
94
|
+
<span class='rbrace'>}</span>
|
95
|
+
</pre>
|
96
|
+
<p>
|
97
|
+
Here’s an example of how to print the tracking results out in a
|
98
|
+
readable format:
|
99
|
+
</p>
|
100
|
+
<pre class="code">
|
101
|
+
<span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Tracking information for package ID: %s</span><span class='tstring_end'>"</span></span> <span class='op'>%</span> <span class='id tracking_info'>tracking_info</span><span class='lbracket'>[</span><span class='symbol'>:package_id</span><span class='rbracket'>]</span>
|
102
|
+
<span class='id puts'>puts</span> <span class='id tracking_info'>tracking_info</span><span class='lbracket'>[</span><span class='symbol'>:summary</span><span class='rbracket'>]</span>
|
103
|
+
<span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'> * %s</span><span class='tstring_end'>"</span></span> <span class='op'>%</span> <span class='id tracking_info'>tracking_info</span><span class='lbracket'>[</span><span class='symbol'>:details</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n * </span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
104
|
+
|
105
|
+
</pre>
|
106
|
+
<p>
|
107
|
+
The above code would yield something that looks like this:
|
108
|
+
</p>
|
109
|
+
<pre class="code">
|
110
|
+
Tracking information for package ID: EJ958083578US
|
111
|
+
Your item was delivered at 8:10 am on June 1 in Wilmington DE 19801.
|
112
|
+
* May 30 11:07 am NOTICE LEFT WILMINGTON DE 19801.
|
113
|
+
* May 30 10:08 am ARRIVAL AT UNIT WILMINGTON DE 19850.
|
114
|
+
* May 29 9:55 am ACCEPT OR PICKUP EDGEWATER NJ 07020.
|
115
|
+
</pre>
|
116
|
+
<h3>Finding a Tracking Service Provider</h3>
|
117
|
+
<p>
|
118
|
+
If you do not know the tracking service provider of a package id, you can
|
119
|
+
use the tracking_service helper method to get a Trackerific class that most
|
120
|
+
likely will be able to track the given package id.
|
121
|
+
</p>
|
122
|
+
<pre class="code">
|
123
|
+
<span class='id include'>include</span> <span class='const'>Trackerific</span>
|
124
|
+
<span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>183689015000001</span><span class='tstring_end'>"</span></span> <span class='comment'># => Trackerific::FedEx
|
125
|
+
</span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>1Z12345E0291980793</span><span class='tstring_end'>"</span></span> <span class='comment'># => Trackerific::UPS
|
126
|
+
</span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>"</span></span> <span class='comment'># => Trackerific::USPS
|
127
|
+
</span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>unknown package id</span><span class='tstring_end'>"</span></span> <span class='comment'># => nil
|
128
|
+
</span></pre>
|
129
|
+
<h3>Exception handling:</h3>
|
130
|
+
<p>
|
131
|
+
Exception handling is esssential for tracking packages. If, for example,
|
132
|
+
you enter the wrong number, or the tracking provider has yet to have added
|
133
|
+
the tracking number to their system, a Trackerific::Error will be raised.
|
134
|
+
Here’s an example on how to handle Trackerific::Errors:
|
135
|
+
</p>
|
136
|
+
<pre class="code">
|
137
|
+
<span class='kw'>begin</span>
|
138
|
+
<span class='id usps'>usps</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
139
|
+
<span class='kw'>rescue</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>Error</span> <span class='op'>=></span> <span class='id e'>e</span>
|
140
|
+
<span class='id puts'>puts</span> <span class='id e'>e</span><span class='period'>.</span><span class='id message'>message</span>
|
141
|
+
<span class='kw'>end</span>
|
142
|
+
</pre>
|
143
|
+
<h2>Contributing to trackerific</h2>
|
144
|
+
<pre class="code">
|
145
|
+
|
146
|
+
</pre>
|
147
|
+
<ul>
|
148
|
+
<li><p>
|
149
|
+
Check out the latest master to make sure the feature hasn’t been
|
150
|
+
implemented
|
151
|
+
</p>
|
152
|
+
</li>
|
153
|
+
</ul>
|
154
|
+
<p>
|
155
|
+
or the bug hasn’t been fixed yet
|
156
|
+
</p>
|
157
|
+
<ul>
|
158
|
+
<li><p>
|
159
|
+
Check out the issue tracker to make sure someone already hasn’t
|
160
|
+
requested it
|
161
|
+
</p>
|
162
|
+
</li>
|
163
|
+
</ul>
|
164
|
+
<p>
|
165
|
+
and/or contributed it
|
166
|
+
</p>
|
167
|
+
<ul>
|
168
|
+
<li><p>
|
169
|
+
Fork the project
|
170
|
+
</p>
|
171
|
+
</li>
|
172
|
+
<li><p>
|
173
|
+
Start a feature/bugfix branch
|
174
|
+
</p>
|
175
|
+
</li>
|
176
|
+
<li><p>
|
177
|
+
Commit and push until you are happy with your contribution
|
178
|
+
</p>
|
179
|
+
</li>
|
180
|
+
<li><p>
|
181
|
+
Make sure to add tests for it. This is important so I don’t break it
|
182
|
+
in a
|
183
|
+
</p>
|
184
|
+
</li>
|
185
|
+
</ul>
|
186
|
+
<p>
|
187
|
+
future version unintentionally.
|
188
|
+
</p>
|
189
|
+
<ul>
|
190
|
+
<li><p>
|
191
|
+
Please try not to mess with the Rakefile, version, or history. If you want
|
192
|
+
to
|
193
|
+
</p>
|
194
|
+
</li>
|
195
|
+
</ul>
|
196
|
+
<p>
|
197
|
+
have your own version, or is otherwise necessary, that is fine, but please
|
198
|
+
isolate to its own commit so I can cherry-pick around it.
|
199
|
+
</p>
|
200
|
+
<h2>Copyright</h2>
|
201
|
+
<p>
|
202
|
+
Copyright © 2011 Travis Haynes. See LICENSE.txt for further details.
|
203
|
+
</p>
|
204
|
+
</div></div>
|
205
|
+
|
206
|
+
<div id="footer">
|
207
|
+
Generated on Mon Jun 13 13:53:33 2011 by
|
208
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
209
|
+
0.7.1 (ruby-1.9.2).
|
210
|
+
</div>
|
211
|
+
|
212
|
+
</body>
|
213
|
+
</html>
|
data/doc/file_list.html
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
|
7
|
+
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
|
9
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
14
|
+
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
16
|
+
|
17
|
+
|
18
|
+
<base id="base_target" target="_parent" />
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<script type="text/javascript" charset="utf-8">
|
22
|
+
if (window.top.frames.main) {
|
23
|
+
document.getElementById('base_target').target = 'main';
|
24
|
+
document.body.className = 'frames';
|
25
|
+
}
|
26
|
+
</script>
|
27
|
+
<div id="content">
|
28
|
+
<h1 id="full_list_header">File List</h1>
|
29
|
+
<div id="nav">
|
30
|
+
|
31
|
+
<a target="_self" href="class_list.html">Classes</a>
|
32
|
+
|
33
|
+
<a target="_self" href="method_list.html">Methods</a>
|
34
|
+
|
35
|
+
<a target="_self" href="file_list.html">Files</a>
|
36
|
+
|
37
|
+
</div>
|
38
|
+
<div id="search">Search: <input type="text" /></div>
|
39
|
+
|
40
|
+
<ul id="full_list" class="files">
|
41
|
+
|
42
|
+
|
43
|
+
<li class="r1"><a href="index.html" title="README">README</a></li>
|
44
|
+
|
45
|
+
|
46
|
+
</ul>
|
47
|
+
</div>
|
48
|
+
</body>
|
49
|
+
</html>
|
data/doc/frames.html
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
|
+
<title>Documentation by YARD 0.7.1</title>
|
8
|
+
</head>
|
9
|
+
<frameset cols="20%,*">
|
10
|
+
<frame name="list" src="class_list.html" />
|
11
|
+
<frame name="main" src="index.html" />
|
12
|
+
</frameset>
|
13
|
+
</html>
|
data/doc/index.html
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<title>
|
7
|
+
File: README
|
8
|
+
|
9
|
+
— Documentation by YARD 0.7.1
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
relpath = '';
|
19
|
+
if (relpath != '') relpath += '/';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
25
|
+
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script type="text/javascript" charset="utf-8">
|
30
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
+
</script>
|
32
|
+
|
33
|
+
<div id="header">
|
34
|
+
<div id="menu">
|
35
|
+
|
36
|
+
<a href="_index.html" title="Index">Index</a> »
|
37
|
+
<span class="title">File: README</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a id="class_list_link" href="#">Class List</a>
|
46
|
+
|
47
|
+
<a id="method_list_link" href="#">Method List</a>
|
48
|
+
|
49
|
+
<a id="file_list_link" href="#">File List</a>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
<div class="clear"></div>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<iframe id="search_frame"></iframe>
|
56
|
+
|
57
|
+
<div id="content"><div id='filecontents'><h2>Installation:</h2>
|
58
|
+
<p>
|
59
|
+
To use this gem, add this line to your Gemfile
|
60
|
+
</p>
|
61
|
+
<pre class="code">
|
62
|
+
<span class='id gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>trackerific</span><span class='tstring_end'>'</span></span>
|
63
|
+
</pre>
|
64
|
+
<p>
|
65
|
+
and then run
|
66
|
+
</p>
|
67
|
+
<pre class="code">
|
68
|
+
<span class='id bundle'>bundle</span> <span class='id install'>install</span>
|
69
|
+
</pre>
|
70
|
+
<h2>Usage:</h2>
|
71
|
+
<pre class="code">
|
72
|
+
<span class='comment'># Track a FedEx package:
|
73
|
+
</span> <span class='id fedex'>fedex</span> <span class='op'>=</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>FedEx</span><span class='period'>.</span><span class='id new'>new</span> <span class='symbol'>:account</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123456789</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:meter</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123456789</span><span class='tstring_end'>'</span></span>
|
74
|
+
<span class='id tracking_info'>tracking_info</span> <span class='op'>=</span> <span class='id fedex'>fedex</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>183689015000001</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
75
|
+
|
76
|
+
<span class='comment'># Track a USPS package:
|
77
|
+
</span> <span class='id usps'>usps</span> <span class='op'>=</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>USPS</span><span class='period'>.</span><span class='id new'>new</span> <span class='symbol'>:user_id</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123USERID4567</span><span class='tstring_end'>'</span></span>
|
78
|
+
<span class='id tracking_info'>tracking_info</span> <span class='op'>=</span> <span class='id usps'>usps</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
79
|
+
|
80
|
+
<span class='comment'># Track a UPS package:
|
81
|
+
</span> <span class='id ups'>ups</span> <span class='op'>=</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>UPS</span><span class='period'>.</span><span class='id new'>new</span> <span class='symbol'>:user_id</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>userid</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:key</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>kQdEJwuHBjtQ7g2</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='symbol'>:password</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>secret</span><span class='tstring_end'>'</span></span>
|
82
|
+
<span class='id tracking_info'>tracking_info</span> <span class='op'>=</span> <span class='id ups'>ups</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>1Z12345E0291980793</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
83
|
+
</pre>
|
84
|
+
<h3>Tracking Results</h3>
|
85
|
+
<p>
|
86
|
+
The tracking results for all three providers are returned in a Hash in this
|
87
|
+
format:
|
88
|
+
</p>
|
89
|
+
<pre class="code">
|
90
|
+
<span class='lbrace'>{</span>
|
91
|
+
<span class='symbol'>:package_id</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>the package id being tracked</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
92
|
+
<span class='symbol'>:summary</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>summary of the tracking results</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
93
|
+
<span class='symbol'>:details</span> <span class='op'>=></span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>array containing each tracking status by date</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
94
|
+
<span class='rbrace'>}</span>
|
95
|
+
</pre>
|
96
|
+
<p>
|
97
|
+
Here’s an example of how to print the tracking results out in a
|
98
|
+
readable format:
|
99
|
+
</p>
|
100
|
+
<pre class="code">
|
101
|
+
<span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Tracking information for package ID: %s</span><span class='tstring_end'>"</span></span> <span class='op'>%</span> <span class='id tracking_info'>tracking_info</span><span class='lbracket'>[</span><span class='symbol'>:package_id</span><span class='rbracket'>]</span>
|
102
|
+
<span class='id puts'>puts</span> <span class='id tracking_info'>tracking_info</span><span class='lbracket'>[</span><span class='symbol'>:summary</span><span class='rbracket'>]</span>
|
103
|
+
<span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'> * %s</span><span class='tstring_end'>"</span></span> <span class='op'>%</span> <span class='id tracking_info'>tracking_info</span><span class='lbracket'>[</span><span class='symbol'>:details</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n * </span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
104
|
+
|
105
|
+
</pre>
|
106
|
+
<p>
|
107
|
+
The above code would yield something that looks like this:
|
108
|
+
</p>
|
109
|
+
<pre class="code">
|
110
|
+
Tracking information for package ID: EJ958083578US
|
111
|
+
Your item was delivered at 8:10 am on June 1 in Wilmington DE 19801.
|
112
|
+
* May 30 11:07 am NOTICE LEFT WILMINGTON DE 19801.
|
113
|
+
* May 30 10:08 am ARRIVAL AT UNIT WILMINGTON DE 19850.
|
114
|
+
* May 29 9:55 am ACCEPT OR PICKUP EDGEWATER NJ 07020.
|
115
|
+
</pre>
|
116
|
+
<h3>Finding a Tracking Service Provider</h3>
|
117
|
+
<p>
|
118
|
+
If you do not know the tracking service provider of a package id, you can
|
119
|
+
use the tracking_service helper method to get a Trackerific class that most
|
120
|
+
likely will be able to track the given package id.
|
121
|
+
</p>
|
122
|
+
<pre class="code">
|
123
|
+
<span class='id include'>include</span> <span class='const'>Trackerific</span>
|
124
|
+
<span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>183689015000001</span><span class='tstring_end'>"</span></span> <span class='comment'># => Trackerific::FedEx
|
125
|
+
</span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>1Z12345E0291980793</span><span class='tstring_end'>"</span></span> <span class='comment'># => Trackerific::UPS
|
126
|
+
</span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>"</span></span> <span class='comment'># => Trackerific::USPS
|
127
|
+
</span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>unknown package id</span><span class='tstring_end'>"</span></span> <span class='comment'># => nil
|
128
|
+
</span></pre>
|
129
|
+
<h3>Exception handling:</h3>
|
130
|
+
<p>
|
131
|
+
Exception handling is esssential for tracking packages. If, for example,
|
132
|
+
you enter the wrong number, or the tracking provider has yet to have added
|
133
|
+
the tracking number to their system, a Trackerific::Error will be raised.
|
134
|
+
Here’s an example on how to handle Trackerific::Errors:
|
135
|
+
</p>
|
136
|
+
<pre class="code">
|
137
|
+
<span class='kw'>begin</span>
|
138
|
+
<span class='id usps'>usps</span><span class='period'>.</span><span class='id track_package'>track_package</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
139
|
+
<span class='kw'>rescue</span> <span class='const'>Trackerific</span><span class='op'>::</span><span class='const'>Error</span> <span class='op'>=></span> <span class='id e'>e</span>
|
140
|
+
<span class='id puts'>puts</span> <span class='id e'>e</span><span class='period'>.</span><span class='id message'>message</span>
|
141
|
+
<span class='kw'>end</span>
|
142
|
+
</pre>
|
143
|
+
<h2>Contributing to trackerific</h2>
|
144
|
+
<pre class="code">
|
145
|
+
|
146
|
+
</pre>
|
147
|
+
<ul>
|
148
|
+
<li><p>
|
149
|
+
Check out the latest master to make sure the feature hasn’t been
|
150
|
+
implemented
|
151
|
+
</p>
|
152
|
+
</li>
|
153
|
+
</ul>
|
154
|
+
<p>
|
155
|
+
or the bug hasn’t been fixed yet
|
156
|
+
</p>
|
157
|
+
<ul>
|
158
|
+
<li><p>
|
159
|
+
Check out the issue tracker to make sure someone already hasn’t
|
160
|
+
requested it
|
161
|
+
</p>
|
162
|
+
</li>
|
163
|
+
</ul>
|
164
|
+
<p>
|
165
|
+
and/or contributed it
|
166
|
+
</p>
|
167
|
+
<ul>
|
168
|
+
<li><p>
|
169
|
+
Fork the project
|
170
|
+
</p>
|
171
|
+
</li>
|
172
|
+
<li><p>
|
173
|
+
Start a feature/bugfix branch
|
174
|
+
</p>
|
175
|
+
</li>
|
176
|
+
<li><p>
|
177
|
+
Commit and push until you are happy with your contribution
|
178
|
+
</p>
|
179
|
+
</li>
|
180
|
+
<li><p>
|
181
|
+
Make sure to add tests for it. This is important so I don’t break it
|
182
|
+
in a
|
183
|
+
</p>
|
184
|
+
</li>
|
185
|
+
</ul>
|
186
|
+
<p>
|
187
|
+
future version unintentionally.
|
188
|
+
</p>
|
189
|
+
<ul>
|
190
|
+
<li><p>
|
191
|
+
Please try not to mess with the Rakefile, version, or history. If you want
|
192
|
+
to
|
193
|
+
</p>
|
194
|
+
</li>
|
195
|
+
</ul>
|
196
|
+
<p>
|
197
|
+
have your own version, or is otherwise necessary, that is fine, but please
|
198
|
+
isolate to its own commit so I can cherry-pick around it.
|
199
|
+
</p>
|
200
|
+
<h2>Copyright</h2>
|
201
|
+
<p>
|
202
|
+
Copyright © 2011 Travis Haynes. See LICENSE.txt for further details.
|
203
|
+
</p>
|
204
|
+
</div></div>
|
205
|
+
|
206
|
+
<div id="footer">
|
207
|
+
Generated on Mon Jun 13 13:53:33 2011 by
|
208
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
209
|
+
0.7.1 (ruby-1.9.2).
|
210
|
+
</div>
|
211
|
+
|
212
|
+
</body>
|
213
|
+
</html>
|