dsj_sms 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,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) 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