rhoconnect 5.5.18 → 7.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb0212ed5b5d4931d9329f4c5732fbea7b28c687
4
- data.tar.gz: 2cf0a537040d34e5b5a5e27c94f5e89828c646ec
3
+ metadata.gz: 8c099bf011ac9d86069e43c087202b4d081f4335
4
+ data.tar.gz: 145a100fe9af03dc3f9d4e89d7d1030fc9d774e1
5
5
  SHA512:
6
- metadata.gz: 1f63b9ee508b043b658cc190cddac92d83a525224cad111c98aa6dd7ab91f28834173c2dab202762259b02e12813f69dec972098bcedd2e7f021bc032c326629
7
- data.tar.gz: 9d3a17a59c53e9b810e3376cc8db871eb903ea5bf48faefc3cf3f77a8f15c54df560b9e7f33c900ba2bf5bd820a553c7a0f66ebbda3e34b919b3150a36965677
6
+ metadata.gz: 38f3190d8eb2b9373edcd6a3131abe0fca94c895a5ce7fe8bf3cece8521c841db825a20964f5b9fd454baf05b07a7270e041ff11c8ac9f21a230473fe6c80621
7
+ data.tar.gz: 858ca815f2d4dff5c39e19abdc524b529fbf5b9823f68ec61ef8e4a0a8a2e57e8ceeb90384543935c3b605a1f572725a338d102f005a6cae0de482bfa760d3f6
data/Gemfile CHANGED
@@ -13,7 +13,7 @@ platforms :ruby, :mingw do
13
13
  # for async framework
14
14
  # for Async, Eventful execution
15
15
  gem 'rack-fiber_pool'
16
- gem 'async-rack'
16
+ gem 'async-rack', :git => 'https://github.com/tauplatform/async-rack.git'
17
17
  end
18
18
 
19
19
  platforms :jruby do
@@ -27,21 +27,28 @@ end
27
27
 
28
28
  group :development do
29
29
  # gem 'debugger'
30
- gem 'aws-s3', '>= 0.6.2', :require => 'aws/s3'
31
- gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
32
- gem "excon", "~> 0.22.1"
33
- gem "fog", "~> 1.11.1"
34
- gem 'ffaker', '~> 1.14.0'
35
- gem 'webmock', '~> 1.9.0'
30
+ gem 'aws-s3', '>= 0.6.3', :require => 'aws/s3'
31
+ gem 'sqlite3', ">= 1.4.0", :platforms => [:ruby, :mswin, :mingw]
32
+ gem "excon", "~> 0.72.0"
33
+ gem "net-ssh", "~> 5.2.0"
34
+ gem "fog-aws", "~> 3.4.0"
35
+ gem 'ffaker', '~> 2.10.0'
36
+ gem 'webmock', '~> 3.5.1'
36
37
  end
37
38
 
38
39
  group :test do
39
- gem 'rspec', '~> 2.14.0'
40
- gem 'simplecov', '>= 0.7.1', :require => false
40
+ gem 'rspec', '~> 3.8.0'
41
+ gem 'simplecov', '>= 0.16.1', :require => false
41
42
  gem 'simplecov-rcov', '~> 0.2.3'
42
- gem 'rack-test', '~> 0.6', :require => 'rack/test'
43
+ gem 'rack-test', '~> 1.1.0', :require => 'rack/test'
44
+ #gem 'jasmine', :platforms => [:ruby,:jruby]
45
+ #gem 'jasmine-headless-webkit', '~> 0.8.4', :platforms => [:ruby,:jruby]
43
46
  end
44
47
 
45
48
  group :build do
46
- gem 'fpm', '>= 0.4.26'
49
+ gem 'fpm', '>= 1.11.00'
47
50
  end
51
+
52
+ gem 'signet', '~> 0.7'
53
+ gem 'google-api-client', '~> 0.31.0'
54
+ gem 'google-api-fcm', '~> 0.1.7'
data/Gemfile.lock CHANGED
@@ -1,176 +1,254 @@
1
+ GIT
2
+ remote: https://github.com/tauplatform/async-rack.git
3
+ revision: 4f411e7b416894a52426eb3b26c2415e5ead927e
4
+ specs:
5
+ async-rack (0.5.2)
6
+ rack (~> 2.0)
7
+
1
8
  PATH
2
9
  remote: .
3
10
  specs:
4
- rhoconnect (5.5.18)
5
- bundler (~> 1.0)
6
- connection_pool (~> 1.2.0)
7
- json (~> 1.8)
8
- rack (~> 1.5.2)
9
- rake (~> 10.4.0)
10
- redis (>= 3.0.1)
11
- resque (>= 1.22.0)
12
- rest-client (~> 1.6.1)
13
- rubyzip (~> 1.1)
14
- sinatra (~> 1.4)
15
- thor (~> 0.18.0)
11
+ rhoconnect (7.1.0)
12
+ bundler (~> 1.17.3)
13
+ connection_pool (~> 2.2.2)
14
+ google-api-client (~> 0.31.0)
15
+ google-api-fcm (~> 0.1.7)
16
+ json (>= 1.8, < 2.0)
17
+ rack (~> 2.0.6)
18
+ rake (~> 12.3.2)
19
+ redis (~> 4.1.0)
20
+ redis-namespace (~> 1.6.0)
21
+ resque (>= 2.0.0)
22
+ rest-client (~> 2.0.2)
23
+ rubyzip (>= 1.2.2, < 2.1.0)
24
+ signet (~> 0.11.0)
25
+ sinatra (~> 2.0.5)
26
+ thor (~> 0.20.3)
16
27
 
17
28
  GEM
18
29
  remote: https://rubygems.org/
19
30
  specs:
20
- addressable (2.5.0)
21
- public_suffix (~> 2.0, >= 2.0.2)
22
- archive-tar-minitar (0.5.2)
31
+ addressable (2.7.0)
32
+ public_suffix (>= 2.0.2, < 5.0)
23
33
  arr-pm (0.0.10)
24
34
  cabin (> 0)
25
- async-rack (0.5.1)
26
- rack (~> 1.1)
27
35
  aws-s3 (0.6.3)
28
36
  builder
29
37
  mime-types
30
38
  xml-simple
31
- backports (3.6.8)
32
- builder (3.2.3)
39
+ backports (3.16.1)
40
+ builder (3.2.4)
33
41
  cabin (0.9.0)
34
- childprocess (0.6.3)
42
+ childprocess (0.9.0)
35
43
  ffi (~> 1.0, >= 1.0.11)
36
44
  clamp (1.0.1)
37
- connection_pool (1.2.0)
45
+ connection_pool (2.2.2)
38
46
  crack (0.4.3)
39
47
  safe_yaml (~> 1.0.0)
40
- daemons (1.2.4)
48
+ daemons (1.3.1)
49
+ declarative (0.0.10)
50
+ declarative-option (0.1.0)
41
51
  diff-lcs (1.3)
42
- docile (1.1.5)
43
- dotenv (2.2.0)
52
+ docile (1.3.2)
53
+ domain_name (0.5.20190701)
54
+ unf (>= 0.0.5, < 1.0.0)
55
+ dotenv (2.7.5)
44
56
  eventmachine (1.0.9.1)
45
- excon (0.22.1)
46
- ffaker (1.14.0)
47
- ffi (1.9.18)
48
- fog (1.11.1)
57
+ excon (0.72.0)
58
+ faraday (0.17.3)
59
+ multipart-post (>= 1.2, < 3)
60
+ ffaker (2.10.0)
61
+ ffi (1.12.2)
62
+ fog-aws (3.4.0)
63
+ fog-core (~> 2.1)
64
+ fog-json (~> 1.1)
65
+ fog-xml (~> 0.1)
66
+ ipaddress (~> 0.8)
67
+ fog-core (2.2.0)
49
68
  builder
50
- excon (~> 0.20)
51
- formatador (~> 0.2.0)
52
- json (~> 1.7)
69
+ excon (~> 0.71)
70
+ formatador (~> 0.2)
53
71
  mime-types
54
- net-scp (~> 1.1)
55
- net-ssh (>= 2.1.3)
56
- nokogiri (~> 1.5.0)
57
- ruby-hmac
72
+ fog-json (1.2.0)
73
+ fog-core
74
+ multi_json (~> 1.10)
75
+ fog-xml (0.1.3)
76
+ fog-core
77
+ nokogiri (>= 1.5.11, < 2.0.0)
58
78
  formatador (0.2.5)
59
- fpm (1.8.1)
60
- archive-tar-minitar (= 0.5.2)
79
+ fpm (1.11.0)
61
80
  arr-pm (~> 0.0.10)
62
81
  backports (>= 2.6.2)
63
82
  cabin (>= 0.6.0)
64
- childprocess
83
+ childprocess (= 0.9.0)
65
84
  clamp (~> 1.0.0)
66
85
  ffi
67
86
  json (>= 1.7.7, < 2.0)
68
- pleaserun (~> 0.0.24)
69
- ruby-xz
87
+ pleaserun (~> 0.0.29)
88
+ ruby-xz (~> 0.2.3)
89
+ stud
90
+ google-api-client (0.31.0)
91
+ addressable (~> 2.5, >= 2.5.1)
92
+ googleauth (>= 0.5, < 0.10.0)
93
+ httpclient (>= 2.8.1, < 3.0)
94
+ mini_mime (~> 1.0)
95
+ representable (~> 3.0)
96
+ retriable (>= 2.0, < 4.0)
97
+ signet (~> 0.10)
98
+ google-api-fcm (0.1.7)
99
+ google-api-client (~> 0.17)
100
+ googleauth (0.9.0)
101
+ faraday (~> 0.12)
102
+ jwt (>= 1.4, < 3.0)
103
+ memoist (~> 0.16)
104
+ multi_json (~> 1.11)
105
+ os (>= 0.9, < 2.0)
106
+ signet (~> 0.7)
107
+ hashdiff (1.0.0)
108
+ http-cookie (1.0.3)
109
+ domain_name (~> 0.5)
110
+ httpclient (2.8.3)
70
111
  insist (1.0.0)
71
- io-like (0.3.0)
112
+ io-like (0.3.1)
113
+ ipaddress (0.8.3)
72
114
  json (1.8.6)
73
- mime-types (1.25.1)
115
+ jwt (2.2.1)
116
+ memoist (0.16.2)
117
+ mime-types (3.3.1)
118
+ mime-types-data (~> 3.2015)
119
+ mime-types-data (3.2019.1009)
120
+ mini_mime (1.0.2)
121
+ mini_portile2 (2.4.0)
74
122
  mono_logger (1.1.0)
75
- multi_json (1.12.1)
123
+ multi_json (1.14.1)
124
+ multipart-post (2.1.1)
76
125
  mustache (0.99.8)
77
- net-scp (1.2.1)
78
- net-ssh (>= 2.6.5)
79
- net-ssh (4.1.0)
80
- nokogiri (1.5.11)
81
- pleaserun (0.0.28)
126
+ mustermann (1.1.1)
127
+ ruby2_keywords (~> 0.0.1)
128
+ net-ssh (5.2.0)
129
+ netrc (0.11.0)
130
+ nokogiri (1.10.8)
131
+ mini_portile2 (~> 2.4.0)
132
+ os (1.0.1)
133
+ pleaserun (0.0.30)
82
134
  cabin (> 0)
83
135
  clamp
84
136
  dotenv
85
137
  insist
86
138
  mustache (= 0.99.8)
87
139
  stud
88
- public_suffix (2.0.5)
89
- rack (1.5.5)
140
+ public_suffix (4.0.3)
141
+ rack (2.0.9)
90
142
  rack-fiber_pool (0.9.3)
91
- rack-protection (1.5.3)
143
+ rack-protection (2.0.8.1)
92
144
  rack
93
- rack-test (0.6.3)
94
- rack (>= 1.0)
95
- rake (10.4.2)
96
- redis (3.3.3)
97
- redis-namespace (1.5.3)
98
- redis (~> 3.0, >= 3.0.4)
99
- resque (1.27.2)
145
+ rack-test (1.1.0)
146
+ rack (>= 1.0, < 3)
147
+ rake (12.3.3)
148
+ redis (4.1.3)
149
+ redis-namespace (1.6.0)
150
+ redis (>= 3.0.4)
151
+ representable (3.0.4)
152
+ declarative (< 0.1.0)
153
+ declarative-option (< 0.2.0)
154
+ uber (< 0.2.0)
155
+ resque (2.0.0)
100
156
  mono_logger (~> 1.0)
101
157
  multi_json (~> 1.0)
102
- redis-namespace (~> 1.3)
158
+ redis-namespace (~> 1.6)
103
159
  sinatra (>= 0.9.2)
104
160
  vegas (~> 0.1.2)
105
- rest-client (1.6.9)
106
- mime-types (~> 1.16)
107
- rspec (2.14.1)
108
- rspec-core (~> 2.14.0)
109
- rspec-expectations (~> 2.14.0)
110
- rspec-mocks (~> 2.14.0)
111
- rspec-core (2.14.8)
112
- rspec-expectations (2.14.5)
113
- diff-lcs (>= 1.1.3, < 2.0)
114
- rspec-mocks (2.14.6)
115
- ruby-hmac (0.4.0)
161
+ rest-client (2.0.2)
162
+ http-cookie (>= 1.0.2, < 2.0)
163
+ mime-types (>= 1.16, < 4.0)
164
+ netrc (~> 0.8)
165
+ retriable (3.1.2)
166
+ rspec (3.8.0)
167
+ rspec-core (~> 3.8.0)
168
+ rspec-expectations (~> 3.8.0)
169
+ rspec-mocks (~> 3.8.0)
170
+ rspec-core (3.8.2)
171
+ rspec-support (~> 3.8.0)
172
+ rspec-expectations (3.8.6)
173
+ diff-lcs (>= 1.2.0, < 2.0)
174
+ rspec-support (~> 3.8.0)
175
+ rspec-mocks (3.8.2)
176
+ diff-lcs (>= 1.2.0, < 2.0)
177
+ rspec-support (~> 3.8.0)
178
+ rspec-support (3.8.3)
116
179
  ruby-xz (0.2.3)
117
180
  ffi (~> 1.9)
118
181
  io-like (~> 0.3)
119
- rubyzip (1.2.1)
120
- safe_yaml (1.0.4)
121
- simplecov (0.14.1)
122
- docile (~> 1.1.0)
123
- json (>= 1.8, < 3)
124
- simplecov-html (~> 0.10.0)
125
- simplecov-html (0.10.0)
182
+ ruby2_keywords (0.0.2)
183
+ rubyzip (2.0.0)
184
+ safe_yaml (1.0.5)
185
+ signet (0.11.0)
186
+ addressable (~> 2.3)
187
+ faraday (~> 0.9)
188
+ jwt (>= 1.5, < 3.0)
189
+ multi_json (~> 1.10)
190
+ simplecov (0.18.2)
191
+ docile (~> 1.1)
192
+ simplecov-html (~> 0.11)
193
+ simplecov-html (0.12.0)
126
194
  simplecov-rcov (0.2.3)
127
195
  simplecov (>= 0.4.1)
128
- sinatra (1.4.8)
129
- rack (~> 1.5)
130
- rack-protection (~> 1.4)
131
- tilt (>= 1.3, < 3)
132
- sqlite3 (1.3.13)
133
- stud (0.0.22)
134
- thin (1.7.0)
196
+ sinatra (2.0.8.1)
197
+ mustermann (~> 1.0)
198
+ rack (~> 2.0)
199
+ rack-protection (= 2.0.8.1)
200
+ tilt (~> 2.0)
201
+ sqlite3 (1.4.2)
202
+ stud (0.0.23)
203
+ thin (1.7.2)
135
204
  daemons (~> 1.0, >= 1.0.9)
136
205
  eventmachine (~> 1.0, >= 1.0.4)
137
206
  rack (>= 1, < 3)
138
- thor (0.18.1)
139
- tilt (2.0.7)
207
+ thor (0.20.3)
208
+ tilt (2.0.10)
209
+ uber (0.1.0)
210
+ unf (0.1.4)
211
+ unf_ext
212
+ unf_ext (0.0.7.6)
140
213
  vegas (0.1.11)
141
214
  rack (>= 1.0.0)
142
- webmock (1.9.3)
143
- addressable (>= 2.2.7)
215
+ webmock (3.5.1)
216
+ addressable (>= 2.3.6)
144
217
  crack (>= 0.3.2)
218
+ hashdiff
145
219
  xml-simple (1.1.5)
146
220
 
147
221
  PLATFORMS
148
222
  ruby
149
223
 
150
224
  DEPENDENCIES
151
- async-rack
152
- aws-s3 (>= 0.6.2)
225
+ async-rack!
226
+ aws-s3 (>= 0.6.3)
153
227
  dbd-jdbc (>= 0.1.4)
154
228
  dbi (>= 0.4.5)
155
229
  eventmachine (~> 1.0.5)
156
- excon (~> 0.22.1)
157
- ffaker (~> 1.14.0)
158
- fog (~> 1.11.1)
159
- fpm (>= 0.4.26)
230
+ excon (~> 0.72.0)
231
+ ffaker (~> 2.10.0)
232
+ fog-aws (~> 3.4.0)
233
+ fpm (>= 1.11.00)
234
+ google-api-client (~> 0.31.0)
235
+ google-api-fcm (~> 0.1.7)
160
236
  jdbc-sqlite3 (>= 3.7.2)
161
237
  jruby-openssl (>= 0.7.4)
238
+ net-ssh (~> 5.2.0)
162
239
  puma (~> 1.6.3)
163
240
  rack-fiber_pool
164
- rack-test (~> 0.6)
241
+ rack-test (~> 1.1.0)
165
242
  rhoconnect!
166
- rspec (~> 2.14.0)
167
- simplecov (>= 0.7.1)
243
+ rspec (~> 3.8.0)
244
+ signet (~> 0.7)
245
+ simplecov (>= 0.16.1)
168
246
  simplecov-rcov (~> 0.2.3)
169
- sqlite3 (>= 1.3.3)
247
+ sqlite3 (>= 1.4.0)
170
248
  thin
171
249
  warbler
172
- webmock (~> 1.9.0)
250
+ webmock (~> 3.5.1)
173
251
  win32-process
174
252
 
175
253
  BUNDLED WITH
176
- 1.14.6
254
+ 1.17.3
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://travis-ci.org/rhomobile/rhoconnect.svg?branch=master)](https://travis-ci.org/rhomobile/rhoconnect)
2
+
1
3
  RhoConnect App Integration Server
2
4
  -------------------------------------------------------------
3
5
  RhoConnect is an app integration server which keeps enterprise data current and available on users’ devices.
data/Rakefile CHANGED
@@ -12,7 +12,8 @@ require 'rhoconnect'
12
12
 
13
13
  include Rake::DSL
14
14
  #task :default => 'spec:all'
15
- task :default => ["npm_install","spec:all","jasmine:headless"]
15
+ #task :default => ["npm_install","spec:all","jasmine:headless"]
16
+ task :default => ["npm_install","spec:all"]
16
17
  task :spec => 'spec:spec'
17
18
 
18
19
  begin
@@ -39,7 +40,7 @@ begin
39
40
  RSpec::Core::RakeTask.new("spec:#{type}") do |t|
40
41
  t.rspec_opts = ["-b", "-c", "-fd"]
41
42
  t.pattern = FileList[TYPES[type]]
42
- t.rcov = false
43
+ #t.rcov = false
43
44
  end
44
45
  end
45
46
 
@@ -52,7 +53,7 @@ begin
52
53
  desc "Run doc generator - dumps out doc/protocol.html"
53
54
  RSpec::Core::RakeTask.new('doc') do |t|
54
55
  t.pattern = FileList['spec/doc/*_spec.rb']
55
- t.rcov = false
56
+ #t.rcov = false
56
57
  end
57
58
 
58
59
  rescue LoadError
@@ -1,58 +1,63 @@
1
1
  require 'net/http'
2
+ require 'net/https'
3
+
4
+
5
+ def fetch(uri_str, version, limit = 10)
2
6
 
3
- def fetch(uri_str, limit = 10)
4
7
  raise ArgumentError, 'Too many HTTP redirects' if limit == 0
5
8
 
6
9
  url = URI(uri_str)
7
10
  response = Net::HTTP.get_response(url)
8
-
9
11
  case response
10
12
  when Net::HTTPOK then
11
- Net::HTTP.start(url.host, url.port) do |http|
12
- download_file = open("dtach-0.8.tar.gz", "wb")
13
- begin
14
- http.request_get(url.path) do |resp|
15
- resp.read_body { |segment| download_file.write(segment) }
16
- end
17
- ensure
18
- download_file.close
13
+ http = Net::HTTP.new(url.host, url.port)
14
+ http.use_ssl = true
15
+ file_name = "dtach-#{version}.tar.gz"
16
+ download_file = open(file_name, "wb")
17
+ begin
18
+ http.request_get(url.path) do |resp|
19
+ resp.read_body {|segment| download_file.write(segment)}
19
20
  end
21
+ ensure
22
+ download_file.close
20
23
  end
24
+
21
25
  when Net::HTTPRedirection then
22
26
  location = response['location']
23
27
  puts "Redirected to #{location}"
24
- fetch(location, limit - 1)
28
+ fetch(location, version, limit - 1)
25
29
  else
26
- puts "Failed to download dtach-0.8.tar.gz file. Response code: #{response.value}"
30
+ puts "Failed to download dtach-#{version}.tar.gz file. Response code: #{response.value}"
27
31
  end
28
32
  end
29
33
 
30
34
  Execute.define_task do
31
35
  desc 'dtach-install', 'Install dtach program from sources'
32
36
  def dtach_install
37
+ version = '0.9'
33
38
  dtach_about
34
39
 
35
40
  unless windows?
36
41
  Dir.chdir('/tmp/')
37
- system "rm /tmp/dtach-0.8.tar.gz" if File.exists?('/tmp/dtach-0.8.tar.gz')
38
- system "rm -rf /tmp/dtach-0.8" if File.directory?('/tmp/dtach-0.8')
42
+ system "rm /tmp/dtach-#{version}.tar.gz" if File.exists?("/tmp/dtach-#{version}.tar.gz")
43
+ system "rm -rf /tmp/dtach-#{version}" if File.directory?("/tmp/dtach-#{version}")
39
44
 
40
- uri_str = "http://sourceforge.net/projects/dtach/files/dtach/0.8/dtach-0.8.tar.gz"
41
- fetch(uri_str, limit = 10)
45
+ uri_str = "https://sourceforge.net/projects/dtach/files/dtach/#{version}/dtach-#{version}.tar.gz"
46
+ fetch(uri_str, version, limit = 10)
42
47
 
43
- raise "Failed to download dtach-0.8.tar.gz file." unless File.exists?('dtach-0.8.tar.gz') && File.stat('dtach-0.8.tar.gz').size != 0
48
+ raise "Failed to download dtach-#{version}.tar.gz file." unless File.exists?("dtach-#{version}.tar.gz") && File.stat("dtach-#{version}.tar.gz").size != 0
44
49
 
45
- system('tar xzf dtach-0.8.tar.gz')
46
- Dir.chdir('/tmp/dtach-0.8/')
47
- system 'cd /tmp/dtach-0.8/ && ./configure && make'
50
+ system("tar xzf dtach-#{version}.tar.gz")
51
+ Dir.chdir("/tmp/dtach-#{version}/")
52
+ system "cd /tmp/dtach-#{version}/ && ./configure && make"
48
53
 
49
54
  ENV['PREFIX'] and bin_dir = "#{ENV['PREFIX']}/bin" or bin_dir = "#{RedisRunner.prefix}bin"
50
55
  mkdir_p(bin_dir) unless File.exists?(bin_dir)
51
- system "sudo cp /tmp/dtach-0.8/dtach #{bin_dir}"
56
+ system "sudo cp /tmp/dtach-#{version}/dtach #{bin_dir}"
52
57
 
53
- system "rm /tmp/dtach-0.8.tar.gz"
54
- system "rm -rf /tmp/dtach-0.8"
58
+ system "rm /tmp/dtach-#{version}.tar.gz"
59
+ system "rm -rf /tmp/dtach-#{version}"
55
60
  puts "Dtach successfully installed to #{bin_dir}"
56
61
  end
57
62
  end
58
- end
63
+ end
@@ -19,6 +19,7 @@ Execute.define_task do
19
19
  settings = config(options[:config])
20
20
 
21
21
  port = (params[:port]) ? params[:port] : URI.parse(settings[:syncserver]).port
22
+ host = (params[:host]) ? params[:host] : URI.parse(settings[:syncserver]).host
22
23
 
23
24
  redis_url = (params[:redis]) ? params[:redis] : settings[:redis]
24
25
  redis_url = [redis_url] if redis_url.is_a?(String)
@@ -63,17 +64,17 @@ Execute.define_task do
63
64
 
64
65
  if jruby?
65
66
  puts 'Starting rhoconnect in jruby environment...'
66
- system(env, "#{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
67
+ system(env, "#{command} --host #{host} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
67
68
  elsif windows?
68
69
  puts 'Starting rhoconnect...'
69
- system(env, "#{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
70
+ system(env, "#{command} --host #{host} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
70
71
  else
71
72
  if dtach_installed?
72
73
  puts 'Detach with Ctrl+\ Re-attach with rhoconnect attach'
73
74
  sleep 2
74
- system(env, "dtach -A #{rhoconnect_socket} #{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
75
+ system(env, "dtach -A #{rhoconnect_socket} #{command} --host #{host} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
75
76
  else
76
- system(env, "#{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
77
+ system(env, "#{command} --host #{host} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
77
78
  end
78
79
  end
79
80
  end
@@ -13,7 +13,7 @@ platforms :ruby, :mingw do
13
13
  # for async framework
14
14
  # for Async, Eventful execution
15
15
  gem 'rack-fiber_pool'
16
- gem 'async-rack'
16
+ gem 'async-rack', :git => 'https://github.com/tauplatform/async-rack.git'
17
17
  end
18
18
 
19
19
  platforms :jruby do
@@ -37,7 +37,7 @@ module Rhoconnect
37
37
  invalid_meta[index] ||= {}
38
38
  invalid_meta[index][source_id] ||= {}
39
39
  invalid_meta[index][source_id][objindex] ||= {}
40
- invalid_meta[index][source_id][objindex][:error] = "Error during #{operation}: object confict detected"
40
+ invalid_meta[index][source_id][objindex][:error] = "Error during #{operation}: object conflict detected"
41
41
  else
42
42
  invalid_meta[index] ||= {}
43
43
  invalid_meta[index][source_id] ||= {}
@@ -0,0 +1,74 @@
1
+ require 'google/apis/messages'
2
+
3
+ # https://firebase.google.com/docs/cloud-messaging/auth-server
4
+ # https://github.com/oniksfly/google-api-fcm
5
+
6
+ module Rhoconnect
7
+ class Fcm
8
+ class InvalidProjectId < Exception; end
9
+ class InvalidPackageName < Exception; end
10
+ class FCMPingError < Exception; end
11
+
12
+ def self.ping(params)
13
+ begin
14
+ fcm_project_id = Rhoconnect.settings[:fcm_project_id]
15
+ raise InvalidProjectId.new("Missing `:fcm_project_id:` option in settings/settings.yml") unless fcm_project_id
16
+
17
+ package_name = Rhoconnect.settings[:package_name]
18
+ raise InvalidPackageName.new("Missing `:package_name:` option in settings/settings.yml") unless package_name
19
+
20
+ send_ping_to_device(fcm_project_id, package_name, params)
21
+ rescue InvalidProjectId => error
22
+ log error
23
+ log error.backtrace.join("\n")
24
+ raise error
25
+ rescue InvalidPackageName => error
26
+ log error
27
+ log error.backtrace.join("\n")
28
+ raise error
29
+ rescue Exception => error
30
+ log error
31
+ log error.backtrace.join("\n")
32
+ raise error
33
+ end
34
+ end
35
+
36
+ def self.send_ping_to_device(project_id,package_name,params)
37
+
38
+ scope = Google::Apis::Messages::AUTH_MESSAGES
39
+ authorization = Google::Auth.get_application_default(scope)
40
+
41
+ service = Google::Apis::Messages::MessagesService.new(project_id: project_id)
42
+ service.authorization = authorization
43
+
44
+ service.notify(fcm_message(package_name,params))
45
+
46
+ end
47
+
48
+ def self.fcm_message(package_name,params)
49
+ params.reject! {|k,v| v.nil? || v.length == 0}
50
+ data = {}
51
+ data['do_sync'] = params['sources'] ? params['sources'].join(',') : ''
52
+ data['alert'] = params['message'] if params['message']
53
+ data['vibrate'] = params['vibrate'] if params['vibrate']
54
+ data['sound'] = params['sound'] if params['sound']
55
+ data['phone_id'] = params['phone_id'] if params['phone_id']
56
+
57
+ android = {}
58
+ android['collapse_key'] = (rand * 100000000).to_i.to_s
59
+ android['priority'] = 'high'
60
+ android['restricted_package_name'] = package_name
61
+ android['data'] = data
62
+ android['notification'] = {}
63
+ # android['notification']['title'] = 'Test message'
64
+ android['notification']['body'] = params['message']
65
+
66
+ message = Google::Apis::Messages::Message.new(
67
+ token: params['device_pin'].to_s,
68
+ android: android
69
+ )
70
+
71
+ message
72
+ end
73
+ end
74
+ end