pushofy 0.0.11

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: 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