sugester 0.4.0 → 0.5.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 +4 -4
- data/Gemfile.lock +7 -6
- data/lib/sugester.rb +72 -15
- metadata +16 -5
- data/lib/sugester/version.rb +0 -3
- data/sugester.gemspec +0 -35
- data/tasks/rspec.rake +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97350edffd2ec4dba08024b6b6168856c30a2631
|
4
|
+
data.tar.gz: 87d5b7a8d8fd8d3e7247ffdddcbdf59b66e30fa1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22fb5a218ee12784c52a356c4159d34f56da8f87d2368e03f9b01cd8c58842afbaaf7b1810d5536fa8c2331ca3fca5108574e52acc437a61197781a1a63380aa
|
7
|
+
data.tar.gz: 5dda2c2d0ff4cbf16d26dd2f3ce3476040237f88f89fa244dc8fdbf51f1258fc5fc90ad731aa069cb540654ca1ddf5fa9237a08e8e5a901ac104f6a904afcf36
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sugester (0.
|
4
|
+
sugester (0.5.1)
|
5
5
|
activesupport
|
6
6
|
aws-sdk (~> 2)
|
7
7
|
|
@@ -14,12 +14,12 @@ GEM
|
|
14
14
|
minitest (~> 5.1)
|
15
15
|
thread_safe (~> 0.3, >= 0.3.4)
|
16
16
|
tzinfo (~> 1.1)
|
17
|
-
aws-sdk (2.5.
|
18
|
-
aws-sdk-resources (= 2.5.
|
19
|
-
aws-sdk-core (2.5.
|
17
|
+
aws-sdk (2.5.3)
|
18
|
+
aws-sdk-resources (= 2.5.3)
|
19
|
+
aws-sdk-core (2.5.3)
|
20
20
|
jmespath (~> 1.0)
|
21
|
-
aws-sdk-resources (2.5.
|
22
|
-
aws-sdk-core (= 2.5.
|
21
|
+
aws-sdk-resources (2.5.3)
|
22
|
+
aws-sdk-core (= 2.5.3)
|
23
23
|
diff-lcs (1.2.5)
|
24
24
|
i18n (0.7.0)
|
25
25
|
jmespath (1.3.1)
|
@@ -48,6 +48,7 @@ PLATFORMS
|
|
48
48
|
|
49
49
|
DEPENDENCIES
|
50
50
|
bundler (~> 1.11)
|
51
|
+
minitest (~> 5.1)
|
51
52
|
rake (~> 10.0)
|
52
53
|
rspec
|
53
54
|
sugester!
|
data/lib/sugester.rb
CHANGED
@@ -1,12 +1,25 @@
|
|
1
|
-
require "sugester/version"
|
2
1
|
require 'aws-sdk'
|
3
2
|
require 'active_support/all'
|
4
3
|
require 'digest'
|
5
4
|
|
6
5
|
module Sugester
|
7
6
|
|
7
|
+
VERSION = "0.5.1"
|
8
|
+
|
9
|
+
def self.assert(msg, v)
|
10
|
+
raise StandardError.new(msg) unless v
|
11
|
+
end
|
12
|
+
def self.instance_assert(variable_name, variable, *klasses)
|
13
|
+
assert(
|
14
|
+
"#{variable_name} must be instance of #{klasses.join(" or ")}",
|
15
|
+
klasses.reduce(false){|acc, klass| acc || (variable.is_a? klass)}
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
8
19
|
class SugesterQueue
|
9
20
|
|
21
|
+
private
|
22
|
+
|
10
23
|
def self.decrypt(msg)
|
11
24
|
begin
|
12
25
|
cipher = OpenSSL::Cipher.new('AES-128-ECB')
|
@@ -27,33 +40,77 @@ module Sugester
|
|
27
40
|
raise "secret corrupted"
|
28
41
|
end
|
29
42
|
|
30
|
-
|
31
|
-
|
32
|
-
|
43
|
+
|
44
|
+
def push(kind, client_id, msg)
|
45
|
+
Sugester.assert "unknown kind", MSG_KINDS.include?(kind)
|
46
|
+
Sugester.instance_assert "client_id", client_id, Integer
|
47
|
+
raw_push msg.merge({client_id: client_id, kind: kind})
|
33
48
|
end
|
34
49
|
|
35
|
-
def
|
36
|
-
#TODO assert client_id
|
37
|
-
msg = {
|
38
|
-
activity: activity_name,
|
39
|
-
client_id: client_id,
|
40
|
-
token: config(:token),
|
41
|
-
prefix: config(:prefix),
|
42
|
-
}
|
50
|
+
def raw_push(msg)
|
43
51
|
#TODO max length
|
44
52
|
@sqs.send_message({
|
45
53
|
queue_url: config(:url),
|
46
|
-
message_body: msg.
|
54
|
+
message_body: msg.merge({
|
55
|
+
token: config(:token),
|
56
|
+
prefix: config(:prefix),
|
57
|
+
}).to_json,
|
47
58
|
})
|
48
59
|
end
|
60
|
+
|
61
|
+
MSG_KINDS = [:activity, :property, :payment]
|
62
|
+
public
|
63
|
+
|
64
|
+
def initialize(secret)
|
65
|
+
@secret = secret
|
66
|
+
@sqs = Aws::SQS::Client.new(config(:config))
|
67
|
+
end
|
68
|
+
|
69
|
+
def activity(client_id, name, options = {})
|
70
|
+
Sugester.instance_assert "name", name, String, Symbol
|
71
|
+
push :activity, client_id, {name: name}
|
72
|
+
end
|
73
|
+
|
74
|
+
def property(client_id, options)
|
75
|
+
options.each do |name, value|
|
76
|
+
Sugester.instance_assert "name", name, String, Symbol
|
77
|
+
#TODO valid value
|
78
|
+
end
|
79
|
+
push :property, client_id, {options: options}
|
80
|
+
end
|
81
|
+
|
82
|
+
def payment(client_id, name, price, date_from, date_to)
|
83
|
+
Sugester.instance_assert "date_from", date_from, Time
|
84
|
+
Sugester.instance_assert "date_to", date_to, Time
|
85
|
+
Sugester.instance_assert "price", price, Numeric
|
86
|
+
Sugester.instance_assert "name", name, String, Symbol
|
87
|
+
|
88
|
+
push :payment, client_id, {price: price, from: date_from, to: date_to, name: name}
|
89
|
+
end
|
49
90
|
end
|
50
91
|
|
51
92
|
def self.init_singleton *args
|
52
93
|
@@singleton = SugesterQueue.new *args
|
53
94
|
end
|
54
95
|
|
55
|
-
|
56
|
-
|
96
|
+
|
97
|
+
def self.singleton_initialized?
|
98
|
+
assert("uninitialized singleton. run Sugester.init_singleton", @@singleton)
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.activity(*args)
|
102
|
+
singleton_initialized?
|
103
|
+
@@singleton.activity(*args)
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.property(*args)
|
107
|
+
singleton_initialized?
|
108
|
+
@@singleton.property(*args)
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.payment(*args)
|
112
|
+
singleton_initialized?
|
113
|
+
@@singleton.payment(*args)
|
57
114
|
end
|
58
115
|
|
59
116
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- marcin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-08-
|
12
|
+
date: 2016-08-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: minitest
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '5.1'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '5.1'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: aws-sdk
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,9 +109,6 @@ files:
|
|
95
109
|
- bin/console
|
96
110
|
- bin/setup
|
97
111
|
- lib/sugester.rb
|
98
|
-
- lib/sugester/version.rb
|
99
|
-
- sugester.gemspec
|
100
|
-
- tasks/rspec.rake
|
101
112
|
homepage: http://rubygems.org/gems/sugester
|
102
113
|
licenses:
|
103
114
|
- MIT
|
data/lib/sugester/version.rb
DELETED
data/sugester.gemspec
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'sugester/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "sugester"
|
8
|
-
spec.version = Sugester::VERSION
|
9
|
-
spec.authors = ["marcin", "mateuszkitlas"]
|
10
|
-
spec.email = ["dev@sugester.com"]
|
11
|
-
|
12
|
-
spec.summary = %q{Sugester API}
|
13
|
-
spec.description = %q{Sugester API}
|
14
|
-
spec.homepage = 'http://rubygems.org/gems/sugester'
|
15
|
-
spec.license = "MIT"
|
16
|
-
|
17
|
-
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
18
|
-
# delete this section to allow pushing this gem to any host.
|
19
|
-
if spec.respond_to?(:metadata)
|
20
|
-
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
21
|
-
else
|
22
|
-
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
|
-
end
|
24
|
-
|
25
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
-
spec.bindir = "exe"
|
27
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
-
spec.require_paths = ["lib"]
|
29
|
-
|
30
|
-
spec.add_development_dependency "bundler", "~> 1.11"
|
31
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
-
spec.add_development_dependency "rspec"
|
33
|
-
spec.add_dependency "aws-sdk", '~> 2'
|
34
|
-
spec.add_dependency 'activesupport'
|
35
|
-
end
|
data/tasks/rspec.rake
DELETED