cassieq-client 0.1.0 → 1.0.0
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/lib/cassieq/authentication.rb +15 -1
- data/lib/cassieq/client.rb +10 -18
- data/lib/cassieq/client/messages.rb +2 -2
- data/lib/cassieq/utils.rb +2 -7
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d4483c9c6138064c314afabc79c0977d1bed821
|
4
|
+
data.tar.gz: c7cb4237be5e6b38f596ce012af2e6ad90c3da95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a99389780258976d1707a6e8d7554a6c3ee746dcbb2ffa4f456fe0e890d5bece8b9af46378eac5ae45199a5822a9e204852429d62eb56f3280f2fcb9fb2047b
|
7
|
+
data.tar.gz: d5b9b27e3b6fa728f25c5fa92f45ac73e186ce36de830529478891ba435bf8eeeae1489f44878d2afb9715169df9eebc95ae4fc3faf8df3a382afa802cba5e3b
|
@@ -1,13 +1,27 @@
|
|
1
1
|
require "base64"
|
2
2
|
require "openssl"
|
3
|
+
require "time"
|
3
4
|
|
4
5
|
module Cassieq
|
5
6
|
module Authentication
|
6
|
-
|
7
|
+
private
|
8
|
+
|
9
|
+
def generate_auth_headers(request_method, request_path)
|
10
|
+
request_time = formated_time_now
|
11
|
+
auth_signature = generate_signature_from_key(request_method.to_s.upcase, request_path, request_time)
|
12
|
+
|
13
|
+
{ "X-Cassieq-Request-Time" => request_time, "Authorization" => "Signed #{auth_signature}" }
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate_signature_from_key(request_method, request_path, request_time)
|
7
17
|
key_bytes = Base64.urlsafe_decode64("#{key}==")
|
8
18
|
string_to_sign = [account, request_method, request_path, request_time].join("\n")
|
9
19
|
hmac = OpenSSL::HMAC.digest("sha256", key_bytes, string_to_sign)
|
10
20
|
Base64.urlsafe_encode64(hmac).gsub(/=+$/, "")
|
11
21
|
end
|
22
|
+
|
23
|
+
def formated_time_now
|
24
|
+
Time.now.utc.iso8601
|
25
|
+
end
|
12
26
|
end
|
13
27
|
end
|
data/lib/cassieq/client.rb
CHANGED
@@ -28,25 +28,29 @@ module Cassieq
|
|
28
28
|
|
29
29
|
private
|
30
30
|
|
31
|
-
def path_prefix
|
32
|
-
"/api/v1/accounts/#{account}"
|
33
|
-
end
|
34
|
-
|
35
31
|
def connection
|
36
32
|
Faraday.new do |conn|
|
37
33
|
conn.request(:url_encoded)
|
38
34
|
conn.adapter(Faraday.default_adapter)
|
39
35
|
conn.host = host
|
40
36
|
conn.port = port
|
41
|
-
conn.path_prefix = path_prefix
|
42
37
|
conn.params.merge_query(provided_params) unless provided_params.nil?
|
43
38
|
conn.response :json, :content_type => /\bjson$/
|
44
39
|
end
|
45
40
|
end
|
46
41
|
|
42
|
+
def path_prefix
|
43
|
+
"/api/v1/accounts/#{account}"
|
44
|
+
end
|
45
|
+
|
46
|
+
def request_path(path)
|
47
|
+
"#{path_prefix}/#{path}"
|
48
|
+
end
|
49
|
+
|
47
50
|
def request(method, path, body = nil, params = nil)
|
48
51
|
handle_response do
|
49
|
-
|
52
|
+
path = request_path(path)
|
53
|
+
auth_headers = generate_auth_headers(method, path) unless key.nil?
|
50
54
|
connection.run_request(method, path, body, auth_headers) do |req|
|
51
55
|
req.params.merge!(params) unless params.nil?
|
52
56
|
req.headers["Content-Type"] = "application/json" unless body.nil?
|
@@ -54,18 +58,6 @@ module Cassieq
|
|
54
58
|
end
|
55
59
|
end
|
56
60
|
|
57
|
-
def generate_auth_headers(method, path)
|
58
|
-
unless key.nil?
|
59
|
-
request_time = formated_time_now
|
60
|
-
request_path = "#{path_prefix}/#{path}"
|
61
|
-
auth_signature = generate_signature_from_key(key, method.to_s.upcase, account, request_path, request_time)
|
62
|
-
|
63
|
-
{ "X-Cassieq-Request-Time" => request_time, "Authorization" => "Signed #{auth_signature}" }
|
64
|
-
else
|
65
|
-
nil
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
61
|
def handle_response(&request_block)
|
70
62
|
response = request_block.call
|
71
63
|
Cassieq::Error.from_status_and_body(response)
|
@@ -3,7 +3,7 @@ require "json"
|
|
3
3
|
module Cassieq
|
4
4
|
class Client
|
5
5
|
module Messages
|
6
|
-
def
|
6
|
+
def publish_message(queue_name, message)
|
7
7
|
request(:post, "queues/#{queue_name}/messages", message)
|
8
8
|
end
|
9
9
|
|
@@ -17,7 +17,7 @@ module Cassieq
|
|
17
17
|
request(:put, "queues/#{queue_name}/messages", body, params)
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
20
|
+
def ack_message(queue_name, pop_receipt)
|
21
21
|
params = { popReceipt: pop_receipt }
|
22
22
|
request(:delete, "queues/#{queue_name}/messages", nil, params)
|
23
23
|
end
|
data/lib/cassieq/utils.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require "active_support/core_ext/hash/keys"
|
2
2
|
require "active_support/inflector"
|
3
|
-
require "time"
|
4
3
|
|
5
4
|
module Cassieq
|
6
5
|
module Utils
|
6
|
+
private
|
7
|
+
|
7
8
|
def underscore_and_symobolize_keys(data)
|
8
9
|
transform_keys_in_structure(data) { |key| key.underscore.to_sym }
|
9
10
|
end
|
@@ -12,12 +13,6 @@ module Cassieq
|
|
12
13
|
transform_keys_in_structure(data) { |key| key.to_s.camelize(:lower) }
|
13
14
|
end
|
14
15
|
|
15
|
-
def formated_time_now
|
16
|
-
Time.now.utc.iso8601
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
16
|
def transform_keys_in_structure(data)
|
22
17
|
case data
|
23
18
|
when Hash
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassieq-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Conroy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.10'
|
55
|
-
description: A Ruby
|
55
|
+
description: A Ruby wrapper for the CassieQ API
|
56
56
|
email: tbconroy@gmail.com
|
57
57
|
executables: []
|
58
58
|
extensions: []
|