trackerific 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+ &mdash; 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> &raquo;
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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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&#8217;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'>&quot;</span><span class='tstring_content'>Tracking information for package ID: %s</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'> * %s</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>\n * </span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>183689015000001</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; Trackerific::FedEx
125
+ </span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1Z12345E0291980793</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; Trackerific::UPS
126
+ </span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; Trackerific::USPS
127
+ </span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>unknown package id</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; 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&#8217;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'>=&gt;</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&#8217;t been
150
+ implemented
151
+ </p>
152
+ </li>
153
+ </ul>
154
+ <p>
155
+ or the bug hasn&#8217;t been fixed yet
156
+ </p>
157
+ <ul>
158
+ <li><p>
159
+ Check out the issue tracker to make sure someone already hasn&#8217;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&#8217;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 &#169; 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>
@@ -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
+ &mdash; 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> &raquo;
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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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'>=&gt;</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&#8217;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'>&quot;</span><span class='tstring_content'>Tracking information for package ID: %s</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'> * %s</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>\n * </span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>183689015000001</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; Trackerific::FedEx
125
+ </span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1Z12345E0291980793</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; Trackerific::UPS
126
+ </span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EJ958083578US</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; Trackerific::USPS
127
+ </span> <span class='id tracking_service'>tracking_service</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>unknown package id</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># =&gt; 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&#8217;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'>=&gt;</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&#8217;t been
150
+ implemented
151
+ </p>
152
+ </li>
153
+ </ul>
154
+ <p>
155
+ or the bug hasn&#8217;t been fixed yet
156
+ </p>
157
+ <ul>
158
+ <li><p>
159
+ Check out the issue tracker to make sure someone already hasn&#8217;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&#8217;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 &#169; 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>