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.
@@ -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>