trackerific 0.2.1 → 0.3.0
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.
- 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>
|