cassieq-client 0.0.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 +7 -0
- data/lib/cassieq/client.rb +91 -0
- data/lib/cassieq/client/messages.rb +22 -0
- data/lib/cassieq/client/queues.rb +22 -0
- data/lib/cassieq/client/statistics.rb +9 -0
- data/lib/cassieq/error.rb +35 -0
- data/lib/cassieq/utils.rb +27 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 44fa66a4e5b3e55e2fa4b3f67bc576d95261b00a
|
4
|
+
data.tar.gz: 7df246d7d9387f30687197ea370fa928b6730642
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 89940a3442a03d42d06fc737a51ddf083305767d39d26771ac982dea1ccf0d3f2cd88ed6fa9f7b9e1e0ec574481b777621f2f0eabb0973ad92110c723de86e54
|
7
|
+
data.tar.gz: 1df1f4a1d76024814d3398bc72f681c5d86c56fb7513327b326c7113c2c5acdc4325e333a802ce1414da473eb0a2830b1dab10579acd07dbbe4a34055287adaf
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require "faraday"
|
2
|
+
require "faraday_middleware"
|
3
|
+
require "cassieq/client/messages"
|
4
|
+
require "cassieq/client/statistics"
|
5
|
+
require "cassieq/client/queues"
|
6
|
+
require "cassieq/error"
|
7
|
+
require "cassieq/utils"
|
8
|
+
|
9
|
+
module Cassieq
|
10
|
+
class Client
|
11
|
+
include Cassieq::Client::Queues
|
12
|
+
include Cassieq::Client::Messages
|
13
|
+
include Cassieq::Client::Statistics
|
14
|
+
include Cassieq::Utils
|
15
|
+
|
16
|
+
attr_accessor :host, :account, :port, :key, :auth, :sig
|
17
|
+
|
18
|
+
def initialize(params = {})
|
19
|
+
@host = params.fetch(:host, nil)
|
20
|
+
@key = params.fetch(:key, nil)
|
21
|
+
@auth = params.fetch(:auth, nil)
|
22
|
+
@sig = params.fetch(:sig, nil)
|
23
|
+
@account = params.fetch(:account, nil)
|
24
|
+
@port = params.fetch(:port, 8080)
|
25
|
+
yield(self) if block_given?
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def path_prefix
|
31
|
+
"/api/v1/accounts/#{account}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def connection
|
35
|
+
Faraday.new do |conn|
|
36
|
+
conn.request(:url_encoded)
|
37
|
+
conn.adapter(Faraday.default_adapter)
|
38
|
+
conn.host = host
|
39
|
+
conn.port = port
|
40
|
+
conn.path_prefix = path_prefix
|
41
|
+
conn.headers["Authorization"] = "Key #{key}" unless key.nil?
|
42
|
+
unless auth.nil? || sig.nil?
|
43
|
+
conn.params["auth"] = auth
|
44
|
+
conn.params["sig"] = sig
|
45
|
+
end
|
46
|
+
conn.response :json, :content_type => /\bjson$/
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def get(path)
|
51
|
+
handle_response do
|
52
|
+
connection.run_request(:get, path, nil, nil)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def post(path, body)
|
57
|
+
handle_response do
|
58
|
+
connection.run_request(:post, path, body, nil) do |req|
|
59
|
+
req.headers.merge!("Content-Type" => "application/json")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def put(path, body, params = {})
|
65
|
+
handle_response do
|
66
|
+
connection.run_request(:put, path, body, nil) do |req|
|
67
|
+
req.params.merge!(params)
|
68
|
+
req.headers.merge!("Content-Type" => "application/json")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def delete(path, params = {})
|
74
|
+
handle_response do
|
75
|
+
connection.run_request(:delete, path, nil, nil) do |req|
|
76
|
+
req.params.merge!(params)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def handle_response(&request_block)
|
82
|
+
response = request_block.call
|
83
|
+
Cassieq::Error.from_status_and_body(response)
|
84
|
+
unless response.body.empty?
|
85
|
+
underscore_and_symobolize_keys(response.body)
|
86
|
+
else
|
87
|
+
true
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Cassieq
|
2
|
+
class Client
|
3
|
+
module Messages
|
4
|
+
def create_message(queue_name, message)
|
5
|
+
post("queues/#{queue_name}/messages", message)
|
6
|
+
end
|
7
|
+
|
8
|
+
def next_message(queue_name)
|
9
|
+
get("queues/#{queue_name}/messages/next")
|
10
|
+
end
|
11
|
+
|
12
|
+
def edit_message(queue_name, pop_receipt, options)
|
13
|
+
body = camelize_and_stringify_keys(options).to_json
|
14
|
+
put("queues/#{queue_name}/messages", body, { popReceipt: pop_receipt })
|
15
|
+
end
|
16
|
+
|
17
|
+
def delete_message(queue_name, pop_receipt)
|
18
|
+
delete("queues/#{queue_name}/messages", popReceipt: pop_receipt)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Cassieq
|
2
|
+
class Client
|
3
|
+
module Queues
|
4
|
+
def queues
|
5
|
+
get("queues")
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_queue(options)
|
9
|
+
body = camelize_and_stringify_keys(options).to_json
|
10
|
+
post("queues", body)
|
11
|
+
end
|
12
|
+
|
13
|
+
def queue(queue_name)
|
14
|
+
get("queues/#{queue_name}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def delete_queue(queue_name)
|
18
|
+
delete("queues/#{queue_name}")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Cassieq
|
2
|
+
class Error < StandardError
|
3
|
+
|
4
|
+
def self.from_status_and_body(response)
|
5
|
+
error = case response.status.to_i
|
6
|
+
when 401
|
7
|
+
Cassieq::Unauthorized
|
8
|
+
when 404
|
9
|
+
Cassieq::NotFound
|
10
|
+
when 409
|
11
|
+
Cassieq::Conflict
|
12
|
+
when 400..499
|
13
|
+
Cassieq::ClientError
|
14
|
+
when 500..599
|
15
|
+
Cassieq::ServerError
|
16
|
+
end
|
17
|
+
raise error, response.body["message"] || response.body if error
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
#400-499
|
22
|
+
class ClientError < Error; end
|
23
|
+
|
24
|
+
#404
|
25
|
+
class NotFound < ClientError; end
|
26
|
+
|
27
|
+
#409
|
28
|
+
class Conflict < ClientError; end
|
29
|
+
|
30
|
+
#401
|
31
|
+
class Unauthorized < ClientError; end
|
32
|
+
|
33
|
+
#500-599
|
34
|
+
class ServerError < Error; end
|
35
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "active_support/core_ext/hash/keys"
|
2
|
+
require "active_support/inflector"
|
3
|
+
|
4
|
+
module Cassieq
|
5
|
+
module Utils
|
6
|
+
def underscore_and_symobolize_keys(data)
|
7
|
+
transform_keys_in_structure(data) { |key| key.underscore.to_sym }
|
8
|
+
end
|
9
|
+
|
10
|
+
def camelize_and_stringify_keys(data)
|
11
|
+
transform_keys_in_structure(data) { |key| key.to_s.camelize(:lower) }
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def transform_keys_in_structure(data)
|
17
|
+
case data
|
18
|
+
when Hash
|
19
|
+
data.transform_keys { |key| yield(key) }
|
20
|
+
when Array
|
21
|
+
data.map do |hash|
|
22
|
+
hash.transform_keys { |key| yield(key) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cassieq-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tom Conroy
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.9'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.9'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday_middleware
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.10'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.10'
|
55
|
+
description: A simple wrapper for the CassieQ API
|
56
|
+
email: tbconroy@gmail.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/cassieq/client.rb
|
62
|
+
- lib/cassieq/client/messages.rb
|
63
|
+
- lib/cassieq/client/queues.rb
|
64
|
+
- lib/cassieq/client/statistics.rb
|
65
|
+
- lib/cassieq/error.rb
|
66
|
+
- lib/cassieq/utils.rb
|
67
|
+
homepage: https://github.com/tronroy/cassieq-client
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.4.5.1
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: CassieQ Client
|
91
|
+
test_files: []
|