dsj_sms 0.0.2

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bf6240bea73c4c8c5ae883f7fc8f1a63defafd0d
4
+ data.tar.gz: d2206db1ca6e3c47037dd1225e353a31794ae23f
5
+ SHA512:
6
+ metadata.gz: f602126e442e8b9a17273a5570ef43121b0e4e106d2a87dd52ac6661e63a15088b47e4a499937da7304411d1a00ef88b96941329e8562829483a8e4083e8df8d
7
+ data.tar.gz: bfe77b9e851552c548aea79554439198786bd8065d3bd4c38e7ea6abff13afa52138c58557aaaa3fe87064c6c6fb6c70a4cab961578208e6e181523cfb2a8993
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in dsj_sms.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 menghuanwd
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.html ADDED
@@ -0,0 +1,1018 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><style>body {
2
+ width: 45em;
3
+ border: 1px solid #ddd;
4
+ outline: 1300px solid #fff;
5
+ margin: 16px auto;
6
+ }
7
+
8
+ body .markdown-body
9
+ {
10
+ padding: 30px;
11
+ }
12
+
13
+ @font-face {
14
+ font-family: fontawesome-mini;
15
+ src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAzUABAAAAAAFNgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABwAAAAcZMzaOEdERUYAAAGIAAAAHQAAACAAOQAET1MvMgAAAagAAAA+AAAAYHqhde9jbWFwAAAB6AAAAFIAAAFa4azkLWN2dCAAAAI8AAAAKAAAACgFgwioZnBnbQAAAmQAAAGxAAACZVO0L6dnYXNwAAAEGAAAAAgAAAAIAAAAEGdseWYAAAQgAAAFDgAACMz7eroHaGVhZAAACTAAAAAwAAAANgWEOEloaGVhAAAJYAAAAB0AAAAkDGEGa2htdHgAAAmAAAAAEwAAADBEgAAQbG9jYQAACZQAAAAaAAAAGgsICJBtYXhwAAAJsAAAACAAAAAgASgBD25hbWUAAAnQAAACZwAABOD4no+3cG9zdAAADDgAAABsAAAAmF+yXM9wcmVwAAAMpAAAAC4AAAAusPIrFAAAAAEAAAAAyYlvMQAAAADLVHQgAAAAAM/u9uZ4nGNgZGBg4ANiCQYQYGJgBEJuIGYB8xgABMMAPgAAAHicY2Bm42OcwMDKwMLSw2LMwMDQBqGZihmiwHycoKCyqJjB4YPDh4NsDP+BfNb3DIuAFCOSEgUGRgAKDgt4AAB4nGNgYGBmgGAZBkYGEAgB8hjBfBYGCyDNxcDBwMTA9MHhQ9SHrA8H//9nYACyQyFs/sP86/kX8HtB9UIBIxsDXICRCUgwMaACRoZhDwA3fxKSAAAAAAHyAHABJQB/AIEAdAFGAOsBIwC/ALgAxACGAGYAugBNACcA/wCIeJxdUbtOW0EQ3Q0PA4HE2CA52hSzmZDGe6EFCcTVjWJkO4XlCGk3cpGLcQEfQIFEDdqvGaChpEibBiEXSHxCPiESM2uIojQ7O7NzzpkzS8qRqnfpa89T5ySQwt0GzTb9Tki1swD3pOvrjYy0gwdabGb0ynX7/gsGm9GUO2oA5T1vKQ8ZTTuBWrSn/tH8Cob7/B/zOxi0NNP01DoJ6SEE5ptxS4PvGc26yw/6gtXhYjAwpJim4i4/plL+tzTnasuwtZHRvIMzEfnJNEBTa20Emv7UIdXzcRRLkMumsTaYmLL+JBPBhcl0VVO1zPjawV2ys+hggyrNgQfYw1Z5DB4ODyYU0rckyiwNEfZiq8QIEZMcCjnl3Mn+pED5SBLGvElKO+OGtQbGkdfAoDZPs/88m01tbx3C+FkcwXe/GUs6+MiG2hgRYjtiKYAJREJGVfmGGs+9LAbkUvvPQJSA5fGPf50ItO7YRDyXtXUOMVYIen7b3PLLirtWuc6LQndvqmqo0inN+17OvscDnh4Lw0FjwZvP+/5Kgfo8LK40aA4EQ3o3ev+iteqIq7wXPrIn07+xWgAAAAABAAH//wAPeJyFlctvG1UUh+/12DPN1B7P3JnYjj2Ox4/MuDHxJH5N3UdaEUQLqBIkfQQioJWQ6AMEQkIqsPGCPwA1otuWSmTBhjtps2ADWbJg3EpIXbGouqSbCraJw7kzNo2dRN1cnXN1ZvT7zuuiMEI7ncizyA0URofRBJpCdbQuIFShYY+GZRrxMDVtih5TwQPHtXDFFSIKoWIbuREBjLH27Ny4MsbVx+uOJThavebgVrNRLAiYx06rXsvhxLgWx9xpfHdrs/ekc2Pl2cpPCVEITQpwbj8VQhfXSq2m+Wxqaq2D73Kne5e3NjHqQNj3CRYlJlgUl/jRNP+2Gs2pNYRQiOnmUaQDqm30KqKiTTWPWjboxnTWpvgxjXo0KrtZXAHt7hwIz0YVcj88JnKlJKi3NPAwLyDwZudSmJSMMJFDYaOkaol6XtESx3Gt1VTytdZJ3DCLeaVhVnCBH1fycHTxFXwPX+l2e3d6H/TufGGmMTLTnbSJUdo00zuBswMO/nl3YLeL/wnu9/limCuD3vC54h5NBVz6Li414AI8Vx3iiosKcQXUbrvhFFiYb++HN4DaF4XzFW0fIN4XDWJ3a3XQoq9V8WiyRmdsatV9xUcHims1JloH0YUa090G3Tro3mC6c01f+YwCPquINr1PTaCP6rVTOOmf0GE2dBc7zWIhji3/5MchSuBHgDbU99RMWt3YUNMZMJmx92YP6NsHx/5/M1yvInpnkIOM3Z8fA3JQ2lW1RFC1KaBPDFXNAHYYvGy73aYZZZ3HifbeuiVZCpwA3oQBs0wGPYJbJfg60xrKEbKiNtTe1adwrpBRwlAuQ3q3VRaX0QmQ9a49BTSCuF1MLfQ6+tinOubRBZuWPNoMevGMT+V41KitO1is3D/tpMcq1JHZqDHGs8DoYGDkxJgKjHROeTCmhZvzPm9pod+ltKm4PN7Dyvvldlpsg8D+4AUJZ3F/JBstZz7cbFRxsaAGV6yX/dkcycWf8eS3QlQea+YLjdm3yrOnrhFpUyKVvFE4lpv4bO3Svx/6F/4xmiDu/RT5iI++lko18mY1oX+5UGKR6kmVjM/Zb76yfHtxy+h/SyQ0lLdpdKy/lWB6szatetQJ8nZ80A2Qt6ift6gJeavU3BO4gtxs/KCtNPVibCtYCWY3SIlSBPKXZALXiIR9oZeJ1AuMyxLpHIy/yO7vSiSE+kZvk0ihJ30HgHfzZtEMmvV58x6dtqns0XTAW7Vdm4HJ04OCp/crOO7rd9SGxQAE/mVA9xRN+kVSMRFF6S9JFGUtthkjBA5tFCWc2l4V43Ex9GmUP3SI37Jjmir9KqlaDJ4S4JB3vuM/jzyH1+8MuoZ+QGzfnvPoJb96cZlWjMcKLfgDwB7E634JTY+asjsPzS5CiVnEWY+KsrsIN5rn3mAPjqmQBxGjcGKB9f9ZxY3mYC2L85CJ2FXIxKKyHk+dg0FHbuEc7D5NzWUX32WxFcWNGRAbvwSx0RmIXVDuYySafluQBmzA/ssqJAMLnli+WIC90Gw4lm85wcp0qjArEDPJJV/sSx4P9ungTpgMw5gVC1XO4uULq0s3v1rqLi0vX/z65vlH50f8T/RHmSPTk5xxWBWOluMT6WiOy+tdvWxlV/XQb3o3c6Ssr+r6I708GsX9/nzp1tKFh0s3v7m4vAy/Hnb/KMOvc1wump6Il48K6mGDy02X9Yd65pa+nQIjk76lWxCkG8NBCP0HQS9IpAAAeJxjYGRgYGBhcCrq214Qz2/zlUGenQEEzr/77oug/zewFbB+AHI5GJhAogBwKQ0qeJxjYGRgYH3/P46BgZ0BBNgKGBgZUAEPAE/7At0AAAB4nGNngAB2IGYjhBsYBAAIYADVAAAAAAAAAAAAAFwAyAEeAaACCgKmAx4DggRmAAAAAQAAAAwAagAEAAAAAAACAAEAAgAWAAABAAChAAAAAHiclZI7bxQxFIWPd/JkUYQChEhIyAVKgdBMskm1QkKrRETpQiLRUczueB/K7HhlOxttg8LvoKPgP9DxFxANDR0tHRWi4NjrPIBEgh1p/dm+vufcawNYFWsQmP6e4jSyQB2fI9cwj++RE9wTjyPP4LYoI89iWbyLPIe6+Bh5Hs9rryMv4GbtW+RF3EhuRa7jbrIbeQkPkjdUETOLnL0Kip4FVvAhco1RXyMnSPEz8gzWxE7kWTwUp5HnsCLeR57HW/El8gJWa58iL+JO7UfkOh4l9yMv4UnyEtvQGGECgwF66MNBooF1bGCL1ELB/TYU+ZBRlvsKQ44Se6jQ4a7hef+fh72Crv25kp+8lNWGmeKoOI5jJLb1aGIGvb6TjfWNLdkqdFvJw4l1amjlXtXRZqRN7lSRylZZyhBqpVFWmTEXgWfUrpi/hZOQXdOd4rKuXOtEWT3k5IArPRzTUU5tHKjecZkTpnVbNOnt6jzN8240GD4xtikvZW56043rPMg/dS+dlOceXoR+WPbJ55Dsekq1lJpnypsMUsYOdCW30o103Ytu/lvh+5RWFLfBjm9/N8hJntPhvx92rnoE/kyHdGasGy754kw36vsVf/lFeBi+0COu+cfgQr42G3CRpeLoZ53gmfe3X6rcKt5oVxnptHR9JS8ehVUd5wvvahN2uqxOOpMXapibI5k7Zwbt4xBSaTfoKBufhAnO/uqNcfK8OTs0OQ6l7JIqFjDhYj5WcjevCnI/1DDiI8j4ndWb/5YzDZWh79yomWXeXj7Nnw70/2TIeFPTrlSh89k1ObOSRVZWZfgF0r/zJQB4nG2JUQuCQBCEd07TTg36fb2IyBaLd3vWaUh/vmSJnvpgmG8YcmS8X3Shf3R7QA4OBUocUKHGER5NNbOOEvwc1txnuWkTRb/aPjimJ5vXabI+3VfOiyS15UWvyezM2xiGOPyuMohOH8O8JiO4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAA=) format('woff');
16
+ }
17
+
18
+ @font-face {
19
+ font-family: octicons-anchor;
20
+ src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
21
+ }
22
+
23
+ .markdown-body {
24
+ font-family: sans-serif;
25
+ -ms-text-size-adjust: 100%;
26
+ -webkit-text-size-adjust: 100%;
27
+ color: #333333;
28
+ overflow: hidden;
29
+ font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
30
+ font-size: 16px;
31
+ line-height: 1.6;
32
+ word-wrap: break-word;
33
+ }
34
+
35
+ .markdown-body a {
36
+ background: transparent;
37
+ }
38
+
39
+ .markdown-body a:active,
40
+ .markdown-body a:hover {
41
+ outline: 0;
42
+ }
43
+
44
+ .markdown-body b,
45
+ .markdown-body strong {
46
+ font-weight: bold;
47
+ }
48
+
49
+ .markdown-body mark {
50
+ background: #ff0;
51
+ color: #000;
52
+ font-style: italic;
53
+ font-weight: bold;
54
+ }
55
+
56
+ .markdown-body sub,
57
+ .markdown-body sup {
58
+ font-size: 75%;
59
+ line-height: 0;
60
+ position: relative;
61
+ vertical-align: baseline;
62
+ }
63
+ .markdown-body sup {
64
+ top: -0.5em;
65
+ }
66
+ .markdown-body sub {
67
+ bottom: -0.25em;
68
+ }
69
+
70
+ .markdown-body h1 {
71
+ font-size: 2em;
72
+ margin: 0.67em 0;
73
+ }
74
+
75
+ .markdown-body img {
76
+ border: 0;
77
+ }
78
+
79
+ .markdown-body hr {
80
+ -moz-box-sizing: content-box;
81
+ box-sizing: content-box;
82
+ height: 0;
83
+ }
84
+
85
+ .markdown-body pre {
86
+ overflow: auto;
87
+ }
88
+
89
+ .markdown-body code,
90
+ .markdown-body kbd,
91
+ .markdown-body pre,
92
+ .markdown-body samp {
93
+ font-family: monospace, monospace;
94
+ font-size: 1em;
95
+ }
96
+
97
+ .markdown-body input {
98
+ color: inherit;
99
+ font: inherit;
100
+ margin: 0;
101
+ }
102
+
103
+ .markdown-body html input[disabled] {
104
+ cursor: default;
105
+ }
106
+
107
+ .markdown-body input {
108
+ line-height: normal;
109
+ }
110
+
111
+ .markdown-body input[type="checkbox"] {
112
+ box-sizing: border-box;
113
+ padding: 0;
114
+ }
115
+
116
+ .markdown-body table {
117
+ border-collapse: collapse;
118
+ border-spacing: 0;
119
+ }
120
+
121
+ .markdown-body td,
122
+ .markdown-body th {
123
+ padding: 0;
124
+ }
125
+
126
+ .markdown-body .codehilitetable {
127
+ border: 0;
128
+ border-spacing: 0;
129
+ }
130
+
131
+ .markdown-body .codehilitetable tr {
132
+ border: 0;
133
+ }
134
+
135
+ .markdown-body .codehilitetable pre,
136
+ .markdown-body div.codehilite {
137
+ margin: 0;
138
+ }
139
+
140
+ .markdown-body .linenos,
141
+ .markdown-body .code,
142
+ .markdown-body .codehilitetable td {
143
+ border: 0;
144
+ padding: 0;
145
+ }
146
+
147
+ .markdown-body td:not(.linenos) .linenodiv {
148
+ padding: 0 !important;
149
+ }
150
+
151
+ .markdown-body .code {
152
+ width: 100%;
153
+ }
154
+
155
+ .markdown-body .linenos div pre,
156
+ .markdown-body .linenodiv pre,
157
+ .markdown-body .linenodiv {
158
+ border: 0;
159
+ -webkit-border-radius: 0;
160
+ -moz-border-radius: 0;
161
+ border-radius: 0;
162
+ -webkit-border-top-left-radius: 3px;
163
+ -webkit-border-bottom-left-radius: 3px;
164
+ -moz-border-radius-topleft: 3px;
165
+ -moz-border-radius-bottomleft: 3px;
166
+ border-top-left-radius: 3px;
167
+ border-bottom-left-radius: 3px;
168
+ }
169
+
170
+ .markdown-body .code div pre,
171
+ .markdown-body .code div {
172
+ border: 0;
173
+ -webkit-border-radius: 0;
174
+ -moz-border-radius: 0;
175
+ border-radius: 0;
176
+ -webkit-border-top-right-radius: 3px;
177
+ -webkit-border-bottom-right-radius: 3px;
178
+ -moz-border-radius-topright: 3px;
179
+ -moz-border-radius-bottomright: 3px;
180
+ border-top-right-radius: 3px;
181
+ border-bottom-right-radius: 3px;
182
+ }
183
+
184
+ .markdown-body * {
185
+ -moz-box-sizing: border-box;
186
+ box-sizing: border-box;
187
+ }
188
+
189
+ .markdown-body input {
190
+ font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
191
+ line-height: 1.4;
192
+ }
193
+
194
+ .markdown-body a {
195
+ color: #4183c4;
196
+ text-decoration: none;
197
+ }
198
+
199
+ .markdown-body a:hover,
200
+ .markdown-body a:focus,
201
+ .markdown-body a:active {
202
+ text-decoration: underline;
203
+ }
204
+
205
+ .markdown-body hr {
206
+ height: 0;
207
+ margin: 15px 0;
208
+ overflow: hidden;
209
+ background: transparent;
210
+ border: 0;
211
+ border-bottom: 1px solid #ddd;
212
+ }
213
+
214
+ .markdown-body hr:before,
215
+ .markdown-body hr:after {
216
+ display: table;
217
+ content: " ";
218
+ }
219
+
220
+ .markdown-body hr:after {
221
+ clear: both;
222
+ }
223
+
224
+ .markdown-body h1,
225
+ .markdown-body h2,
226
+ .markdown-body h3,
227
+ .markdown-body h4,
228
+ .markdown-body h5,
229
+ .markdown-body h6 {
230
+ margin-top: 15px;
231
+ margin-bottom: 15px;
232
+ line-height: 1.1;
233
+ }
234
+
235
+ .markdown-body h1 {
236
+ font-size: 30px;
237
+ }
238
+
239
+ .markdown-body h2 {
240
+ font-size: 21px;
241
+ }
242
+
243
+ .markdown-body h3 {
244
+ font-size: 16px;
245
+ }
246
+
247
+ .markdown-body h4 {
248
+ font-size: 14px;
249
+ }
250
+
251
+ .markdown-body h5 {
252
+ font-size: 12px;
253
+ }
254
+
255
+ .markdown-body h6 {
256
+ font-size: 11px;
257
+ }
258
+
259
+ .markdown-body blockquote {
260
+ margin: 0;
261
+ }
262
+
263
+ .markdown-body ul,
264
+ .markdown-body ol {
265
+ padding: 0;
266
+ margin-top: 0;
267
+ margin-bottom: 0;
268
+ }
269
+
270
+ .markdown-body ol ol,
271
+ .markdown-body ul ol {
272
+ list-style-type: lower-roman;
273
+ }
274
+
275
+ .markdown-body ul ul ol,
276
+ .markdown-body ul ol ol,
277
+ .markdown-body ol ul ol,
278
+ .markdown-body ol ol ol {
279
+ list-style-type: lower-alpha;
280
+ }
281
+
282
+ .markdown-body dd {
283
+ margin-left: 0;
284
+ }
285
+
286
+ .markdown-body code,
287
+ .markdown-body pre,
288
+ .markdown-body samp {
289
+ font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
290
+ font-size: 12px;
291
+ }
292
+
293
+ .markdown-body pre {
294
+ margin-top: 0;
295
+ margin-bottom: 0;
296
+ }
297
+
298
+ .markdown-body kbd {
299
+ background-color: #e7e7e7;
300
+ background-image: -moz-linear-gradient(#fefefe, #e7e7e7);
301
+ background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
302
+ background-image: linear-gradient(#fefefe, #e7e7e7);
303
+ background-repeat: repeat-x;
304
+ border-radius: 2px;
305
+ border: 1px solid #cfcfcf;
306
+ color: #000;
307
+ padding: 3px 5px;
308
+ line-height: 10px;
309
+ font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
310
+ display: inline-block;
311
+ }
312
+
313
+ .markdown-body>*:first-child {
314
+ margin-top: 0 !important;
315
+ }
316
+
317
+ .markdown-body>*:last-child {
318
+ margin-bottom: 0 !important;
319
+ }
320
+
321
+ .markdown-body .headeranchor-link {
322
+ position: absolute;
323
+ top: 0;
324
+ bottom: 0;
325
+ left: 0;
326
+ display: block;
327
+ padding-right: 6px;
328
+ padding-left: 30px;
329
+ margin-left: -30px;
330
+ }
331
+
332
+ .markdown-body .headeranchor-link:focus {
333
+ outline: none;
334
+ }
335
+
336
+ .markdown-body h1,
337
+ .markdown-body h2,
338
+ .markdown-body h3,
339
+ .markdown-body h4,
340
+ .markdown-body h5,
341
+ .markdown-body h6 {
342
+ position: relative;
343
+ margin-top: 1em;
344
+ margin-bottom: 16px;
345
+ font-weight: bold;
346
+ line-height: 1.4;
347
+ }
348
+
349
+ .markdown-body h1 .headeranchor,
350
+ .markdown-body h2 .headeranchor,
351
+ .markdown-body h3 .headeranchor,
352
+ .markdown-body h4 .headeranchor,
353
+ .markdown-body h5 .headeranchor,
354
+ .markdown-body h6 .headeranchor {
355
+ display: none;
356
+ color: #000;
357
+ vertical-align: middle;
358
+ }
359
+
360
+ .markdown-body h1:hover .headeranchor-link,
361
+ .markdown-body h2:hover .headeranchor-link,
362
+ .markdown-body h3:hover .headeranchor-link,
363
+ .markdown-body h4:hover .headeranchor-link,
364
+ .markdown-body h5:hover .headeranchor-link,
365
+ .markdown-body h6:hover .headeranchor-link {
366
+ height: 1em;
367
+ padding-left: 8px;
368
+ margin-left: -30px;
369
+ line-height: 1;
370
+ text-decoration: none;
371
+ }
372
+
373
+ .markdown-body h1:hover .headeranchor-link .headeranchor,
374
+ .markdown-body h2:hover .headeranchor-link .headeranchor,
375
+ .markdown-body h3:hover .headeranchor-link .headeranchor,
376
+ .markdown-body h4:hover .headeranchor-link .headeranchor,
377
+ .markdown-body h5:hover .headeranchor-link .headeranchor,
378
+ .markdown-body h6:hover .headeranchor-link .headeranchor {
379
+ display: inline-block;
380
+ }
381
+
382
+ .markdown-body h1 {
383
+ padding-bottom: 0.3em;
384
+ font-size: 2.25em;
385
+ line-height: 1.2;
386
+ border-bottom: 1px solid #eee;
387
+ }
388
+
389
+ .markdown-body h2 {
390
+ padding-bottom: 0.3em;
391
+ font-size: 1.75em;
392
+ line-height: 1.225;
393
+ border-bottom: 1px solid #eee;
394
+ }
395
+
396
+ .markdown-body h3 {
397
+ font-size: 1.5em;
398
+ line-height: 1.43;
399
+ }
400
+
401
+ .markdown-body h4 {
402
+ font-size: 1.25em;
403
+ }
404
+
405
+ .markdown-body h5 {
406
+ font-size: 1em;
407
+ }
408
+
409
+ .markdown-body h6 {
410
+ font-size: 1em;
411
+ color: #777;
412
+ }
413
+
414
+ .markdown-body p,
415
+ .markdown-body blockquote,
416
+ .markdown-body ul,
417
+ .markdown-body ol,
418
+ .markdown-body dl,
419
+ .markdown-body table,
420
+ .markdown-body pre,
421
+ .markdown-body .admonition {
422
+ margin-top: 0;
423
+ margin-bottom: 16px;
424
+ }
425
+
426
+ .markdown-body hr {
427
+ height: 4px;
428
+ padding: 0;
429
+ margin: 16px 0;
430
+ background-color: #e7e7e7;
431
+ border: 0 none;
432
+ }
433
+
434
+ .markdown-body ul,
435
+ .markdown-body ol {
436
+ padding-left: 2em;
437
+ }
438
+
439
+ .markdown-body ul ul,
440
+ .markdown-body ul ol,
441
+ .markdown-body ol ol,
442
+ .markdown-body ol ul {
443
+ margin-top: 0;
444
+ margin-bottom: 0;
445
+ }
446
+
447
+ .markdown-body li>p {
448
+ margin-top: 16px;
449
+ }
450
+
451
+ .markdown-body dl {
452
+ padding: 0;
453
+ }
454
+
455
+ .markdown-body dl dt {
456
+ padding: 0;
457
+ margin-top: 16px;
458
+ font-size: 1em;
459
+ font-style: italic;
460
+ font-weight: bold;
461
+ }
462
+
463
+ .markdown-body dl dd {
464
+ padding: 0 16px;
465
+ margin-bottom: 16px;
466
+ }
467
+
468
+ .markdown-body blockquote {
469
+ padding: 0 15px;
470
+ color: #777;
471
+ border-left: 4px solid #ddd;
472
+ }
473
+
474
+ .markdown-body blockquote>:first-child {
475
+ margin-top: 0;
476
+ }
477
+
478
+ .markdown-body blockquote>:last-child {
479
+ margin-bottom: 0;
480
+ }
481
+
482
+ .markdown-body table {
483
+ display: block;
484
+ width: 100%;
485
+ overflow: auto;
486
+ word-break: normal;
487
+ word-break: keep-all;
488
+ }
489
+
490
+ .markdown-body table th {
491
+ font-weight: bold;
492
+ }
493
+
494
+ .markdown-body table th,
495
+ .markdown-body table td {
496
+ padding: 6px 13px;
497
+ border: 1px solid #ddd;
498
+ }
499
+
500
+ .markdown-body table tr {
501
+ background-color: #fff;
502
+ border-top: 1px solid #ccc;
503
+ }
504
+
505
+ .markdown-body table tr:nth-child(2n) {
506
+ background-color: #f8f8f8;
507
+ }
508
+
509
+ .markdown-body img {
510
+ max-width: 100%;
511
+ -moz-box-sizing: border-box;
512
+ box-sizing: border-box;
513
+ }
514
+
515
+ .markdown-body code,
516
+ .markdown-body samp {
517
+ padding: 0;
518
+ padding-top: 0.2em;
519
+ padding-bottom: 0.2em;
520
+ margin: 0;
521
+ font-size: 85%;
522
+ background-color: rgba(0,0,0,0.04);
523
+ border-radius: 3px;
524
+ }
525
+
526
+ .markdown-body code:before,
527
+ .markdown-body code:after {
528
+ letter-spacing: -0.2em;
529
+ content: "\00a0";
530
+ }
531
+
532
+ .markdown-body pre>code {
533
+ padding: 0;
534
+ margin: 0;
535
+ font-size: 100%;
536
+ word-break: normal;
537
+ white-space: pre;
538
+ background: transparent;
539
+ border: 0;
540
+ }
541
+
542
+ .markdown-body .codehilite {
543
+ margin-bottom: 16px;
544
+ }
545
+
546
+ .markdown-body .codehilite pre,
547
+ .markdown-body pre {
548
+ padding: 16px;
549
+ overflow: auto;
550
+ font-size: 85%;
551
+ line-height: 1.45;
552
+ background-color: #f7f7f7;
553
+ border-radius: 3px;
554
+ }
555
+
556
+ .markdown-body .codehilite pre {
557
+ margin-bottom: 0;
558
+ word-break: normal;
559
+ }
560
+
561
+ .markdown-body pre {
562
+ word-wrap: normal;
563
+ }
564
+
565
+ .markdown-body pre code {
566
+ display: inline;
567
+ max-width: initial;
568
+ padding: 0;
569
+ margin: 0;
570
+ overflow: initial;
571
+ line-height: inherit;
572
+ word-wrap: normal;
573
+ background-color: transparent;
574
+ border: 0;
575
+ }
576
+
577
+ .markdown-body pre code:before,
578
+ .markdown-body pre code:after {
579
+ content: normal;
580
+ }
581
+
582
+ /* Admonition */
583
+ .markdown-body .admonition {
584
+ -webkit-border-radius: 3px;
585
+ -moz-border-radius: 3px;
586
+ border-radius: 3px;
587
+ padding: 0.5em 1em 0.5em 1em;
588
+ color: #888888;
589
+ background-color: #F7F7F7;
590
+ border: 1px solid #888888;
591
+ }
592
+
593
+ .markdown-body .admonition blockquote {
594
+ color: rgba(136, 136, 136, 0.5);
595
+ border-left: 4px solid rgba(136, 136, 136, 0.5);
596
+ }
597
+
598
+ .markdown-body .admonition table {
599
+ color: #333;
600
+ }
601
+
602
+ .markdown-body .admonition p {
603
+ padding: 0;
604
+ margin: 0;
605
+ }
606
+
607
+ .markdown-body .admonition-title {
608
+ font-weight: bold;
609
+ margin: 0;
610
+ }
611
+
612
+ .markdown-body .admonition-icon {
613
+ font: normal normal 16px fontawesome-mini;
614
+ line-height: 1.5;
615
+ -moz-osx-font-smoothing: grayscale;
616
+ -webkit-user-select: none;
617
+ -moz-user-select: none;
618
+ -ms-user-select: none;
619
+ user-select: none;
620
+ float: left;
621
+ }
622
+
623
+ .markdown-body .attention {
624
+ color: #4F8A10;
625
+ background-color: #DFF2BF;
626
+ border: 1px solid #4F8A10;
627
+ }
628
+
629
+ .markdown-body .caution {
630
+ color: #D63301;
631
+ background-color: #FFCCBA;
632
+ border: 1px solid #D63301;
633
+ }
634
+
635
+ .markdown-body .hint {
636
+ color: #00529B;
637
+ background-color: #BDE5F8;
638
+ border: 1px solid #00529B;
639
+ }
640
+
641
+ .markdown-body .danger {
642
+ color: #D8000C;
643
+ background-color: #FFBABA;
644
+ border: 1px solid #D8000C;
645
+ }
646
+
647
+ .markdown-body .question {
648
+ color: #00049b;
649
+ background-color: #BDC8F8;
650
+ border: 1px solid #00049b;
651
+ }
652
+
653
+ .markdown-body .note {
654
+ color: #9F6000;
655
+ background-color: #FEEFB3;
656
+ border: 1px solid #9F6000;
657
+ }
658
+
659
+ .markdown-body .attention {
660
+ color: #4F8A10;
661
+ background-color: #DFF2BF;
662
+ border: 1px solid #4F8A10;
663
+ }
664
+
665
+ .markdown-body .caution blockquote {
666
+ color: rgba(214, 51, 1, .5);
667
+ border-left: 4px solid rgba(214, 51, 1, .5);
668
+ }
669
+
670
+ .markdown-body .hint blockquote {
671
+ color: rgba(0, 82, 155, .5);
672
+ border-left: 4px solid rgba(0, 82, 155, .5);
673
+ }
674
+
675
+ .markdown-body .danger blockquote {
676
+ color: rgba(216, 0, 12, .5);
677
+ border-left: 4px solid rgba(216, 0, 12, .5);
678
+ }
679
+
680
+ .markdown-body .question blockquote {
681
+ color: rgba(0, 4, 155, .5);
682
+ border-left: 4px solid rgba(0, 4, 155, .5);;
683
+ }
684
+
685
+ .markdown-body .note blockquote {
686
+ color: rgba(159, 96, 0, .5);
687
+ border-left: 4px solid rgba(159, 96, 0, .5);
688
+ }
689
+
690
+ .markdown-body .admonition-icon:before {
691
+ content: "\f040\00a0";
692
+ }
693
+
694
+ .markdown-body .attention > .admonition-icon:before {
695
+ content: "\f058\00a0";
696
+ }
697
+
698
+ .markdown-body .caution > .admonition-icon:before {
699
+ content: "\f06a\00a0";
700
+ }
701
+
702
+ .markdown-body .hint > .admonition-icon:before {
703
+ content: "\f05a\00a0";
704
+ }
705
+
706
+ .markdown-body .danger > .admonition-icon:before {
707
+ content: "\f056\00a0";
708
+ }
709
+
710
+ .markdown-body .question > .admonition-icon:before {
711
+ content: "\f059\00a0";
712
+ }
713
+
714
+ .markdown-body .note > .admonition-icon:before {
715
+ content: "\f040\00a0";
716
+ }
717
+
718
+ /* progress bar*/
719
+ .markdown-body .progress {
720
+ display: block;
721
+ width: 300px;
722
+ margin: 10px 0;
723
+ height: 24px;
724
+ border: 1px solid #ccc;
725
+ -webkit-border-radius: 3px;
726
+ -moz-border-radius: 3px;
727
+ border-radius: 3px;
728
+ background-color: #F8F8F8;
729
+ position: relative;
730
+ box-shadow: inset -1px 1px 3px rgba(0, 0, 0, .1);
731
+ }
732
+
733
+ .markdown-body .progress-label {
734
+ position: absolute;
735
+ text-align: center;
736
+ font-weight: bold;
737
+ width: 100%; margin: 0;
738
+ line-height: 24px;
739
+ color: #333;
740
+ text-shadow: 1px 1px 0 #fefefe, -1px -1px 0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px 0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000;
741
+ -webkit-font-smoothing: antialiased !important;
742
+ white-space: nowrap;
743
+ overflow: hidden;
744
+ }
745
+
746
+ .markdown-body .progress-bar {
747
+ height: 24px;
748
+ float: left;
749
+ border-right: 1px solid #ccc;
750
+ -webkit-border-radius: 3px;
751
+ -moz-border-radius: 3px;
752
+ border-radius: 3px;
753
+ background-color: #34c2e3;
754
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5);
755
+ background-size: 30px 30px;
756
+ background-image: -webkit-linear-gradient(
757
+ 135deg, rgba(255, 255, 255, .4) 27%,
758
+ transparent 27%,
759
+ transparent 53%, rgba(255, 255, 255, .4) 53%,
760
+ rgba(255, 255, 255, .4) 77%,
761
+ transparent 77%, transparent
762
+ );
763
+ background-image: -moz-linear-gradient(
764
+ 135deg,
765
+ rgba(255, 255, 255, .4) 27%, transparent 27%,
766
+ transparent 53%, rgba(255, 255, 255, .4) 53%,
767
+ rgba(255, 255, 255, .4) 77%, transparent 77%,
768
+ transparent
769
+ );
770
+ background-image: -ms-linear-gradient(
771
+ 135deg,
772
+ rgba(255, 255, 255, .4) 27%, transparent 27%,
773
+ transparent 53%, rgba(255, 255, 255, .4) 53%,
774
+ rgba(255, 255, 255, .4) 77%, transparent 77%,
775
+ transparent
776
+ );
777
+ background-image: -o-linear-gradient(
778
+ 135deg,
779
+ rgba(255, 255, 255, .4) 27%, transparent 27%,
780
+ transparent 53%, rgba(255, 255, 255, .4) 53%,
781
+ rgba(255, 255, 255, .4) 77%, transparent 77%,
782
+ transparent
783
+ );
784
+ background-image: linear-gradient(
785
+ 135deg,
786
+ rgba(255, 255, 255, .4) 27%, transparent 27%,
787
+ transparent 53%, rgba(255, 255, 255, .4) 53%,
788
+ rgba(255, 255, 255, .4) 77%, transparent 77%,
789
+ transparent
790
+ );
791
+ }
792
+
793
+ .markdown-body .progress-100plus .progress-bar {
794
+ background-color: #1ee038;
795
+ }
796
+
797
+ .markdown-body .progress-80plus .progress-bar {
798
+ background-color: #86e01e;
799
+ }
800
+
801
+ .markdown-body .progress-60plus .progress-bar {
802
+ background-color: #f2d31b;
803
+ }
804
+
805
+ .markdown-body .progress-40plus .progress-bar {
806
+ background-color: #f2b01e;
807
+ }
808
+
809
+ .markdown-body .progress-20plus .progress-bar {
810
+ background-color: #f27011;
811
+ }
812
+
813
+ .markdown-body .progress-0plus .progress-bar {
814
+ background-color: #f63a0f;
815
+ }
816
+
817
+ .markdown-body .gloss .progress-bar {
818
+ box-shadow:
819
+ inset -1px 1px 0 rgba(255, 255, 255, .5),
820
+ inset 0 -4px 12px rgba(255, 255, 255, .7),
821
+ inset 0 4px 12px rgba(255, 255, 255, .7),
822
+ inset 0 -12px 0 rgba(0, 0, 0, .05),
823
+ inset 1px -1px 0 rgba(255, 255, 255, .2);
824
+ }
825
+
826
+ .markdown-body .candystripe-animate .progress-bar{
827
+ -webkit-animation: animate-stripes 3s linear infinite;
828
+ -moz-animation: animate-stripes 3s linear infinite;
829
+ animation: animate-stripes 3s linear infinite;
830
+ }
831
+
832
+ @-webkit-keyframes animate-stripes {
833
+ 0% {
834
+ background-position: 0 0;
835
+ }
836
+
837
+ 100% {
838
+ background-position: 60px 0;
839
+ }
840
+ }
841
+
842
+ @-moz-keyframes animate-stripes {
843
+ 0% {
844
+ background-position: 0 0;
845
+ }
846
+
847
+ 100% {
848
+ background-position: 60px 0;
849
+ }
850
+ }
851
+
852
+ @keyframes animate-stripes {
853
+ 0% {
854
+ background-position: 0 0;
855
+ }
856
+
857
+ 100% {
858
+ background-position: 60px 0;
859
+ }
860
+ }
861
+
862
+ /* Multimarkdown Critic Blocks */
863
+ .markdown-body .critic_mark {
864
+ background: #ff0;
865
+ }
866
+
867
+ .markdown-body .critic_delete {
868
+ color: #c82829;
869
+ text-decoration: line-through;
870
+ }
871
+
872
+ .markdown-body .critic_insert {
873
+ color: #718c00 ;
874
+ text-decoration: underline;
875
+ }
876
+
877
+ .markdown-body .critic_comment {
878
+ color: #8e908c;
879
+ font-style: italic;
880
+ }
881
+
882
+ .markdown-body .headeranchor {
883
+ font: normal normal 16px octicons-anchor;
884
+ line-height: 1;
885
+ display: inline-block;
886
+ text-decoration: none;
887
+ -webkit-font-smoothing: antialiased;
888
+ -moz-osx-font-smoothing: grayscale;
889
+ -webkit-user-select: none;
890
+ -moz-user-select: none;
891
+ -ms-user-select: none;
892
+ user-select: none;
893
+ }
894
+
895
+ .headeranchor:before {
896
+ content: '\f05c';
897
+ }
898
+
899
+ .markdown-body .task-list-item {
900
+ list-style-type: none;
901
+ }
902
+
903
+ .markdown-body .task-list-item+.task-list-item {
904
+ margin-top: 3px;
905
+ }
906
+
907
+ .markdown-body .task-list-item input {
908
+ margin: 0 4px 0.25em -20px;
909
+ vertical-align: middle;
910
+ }
911
+
912
+ /* Media */
913
+ @media only screen and (min-width: 480px) {
914
+ .markdown-body {
915
+ font-size:14px;
916
+ }
917
+ }
918
+
919
+ @media only screen and (min-width: 768px) {
920
+ .markdown-body {
921
+ font-size:16px;
922
+ }
923
+ }
924
+
925
+ @media print {
926
+ .markdown-body * {
927
+ background: transparent !important;
928
+ color: black !important;
929
+ filter:none !important;
930
+ -ms-filter: none !important;
931
+ }
932
+
933
+ .markdown-body {
934
+ font-size:12pt;
935
+ max-width:100%;
936
+ outline:none;
937
+ border: 0;
938
+ }
939
+
940
+ .markdown-body a,
941
+ .markdown-body a:visited {
942
+ text-decoration: underline;
943
+ }
944
+
945
+ .markdown-body .headeranchor-link {
946
+ display: none;
947
+ }
948
+
949
+ .markdown-body a[href]:after {
950
+ content: " (" attr(href) ")";
951
+ }
952
+
953
+ .markdown-body abbr[title]:after {
954
+ content: " (" attr(title) ")";
955
+ }
956
+
957
+ .markdown-body .ir a:after,
958
+ .markdown-body a[href^="javascript:"]:after,
959
+ .markdown-body a[href^="#"]:after {
960
+ content: "";
961
+ }
962
+
963
+ .markdown-body pre {
964
+ white-space: pre;
965
+ white-space: pre-wrap;
966
+ word-wrap: break-word;
967
+ }
968
+
969
+ .markdown-body pre,
970
+ .markdown-body blockquote {
971
+ border: 1px solid #999;
972
+ padding-right: 1em;
973
+ page-break-inside: avoid;
974
+ }
975
+
976
+ .markdown-body .progress,
977
+ .markdown-body .progress-bar {
978
+ box-shadow: none;
979
+ }
980
+
981
+ .markdown-body tr,
982
+ .markdown-body img {
983
+ page-break-inside: avoid;
984
+ }
985
+
986
+ .markdown-body img {
987
+ max-width: 100% !important;
988
+ }
989
+
990
+ .markdown-body p,
991
+ .markdown-body h2,
992
+ .markdown-body h3 {
993
+ orphans: 3;
994
+ widows: 3;
995
+ }
996
+
997
+ .markdown-body h2,
998
+ .markdown-body h3 {
999
+ page-break-after: avoid;
1000
+ }
1001
+ }
1002
+ </style><title>README</title></head><body><article class="markdown-body"><h1 id="dsjsms"><a name="user-content-dsjsms" href="#dsjsms" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>DsjSms</h1>
1003
+ <p>TODO: DSJ SMS based on santong</p>
1004
+ <h2 id="installation"><a name="user-content-installation" href="#installation" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>Installation</h2>
1005
+ <p>Add this line to your application&rsquo;s Gemfile:</p>
1006
+ <pre><code>gem &lsquo;dsj_sms&rsquo;</code></pre>
1007
+ <p>And then execute:</p>
1008
+ <pre><code>$ bundle
1009
+ </code></pre>
1010
+ <p>Or install it yourself as:</p>
1011
+ <pre><code>$ gem install dsj_sms
1012
+ </code></pre>
1013
+ <h2 id="usage"><a name="user-content-usage" href="#usage" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>Usage</h2>
1014
+ <pre><code>require &lsquo;dsj_sms&rsquo;
1015
+ DsjSms.username &lsquo;username&rsquo;
1016
+ DsjSms.password &lsquo;password&rsquo;
1017
+ DsjSms.url &lsquo;http://3tong.net/http/sms/Submit&rsquo;
1018
+ DsjSms.sendSMS(&ldquo;18916209156&rdquo;,&rsquo;i am ok&rsquo;,&rsquo;RESTAURANT WEEK&rsquo;)</code></pre></article></body></html>
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # DsjSms
2
+
3
+ TODO: DSJ SMS based on santong
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'dsj_sms'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install dsj_sms
18
+
19
+ ## Usage
20
+
21
+ require 'dsj_sms'
22
+ DsjSms.username 'username'
23
+ DsjSms.password 'password'
24
+ DsjSms.url 'http://3tong.net/http/sms/Submit'
25
+ DsjSms.sendSMS("18916209156",'i am ok','RESTAURANT WEEK')
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/dsj_sms.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'dsj_sms/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "dsj_sms"
8
+ spec.version = DsjSms::VERSION
9
+ spec.authors = ["menghuanwd"]
10
+ spec.email = ["651019063@qq.com"]
11
+ spec.summary = %q{sms for dsj.}
12
+ spec.description = %q{santong sms api.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+ end
data/lib/dsj_sms.rb ADDED
@@ -0,0 +1,6 @@
1
+ # require 'digest/md5'
2
+ # require 'net/http'
3
+ # require 'erb'
4
+ # require 'digest/md5'
5
+ require File.expand_path("../dsj_sms/version",__FILE__)
6
+ require File.expand_path("../dsj_sms/core",__FILE__)
@@ -0,0 +1,54 @@
1
+
2
+ require 'net/http'
3
+ require 'erb'
4
+
5
+ module DsjSms
6
+ def self.username(username)
7
+ puts @username = username
8
+ end
9
+
10
+ def self.password(password)
11
+ puts @password = Digest::MD5.hexdigest(password)
12
+ end
13
+
14
+ def self.url(url)
15
+ puts @url = URI.parse(url)
16
+ end
17
+
18
+ def self.sendSMS(phone,content,sign)
19
+
20
+ message_xml = %Q(<?xml version="1.0" encoding="UTF-8"?>)
21
+ message_xml += "<message>"
22
+ message_xml += "<account>#{@username}</account>"
23
+ message_xml += "<password>#{@password}</password>"
24
+ message_xml += "<msgid></msgid>"
25
+ message_xml += "<phones>#{phone_rule(phone)}</phones>"
26
+ message_xml += "<content>#{html_rule(content)}</content>"
27
+ message_xml += "<sign>【#{sign}】</sign>"
28
+ message_xml += "<subcode></subcode>"
29
+ message_xml += "<sendtime></sendtime>"
30
+ message_xml += "</message>"
31
+
32
+ post = Net::HTTP::Post.new(@url.path)
33
+ post.form_data = {"message" => message_xml}
34
+ request = Net::HTTP.new(@url.host, @url.port)
35
+ request.start do |http|
36
+ response = http.request(post)
37
+ end
38
+ end
39
+
40
+ private
41
+ def self.phone_rule(phone)
42
+ phone = phone.gsub(' ', '').gsub('+', '')
43
+ ['86', '0086', '086'].each do |country_code|
44
+ if phone.start_with?(country_code)
45
+ phone.sub!(country_code, '')
46
+ end
47
+ end
48
+ phone
49
+ end
50
+
51
+ def self.html_rule(content)
52
+ ERB::Util.html_escape(content)
53
+ end
54
+ end
@@ -0,0 +1,3 @@
1
+ module DsjSms
2
+ VERSION = "0.0.2"
3
+ end
data/test/client.rb ADDED
@@ -0,0 +1,12 @@
1
+ # require File.expand_path('../../lib/dsj_sms',__FILE__)
2
+
3
+
4
+ require 'dsj_sms'
5
+
6
+ DsjSms.username 'username'
7
+ DsjSms.password 'password'
8
+ DsjSms.url 'http://3tong.net/http/sms/Submit'
9
+
10
+
11
+ DsjSms.sendSMS("18916209156",'i am ok','RESTAURANT WEEK')
12
+
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dsj_sms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - menghuanwd
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: santong sms api.
42
+ email:
43
+ - 651019063@qq.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.html
52
+ - README.md
53
+ - Rakefile
54
+ - dsj_sms.gemspec
55
+ - lib/dsj_sms.rb
56
+ - lib/dsj_sms/core.rb
57
+ - lib/dsj_sms/version.rb
58
+ - test/client.rb
59
+ homepage: ''
60
+ licenses:
61
+ - MIT
62
+ metadata: {}
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubyforge_project:
79
+ rubygems_version: 2.2.2
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: sms for dsj.
83
+ test_files:
84
+ - test/client.rb