cassieq-client 0.0.1 → 0.1.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 +13 -0
- data/lib/cassieq/client/messages.rb +8 -4
- data/lib/cassieq/client/queues.rb +6 -4
- data/lib/cassieq/client/statistics.rb +1 -1
- data/lib/cassieq/client.rb +18 -30
- data/lib/cassieq/utils.rb +6 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 368becc1f022878ebdaac4104ab18c52f0681b5f
|
4
|
+
data.tar.gz: 4a4f2827658f85159a6ffbbb143404028510b4ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2be00340ef8a8dab45b5beff7f42f7ce1ca7bec3bf67453836383a9ffbf0142c915453ebc9f2ff963d030acf2edbb6be4a808d4c5395b513029db84141aa483a
|
7
|
+
data.tar.gz: 08b7d747bd26480050f93e7862bc4a4f19e184cd3e708e15dd5669a132aaa92d49d2b94624c4e577c46f8bd98a6c375d140c52a664e83bd5067e4362989575e9
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "base64"
|
2
|
+
require "openssl"
|
3
|
+
|
4
|
+
module Cassieq
|
5
|
+
module Authentication
|
6
|
+
def generate_signature_from_key(key, request_method, account, request_path, request_time)
|
7
|
+
key_bytes = Base64.urlsafe_decode64("#{key}==")
|
8
|
+
string_to_sign = [account, request_method, request_path, request_time].join("\n")
|
9
|
+
hmac = OpenSSL::HMAC.digest("sha256", key_bytes, string_to_sign)
|
10
|
+
Base64.urlsafe_encode64(hmac).gsub(/=+$/, "")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,21 +1,25 @@
|
|
1
|
+
require "json"
|
2
|
+
|
1
3
|
module Cassieq
|
2
4
|
class Client
|
3
5
|
module Messages
|
4
6
|
def create_message(queue_name, message)
|
5
|
-
post
|
7
|
+
request(:post, "queues/#{queue_name}/messages", message)
|
6
8
|
end
|
7
9
|
|
8
10
|
def next_message(queue_name)
|
9
|
-
get
|
11
|
+
request(:get, "queues/#{queue_name}/messages/next")
|
10
12
|
end
|
11
13
|
|
12
14
|
def edit_message(queue_name, pop_receipt, options)
|
13
15
|
body = camelize_and_stringify_keys(options).to_json
|
14
|
-
|
16
|
+
params = { popReceipt: pop_receipt }
|
17
|
+
request(:put, "queues/#{queue_name}/messages", body, params)
|
15
18
|
end
|
16
19
|
|
17
20
|
def delete_message(queue_name, pop_receipt)
|
18
|
-
|
21
|
+
params = { popReceipt: pop_receipt }
|
22
|
+
request(:delete, "queues/#{queue_name}/messages", nil, params)
|
19
23
|
end
|
20
24
|
end
|
21
25
|
end
|
@@ -1,21 +1,23 @@
|
|
1
|
+
require "json"
|
2
|
+
|
1
3
|
module Cassieq
|
2
4
|
class Client
|
3
5
|
module Queues
|
4
6
|
def queues
|
5
|
-
get
|
7
|
+
request(:get, "queues")
|
6
8
|
end
|
7
9
|
|
8
10
|
def create_queue(options)
|
9
11
|
body = camelize_and_stringify_keys(options).to_json
|
10
|
-
post
|
12
|
+
request(:post, "queues", body)
|
11
13
|
end
|
12
14
|
|
13
15
|
def queue(queue_name)
|
14
|
-
get
|
16
|
+
request(:get, "queues/#{queue_name}")
|
15
17
|
end
|
16
18
|
|
17
19
|
def delete_queue(queue_name)
|
18
|
-
delete
|
20
|
+
request(:delete, "queues/#{queue_name}")
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
data/lib/cassieq/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "faraday"
|
2
2
|
require "faraday_middleware"
|
3
|
+
require "cassieq/authentication"
|
3
4
|
require "cassieq/client/messages"
|
4
5
|
require "cassieq/client/statistics"
|
5
6
|
require "cassieq/client/queues"
|
@@ -11,15 +12,15 @@ module Cassieq
|
|
11
12
|
include Cassieq::Client::Queues
|
12
13
|
include Cassieq::Client::Messages
|
13
14
|
include Cassieq::Client::Statistics
|
15
|
+
include Cassieq::Authentication
|
14
16
|
include Cassieq::Utils
|
15
17
|
|
16
|
-
attr_accessor :host, :account, :port, :key, :
|
18
|
+
attr_accessor :host, :account, :port, :key, :provided_params
|
17
19
|
|
18
20
|
def initialize(params = {})
|
19
21
|
@host = params.fetch(:host, nil)
|
20
22
|
@key = params.fetch(:key, nil)
|
21
|
-
@
|
22
|
-
@sig = params.fetch(:sig, nil)
|
23
|
+
@provided_params = params.fetch(:provided_params, nil)
|
23
24
|
@account = params.fetch(:account, nil)
|
24
25
|
@port = params.fetch(:port, 8080)
|
25
26
|
yield(self) if block_given?
|
@@ -38,43 +39,30 @@ module Cassieq
|
|
38
39
|
conn.host = host
|
39
40
|
conn.port = port
|
40
41
|
conn.path_prefix = path_prefix
|
41
|
-
conn.
|
42
|
-
unless auth.nil? || sig.nil?
|
43
|
-
conn.params["auth"] = auth
|
44
|
-
conn.params["sig"] = sig
|
45
|
-
end
|
42
|
+
conn.params.merge_query(provided_params) unless provided_params.nil?
|
46
43
|
conn.response :json, :content_type => /\bjson$/
|
47
44
|
end
|
48
45
|
end
|
49
46
|
|
50
|
-
def
|
51
|
-
handle_response do
|
52
|
-
connection.run_request(:get, path, nil, nil)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def post(path, body)
|
47
|
+
def request(method, path, body = nil, params = nil)
|
57
48
|
handle_response do
|
58
|
-
|
59
|
-
|
49
|
+
auth_headers = generate_auth_headers(method, path)
|
50
|
+
connection.run_request(method, path, body, auth_headers) do |req|
|
51
|
+
req.params.merge!(params) unless params.nil?
|
52
|
+
req.headers["Content-Type"] = "application/json" unless body.nil?
|
60
53
|
end
|
61
54
|
end
|
62
55
|
end
|
63
56
|
|
64
|
-
def
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
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)
|
72
62
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
req.params.merge!(params)
|
77
|
-
end
|
63
|
+
{ "X-Cassieq-Request-Time" => request_time, "Authorization" => "Signed #{auth_signature}" }
|
64
|
+
else
|
65
|
+
nil
|
78
66
|
end
|
79
67
|
end
|
80
68
|
|
data/lib/cassieq/utils.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "active_support/core_ext/hash/keys"
|
2
2
|
require "active_support/inflector"
|
3
|
+
require "time"
|
3
4
|
|
4
5
|
module Cassieq
|
5
6
|
module Utils
|
@@ -11,6 +12,10 @@ module Cassieq
|
|
11
12
|
transform_keys_in_structure(data) { |key| key.to_s.camelize(:lower) }
|
12
13
|
end
|
13
14
|
|
15
|
+
def formated_time_now
|
16
|
+
Time.now.utc.iso8601
|
17
|
+
end
|
18
|
+
|
14
19
|
private
|
15
20
|
|
16
21
|
def transform_keys_in_structure(data)
|
@@ -24,4 +29,4 @@ module Cassieq
|
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|
27
|
-
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassieq-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Conroy
|
@@ -52,12 +52,13 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.10'
|
55
|
-
description: A
|
55
|
+
description: A Ruby API wrapper for CassieQ
|
56
56
|
email: tbconroy@gmail.com
|
57
57
|
executables: []
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
|
+
- lib/cassieq/authentication.rb
|
61
62
|
- lib/cassieq/client.rb
|
62
63
|
- lib/cassieq/client/messages.rb
|
63
64
|
- lib/cassieq/client/queues.rb
|
@@ -76,7 +77,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
77
|
requirements:
|
77
78
|
- - ">="
|
78
79
|
- !ruby/object:Gem::Version
|
79
|
-
version:
|
80
|
+
version: 1.9.3
|
80
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
82
|
requirements:
|
82
83
|
- - ">="
|