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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 368becc1f022878ebdaac4104ab18c52f0681b5f
4
- data.tar.gz: 4a4f2827658f85159a6ffbbb143404028510b4ad
3
+ metadata.gz: 7d4483c9c6138064c314afabc79c0977d1bed821
4
+ data.tar.gz: c7cb4237be5e6b38f596ce012af2e6ad90c3da95
5
5
  SHA512:
6
- metadata.gz: 2be00340ef8a8dab45b5beff7f42f7ce1ca7bec3bf67453836383a9ffbf0142c915453ebc9f2ff963d030acf2edbb6be4a808d4c5395b513029db84141aa483a
7
- data.tar.gz: 08b7d747bd26480050f93e7862bc4a4f19e184cd3e708e15dd5669a132aaa92d49d2b94624c4e577c46f8bd98a6c375d140c52a664e83bd5067e4362989575e9
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
- def generate_signature_from_key(key, request_method, account, request_path, request_time)
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
@@ -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
- auth_headers = generate_auth_headers(method, path)
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 create_message(queue_name, message)
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 delete_message(queue_name, pop_receipt)
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: 0.1.0
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-15 00:00:00.000000000 Z
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 API wrapper for CassieQ
55
+ description: A Ruby wrapper for the CassieQ API
56
56
  email: tbconroy@gmail.com
57
57
  executables: []
58
58
  extensions: []