pushofy 0.0.11

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: 31e2583d4e6894ab78f7043e616d12be73650d7c
4
+ data.tar.gz: e8458df5575bab3bc8668d5364615053e56f98c2
5
+ SHA512:
6
+ metadata.gz: 51ed5208424477b1a666ae43580493d69ac6078c76ec82cd0f65b6c690e82efa1a8d06e63826d92db4c3b7f821f2389aed226e02c8162358b908a14e56abab8a
7
+ data.tar.gz: 6a3d5797685c5561dd3933ecd1b14b8073240dc27f433d40578fd44836deed50ace5c6f54c186dd993428df610d1e436f32622068bbae5f4e72758f3068a5af1
data/.gitignore ADDED
@@ -0,0 +1,17 @@
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
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
@@ -0,0 +1,136 @@
1
+ Bag Attributes
2
+ friendlyName: Apple Development IOS Push Services: com.idlecampus
3
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
4
+ subject=/UID=com.idlecampus/CN=Apple Development IOS Push Services: com.idlecampus/OU=72S3A27359/C=SG
5
+ issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
6
+ -----BEGIN CERTIFICATE-----
7
+ MIIFgTCCBGmgAwIBAgIIVF99Iwg1rscwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNV
8
+ BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
9
+ ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
10
+ aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
11
+ HhcNMTMxMTA5MjA0NzA0WhcNMTQxMTA5MjA0NzA0WjCBgDEeMBwGCgmSJomT8ixk
12
+ AQEMDmNvbS5pZGxlY2FtcHVzMTwwOgYDVQQDDDNBcHBsZSBEZXZlbG9wbWVudCBJ
13
+ T1MgUHVzaCBTZXJ2aWNlczogY29tLmlkbGVjYW1wdXMxEzARBgNVBAsMCjcyUzNB
14
+ MjczNTkxCzAJBgNVBAYTAlNHMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
15
+ AQEAzEUmLcKA7+NSPXLz8+dz25rubpL0Mmn5rLJMuZIZHeixnf50Is/NK+xc+t25
16
+ OHwMb2F5zF0T4WChtat6S/Efleztee1DRr+50cyUG91MLRrKKUXYtRtvfTEbrTtX
17
+ bL1phmYPLtAIvzesz+jCxVW3BPzp1OSqSk/8Ln/Y3/2Q0aYbTUqIb2Mv+/V60/6K
18
+ TnmkfxVbXyF2KqaxHt4VaXn1fVxVtQvKlnBhyVgqAE6MTU81XSMdrciPlarDtq4f
19
+ eRWw7I70UH0MqpMJalJzN4KwsxZtfwSNugeZzd/R99xD0j+ZIqTqtjcOk1mj+Q/F
20
+ uk7SdK//+q27oiB67hYRw7PgYwIDAQABo4IB5TCCAeEwHQYDVR0OBBYEFLA16RTN
21
+ 4lk6U/NuuFxOr/ujBeHaMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUiCcXCam2GGCL
22
+ 7Ou69kdZxVJUo7cwggEPBgNVHSAEggEGMIIBAjCB/wYJKoZIhvdjZAUBMIHxMIHD
23
+ BggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkg
24
+ YW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNh
25
+ YmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlm
26
+ aWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVu
27
+ dHMuMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3LmFwcGxlLmNvbS9hcHBsZWNhLzBN
28
+ BgNVHR8ERjBEMEKgQKA+hjxodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9jZXJ0
29
+ aWZpY2F0aW9uYXV0aG9yaXR5L3d3ZHJjYS5jcmwwCwYDVR0PBAQDAgeAMBMGA1Ud
30
+ JQQMMAoGCCsGAQUFBwMCMBAGCiqGSIb3Y2QGAwEEAgUAMA0GCSqGSIb3DQEBBQUA
31
+ A4IBAQBZuglr6RL6t8Jan+wHzS/GLyd46qRLec7blGM1zVuiasPYKzfDDX4eSbx3
32
+ Uqg8BaJ+kJnCHJio4bv1Jq3uuzTCcfiYl+MtyfxLtckJ935KwHn6dpMtbUzzyEb7
33
+ ihmCYRjvrVMzFxIlkVvkhQDsiyEp9YOn1RRuLhlTSZsWcmZZqzinVLQ18Cm04WpY
34
+ EN7bSjD2vsPoDeBBC5Q4kEejgIvFDOzmfoBwgnIXHr5gDe0iKdTLSTJPh4GHOJkM
35
+ ajKj8RebLAZFkmkO+G4YJz7j0wPwI0EL77ac/BblGjgX24uV0zpK0Jkp72dG09yy
36
+ DiFt/a8jDtjR8SpTX5pWu3p0hLLE
37
+ -----END CERTIFICATE-----
38
+ Bag Attributes
39
+ friendlyName: iPhone Developer: Ankur Kothari (99DZ37BYTG)
40
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
41
+ subject=/UID=X579TUAS83/CN=iPhone Developer: Ankur Kothari (99DZ37BYTG)/OU=72S3A27359/O=Ankur Kothari/C=SG
42
+ issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
43
+ -----BEGIN CERTIFICATE-----
44
+ MIIFmjCCBIKgAwIBAgIIPTDc6YHsctAwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNV
45
+ BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
46
+ ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
47
+ aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
48
+ HhcNMTMxMTA1MDM0NzMwWhcNMTQxMTA1MDM0NzMwWjCBjTEaMBgGCgmSJomT8ixk
49
+ AQEMClg1NzlUVUFTODMxNTAzBgNVBAMMLGlQaG9uZSBEZXZlbG9wZXI6IEFua3Vy
50
+ IEtvdGhhcmkgKDk5RFozN0JZVEcpMRMwEQYDVQQLDAo3MlMzQTI3MzU5MRYwFAYD
51
+ VQQKDA1Bbmt1ciBLb3RoYXJpMQswCQYDVQQGEwJTRzCCASIwDQYJKoZIhvcNAQEB
52
+ BQADggEPADCCAQoCggEBAMxFJi3CgO/jUj1y8/Pnc9ua7m6S9DJp+ayyTLmSGR3o
53
+ sZ3+dCLPzSvsXPrduTh8DG9hecxdE+FgobWrekvxH5Xs7XntQ0a/udHMlBvdTC0a
54
+ yilF2LUbb30xG607V2y9aYZmDy7QCL83rM/owsVVtwT86dTkqkpP/C5/2N/9kNGm
55
+ G01KiG9jL/v1etP+ik55pH8VW18hdiqmsR7eFWl59X1cVbULypZwYclYKgBOjE1P
56
+ NV0jHa3Ij5Wqw7auH3kVsOyO9FB9DKqTCWpSczeCsLMWbX8EjboHmc3f0ffcQ9I/
57
+ mSKk6rY3DpNZo/kPxbpO0nSv//qtu6Igeu4WEcOz4GMCAwEAAaOCAfEwggHtMB0G
58
+ A1UdDgQWBBSwNekUzeJZOlPzbrhcTq/7owXh2jAMBgNVHRMBAf8EAjAAMB8GA1Ud
59
+ IwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBDwYDVR0gBIIBBjCCAQIwgf8G
60
+ CSqGSIb3Y2QFATCB8TCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlz
61
+ IGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2Yg
62
+ dGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9u
63
+ cyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBw
64
+ cmFjdGljZSBzdGF0ZW1lbnRzLjApBggrBgEFBQcCARYdaHR0cDovL3d3dy5hcHBs
65
+ ZS5jb20vYXBwbGVjYS8wTQYDVR0fBEYwRDBCoECgPoY8aHR0cDovL2RldmVsb3Bl
66
+ ci5hcHBsZS5jb20vY2VydGlmaWNhdGlvbmF1dGhvcml0eS93d2RyY2EuY3JsMA4G
67
+ A1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzATBgoqhkiG92Nk
68
+ BgECAQH/BAIFADANBgkqhkiG9w0BAQUFAAOCAQEAnAOUm9SNm5UIil8RKLTjCeVd
69
+ J/L77i+0AbY8zFFW3CohDAfXuyB/c+RSajSqTre3QzCE514k7LwTYPf+5KH8GqEI
70
+ X6cau7DLeD9hRxSh0ujDsknug4GGWgAqZRdPhHIseDsO5qn893lIy8+NQacjwP+R
71
+ qHDH+RJf1dqP27chZyI5OX242CCLmcWlBLUJiOtc8toY3E6RMEiAFgYk8ruWlKNI
72
+ yWrreJKwZGnEvqUIXON7Poa9+6zceMmzUQ+AnyrwxPcVATPOaH9Q1ZMxl8xEQlgI
73
+ 7aBCw/02wZdAR8x6n9VN7FjPGutBHA2zfx4HCGNqiLBI0Ed4BtDIku2QtDhYNA==
74
+ -----END CERTIFICATE-----
75
+ Bag Attributes
76
+ friendlyName: iOS Developer: Ankur Kothari (Ankur Kothari)
77
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
78
+ Key Attributes: <No Attributes>
79
+ -----BEGIN RSA PRIVATE KEY-----
80
+ MIIEowIBAAKCAQEAzEUmLcKA7+NSPXLz8+dz25rubpL0Mmn5rLJMuZIZHeixnf50
81
+ Is/NK+xc+t25OHwMb2F5zF0T4WChtat6S/Efleztee1DRr+50cyUG91MLRrKKUXY
82
+ tRtvfTEbrTtXbL1phmYPLtAIvzesz+jCxVW3BPzp1OSqSk/8Ln/Y3/2Q0aYbTUqI
83
+ b2Mv+/V60/6KTnmkfxVbXyF2KqaxHt4VaXn1fVxVtQvKlnBhyVgqAE6MTU81XSMd
84
+ rciPlarDtq4feRWw7I70UH0MqpMJalJzN4KwsxZtfwSNugeZzd/R99xD0j+ZIqTq
85
+ tjcOk1mj+Q/Fuk7SdK//+q27oiB67hYRw7PgYwIDAQABAoIBAFn35t3muiVuKO25
86
+ sKrveT7zGSsIfJerx3UBvvtI1tkugPSGex5OCh7bZwRzHb48HLn948hYAoaUqgS6
87
+ 9w11sSS2is3V63jAvxYhleZD7OY802ekRNNXtx4bwAXnihTxxAWW8/75T7Dw06Nq
88
+ 8EY7/3Up8895u2spmXfdhWb6Zot/ZI3nsHhvFcJ2+T1FwWR73eZ7PpPuAUeFaVaU
89
+ z6B9CJQUN8ow5lxgbPHHg26Dx7gtXUqL3VPomwdNjW19xvHXjSMVCdDxZi2OKcZ7
90
+ /K4qAzwa91bahX0jgmBdVzn01gR5T2y51mxaZOC/u6nPVTAw7NBIEMVZxbuj1f9a
91
+ /Lju5aECgYEA+EnVMv+TlXuHrw9R5p52w0sWnndvzbxV9Pdvjqi7lqXRypaOVxZy
92
+ z6fbKG0yANxqBgsdXdRvtEiSDbMzTfB5kYDZkqShs0gVDCMGcRM3paExYwfl61RS
93
+ c1ufTId2LnxSTtSKJAdezTedBsl0DgTdGB/5sniuZee2u4WBo8/bDXMCgYEA0p1S
94
+ flR9afmmqCzf8uSwpymAfS4/4tz+JjeJSnEhesKahHa88okFWtcne1OHV3F0CBgb
95
+ erEJ5cs5d1P4ycAJMTuRFQbU8dvZzAhkYOnHbzvgznXKYsryIMMxHqDiY8Klw4G8
96
+ obdBCfrWw8B7ONpGkmbC56v1yEijXPQWWVMBJVECgYAi8vmgsRsMGpRRzv0/UiTz
97
+ fnlTmwpQ0mbjEYVRdmzZWsP6GVE17wIAOud9fElil6QQ77WVhJaosOJmLUhWezgR
98
+ hCqcGrJsMwRLbg61EfhuRw9VmkIB6x+j/0ygEB1Rk8xeLkq3oZX1mxNuZiMA6ixY
99
+ /f8+4P/jdkdhg/xom5SBAwKBgQCl+F3yuagfJCIF818DrN3czSK5AwJLR7Vr7mXd
100
+ aOtmLwbPDjb1ta6nmFc/o2JLMVerrTuyYuMW2CBP/bdXXWKhDnzVIg4bDhJC6/YW
101
+ PQPxjzEn4cD8O0u1L7x8k3H0BYbVW16H3b5+G9K0bfFsqu3kHuDG6kcEbuF1tdAK
102
+ 0hNcEQKBgAeO8oRYYS4MYR92d7ocVwxkO0h5ehJX/xfT8XHmqzO7SpCl1AXQbkkB
103
+ YJqlziGZ/XVdKtvEhRM3ATTTLOX+Ry48O2xmsbp2Nr39ZGeH5Eg99sQSurtYWYwU
104
+ /zXXsixLOIkik0GlJRbRO5rFW61Co9/hMzMfhamYz9OlMMCuJw/W
105
+ -----END RSA PRIVATE KEY-----
106
+ Bag Attributes
107
+ friendlyName: iOS Developer: Ankur Kothari (Ankur Kothari)
108
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
109
+ Key Attributes: <No Attributes>
110
+ -----BEGIN RSA PRIVATE KEY-----
111
+ MIIEowIBAAKCAQEAzEUmLcKA7+NSPXLz8+dz25rubpL0Mmn5rLJMuZIZHeixnf50
112
+ Is/NK+xc+t25OHwMb2F5zF0T4WChtat6S/Efleztee1DRr+50cyUG91MLRrKKUXY
113
+ tRtvfTEbrTtXbL1phmYPLtAIvzesz+jCxVW3BPzp1OSqSk/8Ln/Y3/2Q0aYbTUqI
114
+ b2Mv+/V60/6KTnmkfxVbXyF2KqaxHt4VaXn1fVxVtQvKlnBhyVgqAE6MTU81XSMd
115
+ rciPlarDtq4feRWw7I70UH0MqpMJalJzN4KwsxZtfwSNugeZzd/R99xD0j+ZIqTq
116
+ tjcOk1mj+Q/Fuk7SdK//+q27oiB67hYRw7PgYwIDAQABAoIBAFn35t3muiVuKO25
117
+ sKrveT7zGSsIfJerx3UBvvtI1tkugPSGex5OCh7bZwRzHb48HLn948hYAoaUqgS6
118
+ 9w11sSS2is3V63jAvxYhleZD7OY802ekRNNXtx4bwAXnihTxxAWW8/75T7Dw06Nq
119
+ 8EY7/3Up8895u2spmXfdhWb6Zot/ZI3nsHhvFcJ2+T1FwWR73eZ7PpPuAUeFaVaU
120
+ z6B9CJQUN8ow5lxgbPHHg26Dx7gtXUqL3VPomwdNjW19xvHXjSMVCdDxZi2OKcZ7
121
+ /K4qAzwa91bahX0jgmBdVzn01gR5T2y51mxaZOC/u6nPVTAw7NBIEMVZxbuj1f9a
122
+ /Lju5aECgYEA+EnVMv+TlXuHrw9R5p52w0sWnndvzbxV9Pdvjqi7lqXRypaOVxZy
123
+ z6fbKG0yANxqBgsdXdRvtEiSDbMzTfB5kYDZkqShs0gVDCMGcRM3paExYwfl61RS
124
+ c1ufTId2LnxSTtSKJAdezTedBsl0DgTdGB/5sniuZee2u4WBo8/bDXMCgYEA0p1S
125
+ flR9afmmqCzf8uSwpymAfS4/4tz+JjeJSnEhesKahHa88okFWtcne1OHV3F0CBgb
126
+ erEJ5cs5d1P4ycAJMTuRFQbU8dvZzAhkYOnHbzvgznXKYsryIMMxHqDiY8Klw4G8
127
+ obdBCfrWw8B7ONpGkmbC56v1yEijXPQWWVMBJVECgYAi8vmgsRsMGpRRzv0/UiTz
128
+ fnlTmwpQ0mbjEYVRdmzZWsP6GVE17wIAOud9fElil6QQ77WVhJaosOJmLUhWezgR
129
+ hCqcGrJsMwRLbg61EfhuRw9VmkIB6x+j/0ygEB1Rk8xeLkq3oZX1mxNuZiMA6ixY
130
+ /f8+4P/jdkdhg/xom5SBAwKBgQCl+F3yuagfJCIF818DrN3czSK5AwJLR7Vr7mXd
131
+ aOtmLwbPDjb1ta6nmFc/o2JLMVerrTuyYuMW2CBP/bdXXWKhDnzVIg4bDhJC6/YW
132
+ PQPxjzEn4cD8O0u1L7x8k3H0BYbVW16H3b5+G9K0bfFsqu3kHuDG6kcEbuF1tdAK
133
+ 0hNcEQKBgAeO8oRYYS4MYR92d7ocVwxkO0h5ehJX/xfT8XHmqzO7SpCl1AXQbkkB
134
+ YJqlziGZ/XVdKtvEhRM3ATTTLOX+Ry48O2xmsbp2Nr39ZGeH5Eg99sQSurtYWYwU
135
+ /zXXsixLOIkik0GlJRbRO5rFW61Co9/hMzMfhamYz9OlMMCuJw/W
136
+ -----END RSA PRIVATE KEY-----
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pushify.gemspec
4
+ gemspec
5
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 TODO: Write your name
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.
@@ -0,0 +1,136 @@
1
+ Bag Attributes
2
+ friendlyName: Apple Development IOS Push Services: com.idlecampus.IdleCampus
3
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
4
+ subject=/UID=com.idlecampus.IdleCampus/CN=Apple Development IOS Push Services: com.idlecampus.IdleCampus/OU=72S3A27359/C=SG
5
+ issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
6
+ -----BEGIN CERTIFICATE-----
7
+ MIIFlzCCBH+gAwIBAgIIYF2mZ14zXnQwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNV
8
+ BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
9
+ ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
10
+ aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
11
+ HhcNMTMxMTExMTUxNjMwWhcNMTQxMTExMTUxNjMwWjCBljEpMCcGCgmSJomT8ixk
12
+ AQEMGWNvbS5pZGxlY2FtcHVzLklkbGVDYW1wdXMxRzBFBgNVBAMMPkFwcGxlIERl
13
+ dmVsb3BtZW50IElPUyBQdXNoIFNlcnZpY2VzOiBjb20uaWRsZWNhbXB1cy5JZGxl
14
+ Q2FtcHVzMRMwEQYDVQQLDAo3MlMzQTI3MzU5MQswCQYDVQQGEwJTRzCCASIwDQYJ
15
+ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMxFJi3CgO/jUj1y8/Pnc9ua7m6S9DJp
16
+ +ayyTLmSGR3osZ3+dCLPzSvsXPrduTh8DG9hecxdE+FgobWrekvxH5Xs7XntQ0a/
17
+ udHMlBvdTC0ayilF2LUbb30xG607V2y9aYZmDy7QCL83rM/owsVVtwT86dTkqkpP
18
+ /C5/2N/9kNGmG01KiG9jL/v1etP+ik55pH8VW18hdiqmsR7eFWl59X1cVbULypZw
19
+ YclYKgBOjE1PNV0jHa3Ij5Wqw7auH3kVsOyO9FB9DKqTCWpSczeCsLMWbX8EjboH
20
+ mc3f0ffcQ9I/mSKk6rY3DpNZo/kPxbpO0nSv//qtu6Igeu4WEcOz4GMCAwEAAaOC
21
+ AeUwggHhMB0GA1UdDgQWBBSwNekUzeJZOlPzbrhcTq/7owXh2jAJBgNVHRMEAjAA
22
+ MB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBDwYDVR0gBIIBBjCC
23
+ AQIwgf8GCSqGSIb3Y2QFATCB8TCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBv
24
+ biB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFu
25
+ Y2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29u
26
+ ZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNh
27
+ dGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjApBggrBgEFBQcCARYdaHR0cDovL3d3
28
+ dy5hcHBsZS5jb20vYXBwbGVjYS8wTQYDVR0fBEYwRDBCoECgPoY8aHR0cDovL2Rl
29
+ dmVsb3Blci5hcHBsZS5jb20vY2VydGlmaWNhdGlvbmF1dGhvcml0eS93d2RyY2Eu
30
+ Y3JsMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAQBgoqhkiG92Nk
31
+ BgMBBAIFADANBgkqhkiG9w0BAQUFAAOCAQEAQ5PqQAUG9i9ZRqDJA8ZcI/fB0DLH
32
+ lMb1wFZB54f9ep8hO40EpKLTkciC2XrCddp2Mro3xTPkyl69D122Dv+VoEmxEx0m
33
+ ov0cmZb4hqNvExlXFyw8q04WXOppd864IaaCSFCg92vH17EnuxQCNskTWf4ikEcM
34
+ 1jGbJbA0rZ2/EFdfZdW1UZiuAWICrC/wkMlCxXLCW3xFI4k9IbE47j/JVfxkB5tM
35
+ DHBvM8mwm0FIRcn/KMjLXkwdpw1FtKgN2k/EZMQHhq1ie4fgpdqifjRFVIO32CTr
36
+ 8kZHSiHbIMn2G81fufmb6mif4cdqzqczjlUZ0hJbD+k20zA6QVXf8D5Yng==
37
+ -----END CERTIFICATE-----
38
+ Bag Attributes
39
+ friendlyName: iPhone Developer: Ankur Kothari (99DZ37BYTG)
40
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
41
+ subject=/UID=X579TUAS83/CN=iPhone Developer: Ankur Kothari (99DZ37BYTG)/OU=72S3A27359/O=Ankur Kothari/C=SG
42
+ issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
43
+ -----BEGIN CERTIFICATE-----
44
+ MIIFmjCCBIKgAwIBAgIIPTDc6YHsctAwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNV
45
+ BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
46
+ ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
47
+ aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
48
+ HhcNMTMxMTA1MDM0NzMwWhcNMTQxMTA1MDM0NzMwWjCBjTEaMBgGCgmSJomT8ixk
49
+ AQEMClg1NzlUVUFTODMxNTAzBgNVBAMMLGlQaG9uZSBEZXZlbG9wZXI6IEFua3Vy
50
+ IEtvdGhhcmkgKDk5RFozN0JZVEcpMRMwEQYDVQQLDAo3MlMzQTI3MzU5MRYwFAYD
51
+ VQQKDA1Bbmt1ciBLb3RoYXJpMQswCQYDVQQGEwJTRzCCASIwDQYJKoZIhvcNAQEB
52
+ BQADggEPADCCAQoCggEBAMxFJi3CgO/jUj1y8/Pnc9ua7m6S9DJp+ayyTLmSGR3o
53
+ sZ3+dCLPzSvsXPrduTh8DG9hecxdE+FgobWrekvxH5Xs7XntQ0a/udHMlBvdTC0a
54
+ yilF2LUbb30xG607V2y9aYZmDy7QCL83rM/owsVVtwT86dTkqkpP/C5/2N/9kNGm
55
+ G01KiG9jL/v1etP+ik55pH8VW18hdiqmsR7eFWl59X1cVbULypZwYclYKgBOjE1P
56
+ NV0jHa3Ij5Wqw7auH3kVsOyO9FB9DKqTCWpSczeCsLMWbX8EjboHmc3f0ffcQ9I/
57
+ mSKk6rY3DpNZo/kPxbpO0nSv//qtu6Igeu4WEcOz4GMCAwEAAaOCAfEwggHtMB0G
58
+ A1UdDgQWBBSwNekUzeJZOlPzbrhcTq/7owXh2jAMBgNVHRMBAf8EAjAAMB8GA1Ud
59
+ IwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBDwYDVR0gBIIBBjCCAQIwgf8G
60
+ CSqGSIb3Y2QFATCB8TCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlz
61
+ IGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2Yg
62
+ dGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9u
63
+ cyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBw
64
+ cmFjdGljZSBzdGF0ZW1lbnRzLjApBggrBgEFBQcCARYdaHR0cDovL3d3dy5hcHBs
65
+ ZS5jb20vYXBwbGVjYS8wTQYDVR0fBEYwRDBCoECgPoY8aHR0cDovL2RldmVsb3Bl
66
+ ci5hcHBsZS5jb20vY2VydGlmaWNhdGlvbmF1dGhvcml0eS93d2RyY2EuY3JsMA4G
67
+ A1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzATBgoqhkiG92Nk
68
+ BgECAQH/BAIFADANBgkqhkiG9w0BAQUFAAOCAQEAnAOUm9SNm5UIil8RKLTjCeVd
69
+ J/L77i+0AbY8zFFW3CohDAfXuyB/c+RSajSqTre3QzCE514k7LwTYPf+5KH8GqEI
70
+ X6cau7DLeD9hRxSh0ujDsknug4GGWgAqZRdPhHIseDsO5qn893lIy8+NQacjwP+R
71
+ qHDH+RJf1dqP27chZyI5OX242CCLmcWlBLUJiOtc8toY3E6RMEiAFgYk8ruWlKNI
72
+ yWrreJKwZGnEvqUIXON7Poa9+6zceMmzUQ+AnyrwxPcVATPOaH9Q1ZMxl8xEQlgI
73
+ 7aBCw/02wZdAR8x6n9VN7FjPGutBHA2zfx4HCGNqiLBI0Ed4BtDIku2QtDhYNA==
74
+ -----END CERTIFICATE-----
75
+ Bag Attributes
76
+ friendlyName: iOS Developer: Ankur Kothari (Ankur Kothari)
77
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
78
+ Key Attributes: <No Attributes>
79
+ -----BEGIN RSA PRIVATE KEY-----
80
+ MIIEowIBAAKCAQEAzEUmLcKA7+NSPXLz8+dz25rubpL0Mmn5rLJMuZIZHeixnf50
81
+ Is/NK+xc+t25OHwMb2F5zF0T4WChtat6S/Efleztee1DRr+50cyUG91MLRrKKUXY
82
+ tRtvfTEbrTtXbL1phmYPLtAIvzesz+jCxVW3BPzp1OSqSk/8Ln/Y3/2Q0aYbTUqI
83
+ b2Mv+/V60/6KTnmkfxVbXyF2KqaxHt4VaXn1fVxVtQvKlnBhyVgqAE6MTU81XSMd
84
+ rciPlarDtq4feRWw7I70UH0MqpMJalJzN4KwsxZtfwSNugeZzd/R99xD0j+ZIqTq
85
+ tjcOk1mj+Q/Fuk7SdK//+q27oiB67hYRw7PgYwIDAQABAoIBAFn35t3muiVuKO25
86
+ sKrveT7zGSsIfJerx3UBvvtI1tkugPSGex5OCh7bZwRzHb48HLn948hYAoaUqgS6
87
+ 9w11sSS2is3V63jAvxYhleZD7OY802ekRNNXtx4bwAXnihTxxAWW8/75T7Dw06Nq
88
+ 8EY7/3Up8895u2spmXfdhWb6Zot/ZI3nsHhvFcJ2+T1FwWR73eZ7PpPuAUeFaVaU
89
+ z6B9CJQUN8ow5lxgbPHHg26Dx7gtXUqL3VPomwdNjW19xvHXjSMVCdDxZi2OKcZ7
90
+ /K4qAzwa91bahX0jgmBdVzn01gR5T2y51mxaZOC/u6nPVTAw7NBIEMVZxbuj1f9a
91
+ /Lju5aECgYEA+EnVMv+TlXuHrw9R5p52w0sWnndvzbxV9Pdvjqi7lqXRypaOVxZy
92
+ z6fbKG0yANxqBgsdXdRvtEiSDbMzTfB5kYDZkqShs0gVDCMGcRM3paExYwfl61RS
93
+ c1ufTId2LnxSTtSKJAdezTedBsl0DgTdGB/5sniuZee2u4WBo8/bDXMCgYEA0p1S
94
+ flR9afmmqCzf8uSwpymAfS4/4tz+JjeJSnEhesKahHa88okFWtcne1OHV3F0CBgb
95
+ erEJ5cs5d1P4ycAJMTuRFQbU8dvZzAhkYOnHbzvgznXKYsryIMMxHqDiY8Klw4G8
96
+ obdBCfrWw8B7ONpGkmbC56v1yEijXPQWWVMBJVECgYAi8vmgsRsMGpRRzv0/UiTz
97
+ fnlTmwpQ0mbjEYVRdmzZWsP6GVE17wIAOud9fElil6QQ77WVhJaosOJmLUhWezgR
98
+ hCqcGrJsMwRLbg61EfhuRw9VmkIB6x+j/0ygEB1Rk8xeLkq3oZX1mxNuZiMA6ixY
99
+ /f8+4P/jdkdhg/xom5SBAwKBgQCl+F3yuagfJCIF818DrN3czSK5AwJLR7Vr7mXd
100
+ aOtmLwbPDjb1ta6nmFc/o2JLMVerrTuyYuMW2CBP/bdXXWKhDnzVIg4bDhJC6/YW
101
+ PQPxjzEn4cD8O0u1L7x8k3H0BYbVW16H3b5+G9K0bfFsqu3kHuDG6kcEbuF1tdAK
102
+ 0hNcEQKBgAeO8oRYYS4MYR92d7ocVwxkO0h5ehJX/xfT8XHmqzO7SpCl1AXQbkkB
103
+ YJqlziGZ/XVdKtvEhRM3ATTTLOX+Ry48O2xmsbp2Nr39ZGeH5Eg99sQSurtYWYwU
104
+ /zXXsixLOIkik0GlJRbRO5rFW61Co9/hMzMfhamYz9OlMMCuJw/W
105
+ -----END RSA PRIVATE KEY-----
106
+ Bag Attributes
107
+ friendlyName: iOS Developer: Ankur Kothari (Ankur Kothari)
108
+ localKeyID: B0 35 E9 14 CD E2 59 3A 53 F3 6E B8 5C 4E AF FB A3 05 E1 DA
109
+ Key Attributes: <No Attributes>
110
+ -----BEGIN RSA PRIVATE KEY-----
111
+ MIIEowIBAAKCAQEAzEUmLcKA7+NSPXLz8+dz25rubpL0Mmn5rLJMuZIZHeixnf50
112
+ Is/NK+xc+t25OHwMb2F5zF0T4WChtat6S/Efleztee1DRr+50cyUG91MLRrKKUXY
113
+ tRtvfTEbrTtXbL1phmYPLtAIvzesz+jCxVW3BPzp1OSqSk/8Ln/Y3/2Q0aYbTUqI
114
+ b2Mv+/V60/6KTnmkfxVbXyF2KqaxHt4VaXn1fVxVtQvKlnBhyVgqAE6MTU81XSMd
115
+ rciPlarDtq4feRWw7I70UH0MqpMJalJzN4KwsxZtfwSNugeZzd/R99xD0j+ZIqTq
116
+ tjcOk1mj+Q/Fuk7SdK//+q27oiB67hYRw7PgYwIDAQABAoIBAFn35t3muiVuKO25
117
+ sKrveT7zGSsIfJerx3UBvvtI1tkugPSGex5OCh7bZwRzHb48HLn948hYAoaUqgS6
118
+ 9w11sSS2is3V63jAvxYhleZD7OY802ekRNNXtx4bwAXnihTxxAWW8/75T7Dw06Nq
119
+ 8EY7/3Up8895u2spmXfdhWb6Zot/ZI3nsHhvFcJ2+T1FwWR73eZ7PpPuAUeFaVaU
120
+ z6B9CJQUN8ow5lxgbPHHg26Dx7gtXUqL3VPomwdNjW19xvHXjSMVCdDxZi2OKcZ7
121
+ /K4qAzwa91bahX0jgmBdVzn01gR5T2y51mxaZOC/u6nPVTAw7NBIEMVZxbuj1f9a
122
+ /Lju5aECgYEA+EnVMv+TlXuHrw9R5p52w0sWnndvzbxV9Pdvjqi7lqXRypaOVxZy
123
+ z6fbKG0yANxqBgsdXdRvtEiSDbMzTfB5kYDZkqShs0gVDCMGcRM3paExYwfl61RS
124
+ c1ufTId2LnxSTtSKJAdezTedBsl0DgTdGB/5sniuZee2u4WBo8/bDXMCgYEA0p1S
125
+ flR9afmmqCzf8uSwpymAfS4/4tz+JjeJSnEhesKahHa88okFWtcne1OHV3F0CBgb
126
+ erEJ5cs5d1P4ycAJMTuRFQbU8dvZzAhkYOnHbzvgznXKYsryIMMxHqDiY8Klw4G8
127
+ obdBCfrWw8B7ONpGkmbC56v1yEijXPQWWVMBJVECgYAi8vmgsRsMGpRRzv0/UiTz
128
+ fnlTmwpQ0mbjEYVRdmzZWsP6GVE17wIAOud9fElil6QQ77WVhJaosOJmLUhWezgR
129
+ hCqcGrJsMwRLbg61EfhuRw9VmkIB6x+j/0ygEB1Rk8xeLkq3oZX1mxNuZiMA6ixY
130
+ /f8+4P/jdkdhg/xom5SBAwKBgQCl+F3yuagfJCIF818DrN3czSK5AwJLR7Vr7mXd
131
+ aOtmLwbPDjb1ta6nmFc/o2JLMVerrTuyYuMW2CBP/bdXXWKhDnzVIg4bDhJC6/YW
132
+ PQPxjzEn4cD8O0u1L7x8k3H0BYbVW16H3b5+G9K0bfFsqu3kHuDG6kcEbuF1tdAK
133
+ 0hNcEQKBgAeO8oRYYS4MYR92d7ocVwxkO0h5ehJX/xfT8XHmqzO7SpCl1AXQbkkB
134
+ YJqlziGZ/XVdKtvEhRM3ATTTLOX+Ry48O2xmsbp2Nr39ZGeH5Eg99sQSurtYWYwU
135
+ /zXXsixLOIkik0GlJRbRO5rFW61Co9/hMzMfhamYz9OlMMCuJw/W
136
+ -----END RSA PRIVATE KEY-----
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Pushify
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'pushify'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install pushify
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( http://github.com/<my-github-username>/pushify/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ require "bundler/gem_tasks"
2
+ require 'dotenv'
3
+ Dotenv.load
data/bin/pushofy.rb ADDED
@@ -0,0 +1,86 @@
1
+ require_relative "../lib/pushofy/applepush"
2
+ require_relative "../lib/pushofy/androidpush"
3
+ require_relative "../lib/pushofy/push"
4
+ require "active_support/core_ext"
5
+
6
+ # puts "Enter the message you want to send >"
7
+ # message = gets.chomp
8
+ # puts "Select the device you want to push to: "
9
+ # puts "iOS (1)"
10
+ # puts "Android(2)"
11
+ # choice = gets.to_i
12
+
13
+ # if choice == 1
14
+ # puts "Enter the device token of the iOS device:"
15
+ # device_token = gets.chomp
16
+ # puts "Enter the certificate name >"
17
+ # cert_name = gets.chomp
18
+
19
+ # payload_hash = {}
20
+ # payload_hash['aps'] = {}
21
+ # payload_hash['aps']['alert'] = {}
22
+ # payload_hash['aps']['alert']['body'] = message
23
+ # payload_hash['aps']['sound'] = 'default'
24
+ # payload_hash['aps']['badge'] = 1
25
+ # payload_hash['app'] = "dsfsdf"
26
+ # payload_hash['url'] = "dsfdfdsf"
27
+
28
+
29
+ # Pushofy::ApplePush.new(payload_hash, device_token,"/#{cert_name}").push
30
+ # elsif choice == 2
31
+ # puts "Enter the device registration id of the Android device:"
32
+ # device_registration = gets.chomp
33
+ # puts "Enter the api-key >"
34
+ # api_key = gets.chomp
35
+
36
+ # body = {}
37
+ # arr = []
38
+ # arr << device_registration
39
+ # body['registration_ids'] = arr
40
+ # app = "asdasd"
41
+ # from = "SAdasd"
42
+ # url = "asdas"
43
+ # android_payload = { 'message' => message }
44
+ # android_payload['app'] = app
45
+ # android_payload['url'] = url
46
+ # body['data'] = android_payload
47
+
48
+
49
+ # a = Pushofy::AndroidPush.new(body,api_key).push
50
+ # end
51
+
52
+ # Things needed
53
+ # 1. Certificate CertificateName
54
+ # 2. device_token_hex
55
+ # 3. message
56
+ payload_hash = {}
57
+ payload_hash['aps'] = {}
58
+ payload_hash['aps']['alert'] = {}
59
+ payload_hash['aps']['alert']['body'] = "You have a new asdsada"
60
+ payload_hash['aps']['sound'] = 'default'
61
+ payload_hash['aps']['badge'] = 1
62
+ payload_hash['app'] = "dsfsdf"
63
+ payload_hash['url'] = "dsfdfdsf"
64
+
65
+ device_token_hex = "a078f1658f68521a278d0f5c41b9c4b0613e4a6ddc157fd8ed1567cda5634da4"
66
+ # puts payload_hash
67
+ Pushofy::ApplePush.new(payload_hash, device_token_hex,'/Users/apple/Documents/workspace/pushofy/CertificateName.pem').push
68
+
69
+ # # Things needed
70
+ # # 1. key
71
+ # # 2. device_token_hex
72
+ # # 3. message
73
+ body = {}
74
+ arr = []
75
+ arr << "APA91bFrtSnrO-ySKb8wn4Jevou1qpsOVXzqVSxzMcKEkgvcDsnqt1-3VPEYoMQZeQyPajffJo3s7ra5KrfBUhpdRJkXVe43mOWeIKc8y2H9SMqvgrbtOTBvS69sNhUmLX0FQK5s1h8q"
76
+ body['registration_ids'] = arr
77
+ app = "asdasd"
78
+ from = "SAdasd"
79
+ url = "asdas"
80
+ android_payload = { 'message' => "You have a new #{app} from #{from}" }
81
+ android_payload['app'] = app
82
+ android_payload['url'] = url
83
+ body['data'] = android_payload
84
+ p body
85
+ a = Pushofy::AndroidPush.new(body,"AIzaSyCoTPiIlC9OKuLh6i66focOp3zygWWOKXs")
86
+ a.push
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'net/http'
3
+ require 'net/https'
4
+ require 'uri'
5
+ #
6
+ module Pushofy
7
+ class AndroidPush
8
+ def initialize(body,api_key)
9
+ @api_key = api_key
10
+ @body = body
11
+ end
12
+ def push
13
+ uri = URI('https://android.googleapis.com/gcm/send')
14
+ auth_key = "key=#{@api_key}"
15
+ p auth_key
16
+ headers = { 'Content-Type' => 'application/json',
17
+ 'Authorization' => auth_key }
18
+ http = Net::HTTP.new(uri.host, uri.port)
19
+ http.use_ssl = true
20
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
21
+ http.post(uri.path, @body.to_json, headers)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'payload'
2
+ #
3
+ module Pushofy
4
+ class ApplePayload < Payload
5
+ attr_accessor :message
6
+ attr_accessor :sound_name
7
+ attr_accessor :badge_number
8
+ attr_accessor :action_key_caption
9
+ attr_accessor :dict
10
+ def initialize(message, sound_name, badge_number, action_key_caption, dict)
11
+ @message = message
12
+ @sound_name = sound_name
13
+ @badge_number = badge_number
14
+ @action_key_caption = action_key_caption
15
+ @dict = dict
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,44 @@
1
+ require 'rubygems'
2
+ require 'socket'
3
+ require_relative 'applepayload'
4
+ require_relative 'ssl_helper'
5
+ require 'openssl'
6
+ #
7
+ module Pushofy
8
+ class ApplePush
9
+ def initialize(payload_hash, deviceTokenHex,cert_name)
10
+ @payload_hash = payload_hash
11
+ @deviceTokenHex = deviceTokenHex
12
+ @cert_name = cert_name
13
+ end
14
+ def push
15
+ host = 'gateway.push.apple.com'
16
+ # path = Dir.pwd + '/app/controllers/ProductionCertificate.pem'
17
+ path = @cert_name
18
+ puts path
19
+ ssl_client = Pushofy::ConnectionToAppleServer::ssl_connect("gateway.push.apple.com", 2195, path)
20
+ ssl_client.connect
21
+ device = [@deviceTokenHex]
22
+ device_token_binary = device.pack('H*')
23
+ pt = device_token_binary
24
+ pm = @payload_hash.to_json
25
+ message = [0, 0, 32, pt, 0, pm.size, pm].pack('ccca*cca*')
26
+ ssl_client.write(message)
27
+ ssl_client.flush
28
+ end
29
+
30
+ def feedback
31
+ host = 'feedback.sandbox.push.apple.com'
32
+ path = Dir.pwd + '/app/controllers/CertificateName.pem'
33
+ ssl_client = Pushofy::ConnectionToAppleServer::ssl_connect(host, 2196, path)
34
+ ssl_client.connect
35
+ apns_feedback = []
36
+ while message = ssl_client.gets
37
+ timestamp, _token_size, token = message.unpack('N1n1H*')
38
+ apns_feedback << [Time.at(timestamp), token]
39
+ end
40
+ ssl.close
41
+ sock.close
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,4 @@
1
+ module Pushofy
2
+ class Payload
3
+ end
4
+ end
@@ -0,0 +1,65 @@
1
+ require "pushofy/version"
2
+ require 'rubygems'
3
+ require 'socket'
4
+ require_relative 'applepayload'
5
+ require_relative 'ssl_helper'
6
+ require 'openssl'
7
+ module Pushofy
8
+ #
9
+ class Push
10
+
11
+ def initialize(args = {})
12
+ @id = args[:id]
13
+ @message = args[:message]
14
+ @app = args[:app]
15
+ @from = args[:from]
16
+ end
17
+
18
+
19
+
20
+ def send_push
21
+ device = Device.find(@id)
22
+ device_type = device.device_type
23
+ if device_type == 'IOS' && !device_type.nil?
24
+ send_to_ios(device)
25
+ elsif device_type == 'Android' && !device_type.nil?
26
+ send_to_android(device)
27
+ end
28
+ end
29
+
30
+ def send_to_ios(device)
31
+
32
+ payload_hash = {}
33
+ payload_hash['aps'] = {}
34
+ payload_hash['aps']['alert'] = {}
35
+ payload_hash['aps']['alert']['body'] = "You have a new #{@app} from #{@from}"
36
+ payload_hash['aps']['sound'] = 'default'
37
+ payload_hash['aps']['badge'] = 1
38
+ payload_hash['app'] = @app
39
+ payload_hash['url'] = @message
40
+ device_token_hex = device.registration_id
41
+ puts "AAAAAA"
42
+ puts payload_hash
43
+ ApplePush.new(payload_hash, device_token_hex).push
44
+ end
45
+
46
+ def send_to_android(device)
47
+ body = {}
48
+ arr = []
49
+ arr << device.registration_id
50
+ body['registration_ids'] = arr
51
+ # body['collapse_key'] = 'Updates Available'
52
+ # body['registration_ids'] = registration_ids
53
+ # body['data'] = 'Hi this is my first push message'
54
+ # body['delay_while_idle'] = # true or false
55
+ # body['time_to_live'] = # number in seconds
56
+ android_payload = { 'message' => "You have a new #{app} from #{from}" }
57
+ android_payload['app'] = @app
58
+ android_payload['url'] = @message
59
+ body['data'] = android_payload
60
+ a = AndroidPush.new
61
+ a.push(body)
62
+ end
63
+ end
64
+
65
+ end
@@ -0,0 +1,18 @@
1
+ require 'openssl'
2
+ require 'socket'
3
+ require_relative 'sslconnection'
4
+
5
+ module Pushofy
6
+ module ConnectionToAppleServer
7
+ def self.ssl_connect(host, port, cerfile)
8
+ ssl_connect = SSLConnection.new
9
+ ssl_connect.context = OpenSSL::SSL::SSLContext.new
10
+ key4_pem = File.read(cerfile)
11
+ ssl_connect.context.key = OpenSSL::PKey::RSA.new(key4_pem, 'akk322')
12
+ ssl_connect.context.cert = OpenSSL::X509::Certificate.new(key4_pem)
13
+ host = 'gateway.push.apple.com'
14
+ ssl_connect.tcp_client = TCPSocket.new host, 2195
15
+ OpenSSL::SSL::SSLSocket.new(ssl_connect.tcp_client, ssl_connect.context)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ require 'openssl'
2
+ #
3
+ module Pushofy
4
+ class SSLConnection
5
+ attr_accessor :context, :tcp_client, :ssl_client
6
+ def initialize
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Pushofy
2
+ VERSION = "0.0.11"
3
+ end
data/lib/pushofy.rb ADDED
File without changes
data/pushofy.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pushofy/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "pushofy"
8
+ spec.version = Pushofy::VERSION
9
+ spec.authors = ["Ankur Kothari"]
10
+ spec.email = ["ankothari@gmail.com"]
11
+ spec.summary = "Sending push notifications to Android and iOS devices."
12
+ spec.description = "Send push notifications to Android and iOS devices by maping the device unique id with their device token or registration id."
13
+ spec.homepage = "http://developer.idlecampus.com"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
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.5"
22
+ spec.add_development_dependency "rake"
23
+
24
+ spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency 'dotenv'
26
+
27
+ end
File without changes
File without changes
@@ -0,0 +1,37 @@
1
+ require_relative '../../lib/pushofy/push'
2
+ describe Pushofy::Push do
3
+
4
+ before do
5
+
6
+ args = {}
7
+ args['id'] = "sadsda"
8
+ args['message'] = "message"
9
+ args['app'] = "app"
10
+ args['from'] = "from"
11
+
12
+ @push = Pushofy::Push.new(args)
13
+ end
14
+ subject {@push}
15
+ it{should respond_to(:send_push)}
16
+ it{should respond_to(:send_to_android)}
17
+ it{should respond_to(:send_to_ios)}
18
+
19
+ # context "#send_push" do
20
+ # it "sends a push to the device depending on the device type" do
21
+ # @push.send_push
22
+
23
+ # end
24
+ # end
25
+
26
+ context "#send_to_android" do
27
+ it "sends a push to the android device" do
28
+ @push.send_to_android
29
+ end
30
+ end
31
+
32
+ context "#send_to_ios" do
33
+ it "sends a push to the ios device" do
34
+ @push.send_to_ios
35
+ end
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pushofy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.11
5
+ platform: ruby
6
+ authors:
7
+ - Ankur Kothari
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-01 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.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
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
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dotenv
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Send push notifications to Android and iOS devices by maping the device
70
+ unique id with their device token or registration id.
71
+ email:
72
+ - ankothari@gmail.com
73
+ executables:
74
+ - pushofy.rb
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - .gitignore
79
+ - .rspec
80
+ - CertificateName.pem
81
+ - Gemfile
82
+ - LICENSE.txt
83
+ - ProductionCertificate.pem
84
+ - README.md
85
+ - Rakefile
86
+ - bin/pushofy.rb
87
+ - lib/pushofy.rb
88
+ - lib/pushofy/androidpush.rb
89
+ - lib/pushofy/applepayload.rb
90
+ - lib/pushofy/applepush.rb
91
+ - lib/pushofy/payload.rb
92
+ - lib/pushofy/push.rb
93
+ - lib/pushofy/ssl_helper.rb
94
+ - lib/pushofy/sslconnection.rb
95
+ - lib/pushofy/version.rb
96
+ - pushofy.gemspec
97
+ - spec/pushofy/androidpush_spec.rb
98
+ - spec/pushofy/applepush_spec.rb
99
+ - spec/pushofy/push_spec.rb
100
+ homepage: http://developer.idlecampus.com
101
+ licenses:
102
+ - MIT
103
+ metadata: {}
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubyforge_project:
120
+ rubygems_version: 2.1.10
121
+ signing_key:
122
+ specification_version: 4
123
+ summary: Sending push notifications to Android and iOS devices.
124
+ test_files:
125
+ - spec/pushofy/androidpush_spec.rb
126
+ - spec/pushofy/applepush_spec.rb
127
+ - spec/pushofy/push_spec.rb