stella_gcm_xmpp 0.0.1beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/stella_gcm_xmpp.rb +67 -0
- metadata +71 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 68d3f2777ca4b106cae5ef6e5c2c04dddf75ed3f
|
4
|
+
data.tar.gz: a3e39945cf8eed4ee93d198ccaf67b6290fca955
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a2c8ce560fdddcedae657e9415ca9064dd0069b5531e8151d937633466d47aa40fc65a8cf58980440397800899214373e74ff68d1ff348995de1f6c841db177c
|
7
|
+
data.tar.gz: 79afc6c4b2979c2d9b152e838f222978ed9b9a16561053ddb72af5b1756afd7e8c28dffb798858b4557302a84cc32f305e5f91c5a656ff023367da277d2d0c66
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'xmpp4r/client'
|
2
|
+
require 'active_support/json'
|
3
|
+
require 'active_support/core_ext/hash'
|
4
|
+
|
5
|
+
class StellaGcmXmpp
|
6
|
+
def initialize(id, password, debug = false, log = false)
|
7
|
+
@id = id
|
8
|
+
@password = password
|
9
|
+
@log = log
|
10
|
+
Jabber::debug = debug
|
11
|
+
end
|
12
|
+
def connect
|
13
|
+
jid = Jabber::JID::new(@id)
|
14
|
+
|
15
|
+
@client = Jabber::Client::new(jid)
|
16
|
+
@client.use_ssl = true
|
17
|
+
@client.connect("gcm.googleapis.com", 5235)
|
18
|
+
@client.auth(@password)
|
19
|
+
end
|
20
|
+
def callback(function = nil)
|
21
|
+
@client.add_message_callback do |m|
|
22
|
+
begin
|
23
|
+
result = Hash.from_xml(m.to_s).with_indifferent_access
|
24
|
+
rescue
|
25
|
+
return self.fail
|
26
|
+
end
|
27
|
+
begin
|
28
|
+
data = JSON.parse(result[:message][:gcm]).with_indifferent_access
|
29
|
+
rescue
|
30
|
+
return self.fail
|
31
|
+
end
|
32
|
+
if data[:message_type] == 'ack'
|
33
|
+
print "[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] GCM send Success id: #{data[:message_id]}\n" if @log && data[:message_id].to_s != 'BLANK_STABLE_PACKET'
|
34
|
+
else
|
35
|
+
print "[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] GCM send Failed id: #{data[:message_id]} error: #{data[:error]}\n" if @log && data[:message_id].to_s != 'BLANK_STABLE_PACKET'
|
36
|
+
end
|
37
|
+
call(function) unless function.nil?
|
38
|
+
end
|
39
|
+
end
|
40
|
+
def fail
|
41
|
+
print "[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] GCM send Critical Error\n" if @log
|
42
|
+
end
|
43
|
+
def send(to, message_id, data)
|
44
|
+
json = {:to => to,
|
45
|
+
:message_id => message_id,
|
46
|
+
:data => data,
|
47
|
+
:time_to_live => 600,
|
48
|
+
:delay_while_idle => false}
|
49
|
+
msg = "<message id=\"\">
|
50
|
+
<gcm xmlns=\"google:mobile:data\">
|
51
|
+
#{json.to_json}
|
52
|
+
</gcm>
|
53
|
+
</message>"
|
54
|
+
@client.send msg
|
55
|
+
end
|
56
|
+
def disconnect
|
57
|
+
@client.close
|
58
|
+
@client = nil
|
59
|
+
end
|
60
|
+
def reconnect
|
61
|
+
self.reconnect
|
62
|
+
self.connect
|
63
|
+
end
|
64
|
+
def stable_blank
|
65
|
+
self.send("NULL", "BLANK_STABLE_PACKET", {:type => nil})
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: stella_gcm_xmpp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1beta
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Haru
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: xmpp4r
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.2'
|
41
|
+
description: ''
|
42
|
+
email: aqure84@naver.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/stella_gcm_xmpp.rb
|
48
|
+
homepage: http://www.forelf.com
|
49
|
+
licenses: []
|
50
|
+
metadata: {}
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.9'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 1.3.6
|
65
|
+
requirements: []
|
66
|
+
rubyforge_project: stella_gcm_xmpp
|
67
|
+
rubygems_version: 2.2.2
|
68
|
+
signing_key:
|
69
|
+
specification_version: 4
|
70
|
+
summary: ''
|
71
|
+
test_files: []
|