mrpin-sdk 0.3.141 → 1.0.2

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.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +47 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +65 -0
  6. data/Rakefile +1 -0
  7. data/app/assets/stylesheets/mrpin/sign_in.css +32 -0
  8. data/app/assets/stylesheets/mrpin.css.scss +3 -0
  9. data/app/views/devise/sessions/new.html.erb +16 -0
  10. data/app/views/layouts/devise.html.erb +12 -0
  11. data/lib/mrpin/all_files.rb +48 -0
  12. data/lib/mrpin/api/base/api_object.rb +48 -0
  13. data/lib/mrpin/api/base/handler_base.rb +86 -0
  14. data/lib/mrpin/api/base/request_base.rb +15 -0
  15. data/lib/mrpin/api/base/response_base.rb +29 -0
  16. data/lib/mrpin/api/bundles/init/handler_bundles_init.rb +36 -0
  17. data/lib/mrpin/api/bundles/init/request_bundles_init.rb +7 -0
  18. data/lib/mrpin/api/bundles/init/response_bundles_init.rb +5 -0
  19. data/lib/mrpin/api/packs/requests_pack.rb +38 -0
  20. data/lib/mrpin/api/packs/responses_pack.rb +38 -0
  21. data/lib/mrpin/api/platform/base/handler_platform_base.rb +26 -0
  22. data/lib/mrpin/api/platform/base/request_platform_base.rb +54 -0
  23. data/lib/mrpin/api/platform/report/handler_report_error.rb +74 -0
  24. data/lib/mrpin/api/platform/report/request_report_error.rb +20 -0
  25. data/lib/mrpin/api/standard/response_error.rb +19 -0
  26. data/lib/mrpin/api/standard/response_ok.rb +18 -0
  27. data/lib/mrpin/api/standard/response_session_end.rb +21 -0
  28. data/lib/mrpin/api/standard/response_with_url_data.rb +7 -0
  29. data/lib/mrpin/api/system/echo/handler_system_echo.rb +25 -0
  30. data/lib/mrpin/api/system/echo/request_system_echo.rb +19 -0
  31. data/lib/mrpin/config/initializers/00_carrier_wave.rb +4 -0
  32. data/lib/mrpin/config/initializers/01_devise.rb +264 -0
  33. data/lib/mrpin/config/initializers/02_mongo.rb +2 -0
  34. data/lib/mrpin/config/initializers/03_i18n.rb +3 -0
  35. data/lib/mrpin/config/initializers.rb +7 -0
  36. data/lib/mrpin/config/locales/rails_admin.en.yml +10 -0
  37. data/lib/mrpin/controllers/application_controller_base.rb +14 -0
  38. data/lib/mrpin/controllers/system_controller_base.rb +222 -0
  39. data/lib/mrpin/core/admin/admin_user.rb +39 -0
  40. data/lib/mrpin/core/admin/e_admin_user_role.rb +4 -0
  41. data/lib/mrpin/core/app_config_base.rb +48 -0
  42. data/lib/mrpin/core/app_info/app_info_base.rb +413 -0
  43. data/lib/mrpin/core/app_info/e_app_state.rb +13 -0
  44. data/lib/mrpin/core/base/amf_serializable.rb +16 -0
  45. data/lib/mrpin/core/base/enum_base.rb +12 -0
  46. data/lib/mrpin/core/base/info_base.rb +18 -0
  47. data/lib/mrpin/core/base/manager_base.rb +74 -0
  48. data/lib/mrpin/core/base/manager_with_json_data.rb +98 -0
  49. data/lib/mrpin/core/base/model_base.rb +219 -0
  50. data/lib/mrpin/core/bundles/bundle_base.rb +197 -0
  51. data/lib/mrpin/core/bundles/bundle_info_base.rb +29 -0
  52. data/lib/mrpin/core/bundles/e_build_type.rb +7 -0
  53. data/lib/mrpin/core/bundles/manager_bundles_base.rb +56 -0
  54. data/lib/mrpin/core/constants/constants_remote.rb +14 -0
  55. data/lib/mrpin/core/currency_exchanger/base/exchanger_base.rb +21 -0
  56. data/lib/mrpin/core/currency_exchanger/currency_exchanger.rb +40 -0
  57. data/lib/mrpin/core/currency_exchanger/e_currency_type.rb +8 -0
  58. data/lib/mrpin/core/currency_exchanger/fixer/exchanger_fixer.rb +40 -0
  59. data/lib/mrpin/core/currency_exchanger/local/exchanger_local.rb +23 -0
  60. data/lib/mrpin/core/currency_exchanger/yahoo/exchanger_yahoo.rb +34 -0
  61. data/lib/mrpin/core/exceptions/assertion_error.rb +3 -0
  62. data/lib/mrpin/core/extensions/hash.rb +25 -0
  63. data/lib/mrpin/core/extensions/mongoid_id_alias.rb +7 -0
  64. data/lib/mrpin/core/extensions/object.rb +57 -0
  65. data/lib/mrpin/core/extensions/thread.rb +23 -0
  66. data/lib/mrpin/core/extensions/time.rb +5 -0
  67. data/lib/mrpin/core/logger/logger_sdk.rb +14 -0
  68. data/lib/mrpin/core/platform/e_platform_type.rb +14 -0
  69. data/lib/mrpin/core/player/e_player_role.rb +7 -0
  70. data/lib/mrpin/core/player/e_sex_type.rb +7 -0
  71. data/lib/mrpin/core/player/player_statistic_base.rb +50 -0
  72. data/lib/mrpin/core/purchase/e_sale_type.rb +7 -0
  73. data/lib/mrpin/core/remote/e_response_type.rb +4 -0
  74. data/lib/mrpin/core/remote/http/manager_remote_http.rb +107 -0
  75. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_api.rb +43 -0
  76. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_disconnect.rb +69 -0
  77. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_handle.rb +155 -0
  78. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_sessions.rb +41 -0
  79. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_statistic.rb +41 -0
  80. data/lib/mrpin/core/remote/socket/base/extensions/network_interface_helper.rb +53 -0
  81. data/lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb +131 -0
  82. data/lib/mrpin/core/remote/socket/base/socket_client_base.rb +181 -0
  83. data/lib/mrpin/core/remote/socket/base/socket_client_crossdomain.rb +33 -0
  84. data/lib/mrpin/core/remote/socket/flash/manager_remote_socket_flash.rb +51 -0
  85. data/lib/mrpin/core/remote/socket/flash/socket_client_flash.rb +21 -0
  86. data/lib/mrpin/core/remote/socket/unity/manager_remote_socket_unity.rb +58 -0
  87. data/lib/mrpin/core/remote/socket/unity/socket_client_unity.rb +19 -0
  88. data/lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb +101 -0
  89. data/lib/mrpin/core/remote/socket/websocket/socket_client_web_sockets.rb +129 -0
  90. data/lib/mrpin/core/remote/socket/with_policy/socket_client_with_policy.rb +66 -0
  91. data/lib/mrpin/core/review.rb +231 -0
  92. data/lib/mrpin/core/scheduler/manager_scheduler.rb +66 -0
  93. data/lib/mrpin/core/statistic/error_client_base.rb +136 -0
  94. data/lib/mrpin/core/statistic/error_server_base.rb +93 -0
  95. data/lib/mrpin/core/statistic/manager_statistics_base.rb +221 -0
  96. data/lib/mrpin/core/statistic/statistic_application_base.rb +88 -0
  97. data/lib/mrpin/core/statistic/statistic_config_base.rb +38 -0
  98. data/lib/mrpin/core/statistic/system_handler_profiler.rb +85 -0
  99. data/lib/mrpin/core/string/e_language_type.rb +29 -0
  100. data/lib/mrpin/core/string/e_string_type_base.rb +14 -0
  101. data/lib/mrpin/core/string/localization_base.rb +77 -0
  102. data/lib/mrpin/core/string/localization_base_map.rb +303 -0
  103. data/lib/mrpin/core/string/manager_string_base.rb +159 -0
  104. data/lib/mrpin/core/threads/thread_with_task.rb +62 -0
  105. data/lib/mrpin/core/uploaders/aws/aws_file_info.rb +16 -0
  106. data/lib/mrpin/core/uploaders/aws/aws_uploader.rb +229 -0
  107. data/lib/mrpin/core/uploaders/carrierwave/file_uploader.rb +7 -0
  108. data/lib/mrpin/core/uploaders/carrierwave/file_uploader_helpers_base.rb +66 -0
  109. data/lib/mrpin/core/uploaders/carrierwave/file_uploader_helpers_local.rb +111 -0
  110. data/lib/mrpin/core/uploaders/carrierwave/file_uploader_helpers_s3.rb +87 -0
  111. data/lib/mrpin/core/uploaders/carrierwave/zip_uploader.rb +10 -0
  112. data/lib/mrpin/core/utils/mongo.rb +41 -0
  113. data/lib/mrpin/core/utils/sorter_base.rb +344 -0
  114. data/lib/mrpin/core/utils/utils_io.rb +27 -0
  115. data/lib/mrpin/core/utils/utils_string.rb +17 -0
  116. data/lib/mrpin/core/utils/utils_zip.rb +58 -0
  117. data/lib/mrpin/libs/rails_admin/localization.rb +70 -0
  118. data/lib/mrpin/libs.rb +11 -0
  119. data/lib/mrpin/rails/engine.rb +11 -0
  120. data/lib/mrpin/vendors.rb +19 -0
  121. data/lib/mrpin/version.rb +3 -0
  122. data/lib/mrpin-sdk.rb +6 -0
  123. data/mrpin-sdk.gemspec +54 -0
  124. metadata +163 -96
@@ -0,0 +1,344 @@
1
+ class SorterBase
2
+
3
+ #
4
+ # properties
5
+ #
6
+
7
+ attr_accessor :top_size
8
+ attr_accessor :sort_criteria_non_players
9
+
10
+ attr_reader :players_ids
11
+ #todo:remove for avoid sync errors (can't add key during iteration)
12
+ attr_reader :player_position_map
13
+ attr_reader :players_resources_map
14
+ attr_reader :players_locker
15
+
16
+
17
+ #
18
+ # events
19
+ #
20
+
21
+ protected
22
+ def on_player_updated(player, position_old, position_new, resource_count_new)
23
+ #do nothing
24
+ end
25
+
26
+ protected
27
+ def on_player_came_to_top(player, position_old, position_new, resource_count_new)
28
+ #do nothing
29
+ end
30
+
31
+ protected
32
+ def on_player_left_from_top(player, position_old, position_new, resource_count_new)
33
+ #do nothing
34
+ end
35
+
36
+ protected
37
+ def on_player_top_updated(player, position_old, position_new, resource_count_new)
38
+ #do nothing
39
+ end
40
+
41
+ #
42
+ # methods
43
+ #
44
+
45
+ public
46
+ def initialize
47
+ @top_size = 100
48
+
49
+ @sort_criteria_non_players = 0
50
+
51
+ # ordered player_ids
52
+ @players_ids = []
53
+ # key player_id, value - position
54
+ @player_position_map = {}
55
+ # key - player_id, value - player specify resource count
56
+ @players_resources_map = {}
57
+
58
+ @players_locker = Mutex.new
59
+ end
60
+
61
+ # init sorter with start data
62
+ # sort_criteria_map - map with key - player_id, value - sort criteria
63
+ public
64
+ def init_sorter(sort_criteria_map)
65
+ @players_ids = sort_criteria_map.keys.dup
66
+
67
+ @players_ids.sort_by! do |id|
68
+ sort_criteria_map[id]
69
+ end
70
+
71
+ @players_ids.reverse!
72
+
73
+ @player_position_map = Hash[@players_ids.map.with_index(index_offset = 1).to_a]
74
+
75
+ @players_resources_map = sort_criteria_map.dup
76
+ end
77
+
78
+ protected
79
+ def find_new_position(resource_count, player_position_old, find_up)
80
+
81
+ if find_up
82
+ index_left = 0
83
+ index_right = player_position_old - 1
84
+ else
85
+ index_left = player_position_old - 1
86
+ index_right = @players_ids.size - 1
87
+ end
88
+
89
+ while index_left <= index_right
90
+ median_index = (index_right + index_left) / 2
91
+
92
+ player_median_resources = @players_resources_map[@players_ids[median_index]]
93
+
94
+ if resource_count > player_median_resources
95
+ index_right = median_index - 1
96
+ elsif resource_count == player_median_resources
97
+
98
+ index_left = median_index
99
+
100
+ while resource_count == player_median_resources
101
+ index_left = index_left + 1
102
+ player_median_resources = @players_resources_map[@players_ids[index_left]]
103
+ end
104
+
105
+ break
106
+ else
107
+ index_left = median_index + 1
108
+ end
109
+ end
110
+
111
+ index_left + 1
112
+ end
113
+
114
+ public
115
+ def try_update_position(player, sort_criteria_value)
116
+ player_came_to_top = false
117
+ player_left_from_top = false
118
+
119
+ player_id = player.id
120
+
121
+ if player.respond_to?(:is_player?) && !player.is_player?
122
+ sort_criteria_value = @sort_criteria_non_players
123
+ end
124
+
125
+ @players_locker.synchronize do
126
+
127
+ #add player if he doesn't exist
128
+ if @player_position_map[player_id].nil?
129
+ add_player_unsafe(player, sort_criteria_value)
130
+ return
131
+ end
132
+
133
+ sort_criteria_old = @players_resources_map[player_id]
134
+
135
+ return if sort_criteria_value == sort_criteria_old
136
+
137
+ find_position_up = sort_criteria_value > sort_criteria_old
138
+
139
+ position_old = @player_position_map[player_id]
140
+ position_new = find_new_position(sort_criteria_value, position_old, find_position_up)
141
+
142
+ if position_new > position_old
143
+ # need because player already in top
144
+ position_new -= 1
145
+ end
146
+
147
+ @players_resources_map[player_id] = sort_criteria_value
148
+
149
+ player_in_top = position_new <= @top_size
150
+
151
+ if position_new != position_old
152
+
153
+ player_came_to_top = position_old > @top_size && position_new <= @top_size
154
+ player_left_from_top = position_old <= @top_size && position_new > @top_size
155
+
156
+ @players_ids.delete_at(position_old - 1)
157
+ @players_ids.insert(position_new - 1, player_id)
158
+
159
+ update_player_positions(position_new, position_old)
160
+ end
161
+
162
+ if player_came_to_top
163
+ on_player_came_to_top(player, position_old, position_new, sort_criteria_value)
164
+ elsif player_left_from_top
165
+ on_player_left_from_top(player, position_old, position_new, sort_criteria_value)
166
+ elsif player_in_top #invalidate top player
167
+ on_player_top_updated(player, position_old, position_new, sort_criteria_value)
168
+ else #usual player, just invalidate online friends
169
+ on_player_updated(player, position_old, position_new, sort_criteria_value)
170
+ end
171
+
172
+ end
173
+
174
+ nil
175
+ end
176
+
177
+ protected
178
+ def update_player_positions(position_new, position_old)
179
+
180
+ position_start = [position_new, position_old].min
181
+ position_end = [position_new, position_old].max
182
+
183
+ (position_start..position_end).each do |position|
184
+
185
+ player_id = @players_ids[position - 1]
186
+
187
+ @player_position_map[player_id] = position
188
+
189
+ end
190
+ end
191
+
192
+ #
193
+ # methods for get info
194
+ #
195
+
196
+ public
197
+ def get_players_ids(position_start = 0, position_end = nil)
198
+ result = nil
199
+
200
+ @players_locker.synchronize do
201
+ result = get_players_ids_unsafe(position_start, position_end)
202
+ end
203
+
204
+ result
205
+ end
206
+
207
+ public
208
+ def get_player_position_total(player)
209
+ result = 0
210
+
211
+ @players_locker.synchronize do
212
+ result = @player_position_map[player.id]
213
+ end
214
+
215
+ result
216
+ end
217
+
218
+
219
+ # return
220
+ # {
221
+ # player_id:
222
+ # sort_criteria:
223
+ # position:
224
+ # }
225
+ public
226
+ def get_player_info(player_id)
227
+ result = nil
228
+
229
+ @players_locker.synchronize do
230
+ return result unless @player_position_map.key?(player_id)
231
+
232
+ result = get_player_info_unsafe(player_id)
233
+ end
234
+
235
+ result
236
+ end
237
+
238
+ private
239
+ def get_player_info_unsafe(player_id)
240
+ {
241
+ player_id: player_id,
242
+ position: @player_position_map[player_id],
243
+ sort_criteria: @players_resources_map[player_id]
244
+ }
245
+ end
246
+
247
+ private
248
+ def get_players_ids_unsafe(position_start, position_end)
249
+ position_end = position_end || (@top_size - 1)
250
+
251
+ position_end = @players_ids.size if position_end < 0
252
+
253
+ result = @players_ids[position_start..position_end]
254
+ end
255
+
256
+ # return array of
257
+ # {
258
+ # player_id:
259
+ # sort_criteria:
260
+ # position:
261
+ # }
262
+ public
263
+ def get_players_infos(position_start = 0, position_end = nil)
264
+
265
+ result = []
266
+
267
+ @players_locker.synchronize do
268
+
269
+ players_ids = get_players_ids_unsafe(position_start, position_end)
270
+
271
+ players_ids.each do |player_id|
272
+ player_info = get_player_info_unsafe(player_id)
273
+
274
+ result << player_info
275
+ end
276
+
277
+ end
278
+
279
+ result
280
+ end
281
+
282
+ #
283
+ # manager players
284
+ #
285
+
286
+ public
287
+ def add_player(player, sort_criteria_value = 0)
288
+ @players_locker.synchronize do
289
+ add_player_unsafe(player, sort_criteria_value)
290
+ end
291
+ end
292
+
293
+ protected
294
+ def add_player_unsafe(player, sort_criteria_value = 0)
295
+ player_id = player.id
296
+
297
+ sort_criteria_value = 0 if sort_criteria_value.nil?
298
+
299
+ return if @players_resources_map.empty?
300
+ return unless @player_position_map[player_id].nil?
301
+
302
+ index_position = @players_ids.size
303
+
304
+ while index_position > 0 && sort_criteria_value > @players_resources_map[@players_ids[index_position - 1]]
305
+ index_position -= 1
306
+ end
307
+
308
+ @players_ids.insert(index_position, player_id)
309
+ @players_resources_map[player_id] = sort_criteria_value
310
+ @player_position_map[player_id] = index_position + 1
311
+
312
+ update_player_positions(index_position + 1, @players_ids.size)
313
+
314
+ if index_position < @top_size
315
+ on_player_came_to_top(player, nil, index_position + 1, sort_criteria_value)
316
+ end
317
+ end
318
+
319
+ public
320
+ def delete_player(player)
321
+ @players_locker.synchronize do
322
+ player_id = player.id
323
+
324
+ position_old = @player_position_map[player.id]
325
+
326
+ return if position_old.nil?
327
+
328
+ @players_ids.delete_at(position_old - 1)
329
+ @players_resources_map.delete(player_id)
330
+ @player_position_map.delete(player_id)
331
+
332
+ update_player_positions(position_old, @players_ids.size)
333
+
334
+ if position_old <= @top_size
335
+ position_new = [@players_ids.size + 1, @top_size + 1].max
336
+ resource_count_new = 0
337
+
338
+ on_player_left_from_top(player, position_old, position_new, resource_count_new)
339
+ end
340
+ end
341
+ end
342
+
343
+
344
+ end
@@ -0,0 +1,27 @@
1
+ module UtilsIO
2
+ private
3
+ def self.root_dir
4
+ Rails.env.development? ? File.join(Rails.root.to_s, 'public') : "/usr/local/#{AppInfo.instance.server_name}"
5
+ end
6
+
7
+ public
8
+ def self.to_domain_path(file_path)
9
+ root_dir = self.root_dir
10
+
11
+ file_path = file_path.gsub(root_dir, '')
12
+
13
+ File.join('https://', AppInfo.instance.host, file_path)
14
+ end
15
+
16
+ public
17
+ def self.to_local_path(url_path)
18
+ root_dir = self.root_dir
19
+
20
+ file_path = url_path
21
+ file_path = file_path.gsub(AppInfo.instance.host, '')
22
+ file_path = file_path.gsub('https://', '')
23
+ file_path = file_path.gsub('http://', '')
24
+
25
+ File.join(root_dir, file_path)
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ class UtilsString
2
+
3
+ public
4
+ def self.to_utf8(value, default_value = 'unknown')
5
+ result = nil
6
+
7
+ begin
8
+ result = "#{value}".force_encoding('utf-8')
9
+ rescue
10
+ result = default_value
11
+ end
12
+
13
+
14
+ result
15
+ end
16
+
17
+ end
@@ -0,0 +1,58 @@
1
+ class UtilsZip
2
+
3
+ #
4
+ # Properties
5
+ #
6
+
7
+ #
8
+ # Methods
9
+ #
10
+
11
+ public
12
+ def self.compress_to_base64(data)
13
+ return data if data.nil?
14
+
15
+ #compress and encode to base64
16
+ data_bin = Zlib.deflate(data)
17
+ Base64.strict_encode64(data_bin)
18
+ end
19
+
20
+
21
+ public
22
+ def self.decompress_base64(data_base64)
23
+ result = nil
24
+
25
+ unless data_base64.nil?
26
+ #decode from base64 and decompress
27
+ progress_bin = Base64.strict_decode64(data_base64)
28
+ result = Zlib.inflate(progress_bin)
29
+ result = result.force_encoding('utf-8')
30
+ end
31
+
32
+ result
33
+ end
34
+
35
+ # unzip all files from zip to destination dir
36
+ # return extract dir path
37
+ #todo:fix extract_dir
38
+ public
39
+ def self.unzip_file(filename, destination_dir = nil)
40
+
41
+ destination_dir = File.dirname(filename) if destination_dir.nil?
42
+
43
+ %x(unzip -n '#{filename}' -d '#{destination_dir}') #-n never overwrite existing files
44
+
45
+ extract_dir = File.join(destination_dir, File.basename(filename, '.*'))
46
+
47
+ #downcase all file names
48
+ Dir.glob(extract_dir + '/*.*').each do |file|
49
+ filename = File.basename(file, '.*')
50
+ filename_new = Unicode::downcase(filename.force_encoding('utf-8'))
51
+ File.rename(file, extract_dir + '/' + filename_new)
52
+ end
53
+
54
+ extract_dir
55
+ end
56
+
57
+
58
+ end
@@ -0,0 +1,70 @@
1
+ require 'rails_admin/config/actions'
2
+ require 'rails_admin/config/actions/base'
3
+
4
+ module RailsAdmin
5
+ module Config
6
+ module Actions
7
+ class Localization < Base
8
+ RailsAdmin::Config::Actions.register(self)
9
+
10
+ register_instance_option :visible? do
11
+ authorized? && (bindings[:abstract_model].to_s == CLASS_MAP[EClassType::ECT_LOCALIZATION])
12
+ end
13
+
14
+ register_instance_option :collection do
15
+ true
16
+ end
17
+
18
+ register_instance_option :link_icon do
19
+ 'icon-none'
20
+ end
21
+
22
+ register_instance_option :pjax? do
23
+ false
24
+ end
25
+
26
+ register_instance_option :http_methods do
27
+ [:get, :post]
28
+ end
29
+
30
+ register_instance_option :controller do
31
+
32
+ proc do
33
+
34
+ model_name = @abstract_model.model_name
35
+
36
+ unless model_name == CLASS_MAP[EClassType::ECT_LOCALIZATION]
37
+ flash[:error] = 'Localization actions work only with Localization model'
38
+ redirect_to index_path
39
+ next
40
+ end
41
+
42
+ flash.clear
43
+
44
+ next unless request.post?
45
+
46
+ params = request.filtered_parameters.symbolize_keys
47
+
48
+ if params[:export] # EXPORT
49
+
50
+ begin
51
+
52
+ manager_string = AppInfo.instance.manager_string
53
+
54
+ file_name = manager_string.export_localizations_to_s3
55
+
56
+ flash[:success] = "File #{file_name} was exported"
57
+
58
+ rescue Exception => error
59
+ flash[:error] = "Error exporting file. #{error.message}"
60
+ end
61
+ end
62
+
63
+ render @action.template_name
64
+
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
data/lib/mrpin/libs.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'base64'
2
+ require 'benchmark'
3
+ require 'date'
4
+ require 'digest/md5'
5
+ require 'fileutils'
6
+ require 'net/http'
7
+ require 'singleton'
8
+ require 'socket'
9
+ require 'zlib'
10
+
11
+ Dir[File.dirname(__FILE__) + '/libs/**/*.rb'].each { |file| require file }
@@ -0,0 +1,11 @@
1
+ module Mrpin
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ # Get rails to add app, lib, vendor to load path
5
+
6
+ initializer 'Mrpin-sdk precompile hook', group: :all do |app|
7
+ app.config.assets.precompile += %w(mrpin.css)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ require 'rails'
2
+
3
+ require 'amf'
4
+ require 'aws-sdk'
5
+ require 'bootstrap-sass-rails'
6
+ require 'carrierwave/mongoid'
7
+ require 'eventmachine'
8
+ require 'em-websocket'
9
+ require 'devise'
10
+ require 'faraday'
11
+ require 'faraday_middleware'
12
+ require 'mongoid'
13
+ require 'rails_admin'
14
+ require 'rufus-scheduler'
15
+ require 'uglifier'
16
+ require 'unicode'
17
+ require 'uuid'
18
+ require 'vmstat'
19
+ require 'securerandom'
@@ -0,0 +1,3 @@
1
+ module Mrpin
2
+ VERSION = '1.0.2'
3
+ end
data/lib/mrpin-sdk.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'mrpin/version'
2
+
3
+ require 'mrpin/libs'
4
+ require 'mrpin/vendors'
5
+
6
+ require 'mrpin/rails/engine'
data/mrpin-sdk.gemspec ADDED
@@ -0,0 +1,54 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ begin
6
+ require 'mrpin/version'
7
+ rescue Exception => e
8
+ puts "[WARNING] Can't require mrpin-sdk with error: #{e}"
9
+ end
10
+
11
+ Gem::Specification.new do |spec|
12
+ spec.name = 'mrpin-sdk'
13
+ spec.version = Mrpin::VERSION
14
+ spec.authors = %w(Gregory Tkach Yakupov Dmitrij)
15
+ spec.email = %w(gregory.tkach@gmail.com yakupov.dmitrij@gmail.com)
16
+ spec.description = %q{Mrpin sdk for backend development.}
17
+ spec.summary = "#{spec.description}. Summary."
18
+ spec.license = 'MIT'
19
+ spec.homepage = 'https://mr-pin.net'
20
+
21
+ spec.files = `git ls-files`.split($/)
22
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
23
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
+ spec.require_paths = %w(app lib)
25
+
26
+ spec.add_development_dependency 'bundler', '~> 1'
27
+ spec.add_development_dependency 'rake', '~> 12'
28
+
29
+ spec.add_runtime_dependency 'aws-sdk', '~> 2'
30
+ spec.add_runtime_dependency 'bootstrap-sass-rails', '~> 3'
31
+ # improve bson deserialization
32
+ spec.add_runtime_dependency 'bson_ext', '~> 1'
33
+ # uploader
34
+ spec.add_runtime_dependency 'carrierwave-mongoid', '~> 0'
35
+ # auth gem
36
+ spec.add_runtime_dependency 'devise', '~> 4'
37
+ # websockets based on event machine
38
+ spec.add_runtime_dependency 'em-websocket', '~> 0'
39
+ spec.add_runtime_dependency 'eventmachine', '~> 1'
40
+ spec.add_runtime_dependency 'faraday', '~> 0'
41
+ spec.add_runtime_dependency 'faraday_middleware', '~> 0'
42
+ spec.add_runtime_dependency 'mongoid', '~> 6'
43
+ spec.add_runtime_dependency 'mrpin-amf', '~> 2'
44
+ spec.add_runtime_dependency 'rails', '~> 5'
45
+ spec.add_runtime_dependency 'rails_admin', '~> 1'
46
+ spec.add_runtime_dependency 'rufus-scheduler', '~> 3'
47
+ # JavaScript compressor
48
+ spec.add_runtime_dependency 'uglifier', '~> 2'
49
+ spec.add_runtime_dependency 'unicode', '~> 0'
50
+ spec.add_runtime_dependency 'uuid', '~> 2'
51
+ # system info cpu, memory etc
52
+ spec.add_runtime_dependency 'vmstat', '~> 2'
53
+
54
+ end