ticket_sharing 1.2.0 → 2.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/Readme.md +2 -2
- data/lib/ticket_sharing.rb +9 -0
- data/lib/ticket_sharing/agreement.rb +2 -2
- data/lib/ticket_sharing/client.rb +6 -3
- data/lib/ticket_sharing/request.rb +38 -38
- data/lib/ticket_sharing/ticket.rb +3 -3
- metadata +75 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bc8f56c0ccfb6e635bb4ac3be1715209b5c9a61
|
4
|
+
data.tar.gz: b3f6d3d8536df537b82ef3d559eba9d67f9f8cc5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 723ab06045867a1447abf8497580db737ee56c93975ce154bfb27e4560a6157f643358f23c3c28420cd3e10689469bb5d4070b473be3ae3187b76eba730c700b
|
7
|
+
data.tar.gz: f94a63b118dcb4867a14064bfc63942a009e743ac0dd2c1298556eb97a8db769d693960c0a3feeb8d0f260c6d43a34a55b8a0f7d84b80c946925f1195bf5cc60
|
data/Readme.md
CHANGED
@@ -10,7 +10,7 @@ A ruby implementation of the [Networked Help Desk] [1] API
|
|
10
10
|
|
11
11
|
### Creating an agreement
|
12
12
|
|
13
|
-
agreement = TicketSharing::Agreement.new(
|
13
|
+
agreement = TicketSharing::Agreement.new('uuid' => '5ad614f4')
|
14
14
|
agreement.send_to('http://example.com/sharing')
|
15
15
|
|
16
16
|
### Sending a ticket
|
@@ -25,7 +25,7 @@ A ruby implementation of the [Networked Help Desk] [1] API
|
|
25
25
|
|
26
26
|
### Updating a ticket
|
27
27
|
|
28
|
-
ticket = TicketSharing::Ticket.new(
|
28
|
+
ticket = TicketSharing::Ticket.new('status' => 'new')
|
29
29
|
ticket.update_partner('http://example.com/sharing')
|
30
30
|
|
31
31
|
## Contributing
|
@@ -23,14 +23,14 @@ module TicketSharing
|
|
23
23
|
client = Client.new(url)
|
24
24
|
@response = client.post(relative_url, self.to_json)
|
25
25
|
|
26
|
-
@response.
|
26
|
+
@response.status
|
27
27
|
end
|
28
28
|
|
29
29
|
def update_partner(url)
|
30
30
|
client = Client.new(url, authentication_token)
|
31
31
|
@response = client.put(relative_url, self.to_json)
|
32
32
|
|
33
|
-
@response.
|
33
|
+
@response.status
|
34
34
|
end
|
35
35
|
|
36
36
|
def relative_url
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'ticket_sharing'
|
1
2
|
require 'ticket_sharing/error'
|
2
3
|
require 'ticket_sharing/request'
|
3
4
|
|
@@ -6,6 +7,8 @@ module TicketSharing
|
|
6
7
|
def initialize(base_url, credentials=nil)
|
7
8
|
@base_url = base_url
|
8
9
|
@credentials = credentials
|
10
|
+
|
11
|
+
@requester = TicketSharing::Request.new(TicketSharing.connection)
|
9
12
|
end
|
10
13
|
|
11
14
|
def post(path, body, options={})
|
@@ -29,19 +32,19 @@ module TicketSharing
|
|
29
32
|
def send_request(method, path, body, options)
|
30
33
|
headers = {'X-Ticket-Sharing-Token' => @credentials} if @credentials
|
31
34
|
options = options.merge(:body => body, :headers => headers)
|
32
|
-
response =
|
35
|
+
response = @requester.request(method, @base_url + path, options)
|
33
36
|
|
34
37
|
handle_response(response)
|
35
38
|
end
|
36
39
|
|
37
40
|
def handle_response(response)
|
38
|
-
@success = case response.
|
41
|
+
@success = case response.status
|
39
42
|
when (200..299)
|
40
43
|
true
|
41
44
|
when 401, 403, 404, 405, 408, 410, 422, 500..599
|
42
45
|
false
|
43
46
|
else
|
44
|
-
raise TicketSharing::Error.new(%Q{#{response.
|
47
|
+
raise TicketSharing::Error.new(%Q{#{response.status}\n\n#{response.body}})
|
45
48
|
end
|
46
49
|
response
|
47
50
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'ticket_sharing'
|
1
2
|
require 'ticket_sharing/error'
|
2
3
|
|
3
4
|
module TicketSharing
|
@@ -6,67 +7,66 @@ module TicketSharing
|
|
6
7
|
|
7
8
|
CA_PATH = "/etc/ssl/certs"
|
8
9
|
|
9
|
-
def
|
10
|
-
|
11
|
-
|
12
|
-
when :post then Net::HTTP::Post
|
13
|
-
when :put then Net::HTTP::Put
|
14
|
-
when :delete then Net::HTTP::Delete
|
15
|
-
else
|
16
|
-
raise ArgumentError, "Unsupported method: #{method.inspect}"
|
17
|
-
end
|
10
|
+
def initialize(connection = TicketSharing.connection)
|
11
|
+
@connection = connection
|
12
|
+
end
|
18
13
|
|
19
|
-
|
14
|
+
def request(method, url, options = {})
|
15
|
+
raise ArgumentError, "Unsupported method: #{method.inspect}" unless %i(get post put delete).include?(method)
|
20
16
|
|
21
|
-
|
17
|
+
response = send_request(method, url, options)
|
18
|
+
follow_redirects!(method, response, options)
|
22
19
|
end
|
23
20
|
|
24
21
|
private
|
25
22
|
|
26
|
-
def send_request(
|
27
|
-
|
28
|
-
request = build_request(request_class, uri, options)
|
29
|
-
send!(request, uri, options)
|
30
|
-
end
|
23
|
+
def send_request(method, url, options)
|
24
|
+
response = nil
|
31
25
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
(options[:headers] || {}).each do |k, v|
|
38
|
-
request[k] = v
|
26
|
+
with_ssl_connection(options) do
|
27
|
+
response = @connection.send(method) do |request|
|
28
|
+
configure_request(request, url, options)
|
29
|
+
end
|
39
30
|
end
|
40
31
|
|
41
|
-
|
42
|
-
|
43
|
-
request
|
32
|
+
response
|
44
33
|
end
|
45
34
|
|
46
|
-
def
|
47
|
-
|
35
|
+
def with_ssl_connection(options)
|
36
|
+
ssl_config = {}
|
37
|
+
ssl_config[:ca_path] = CA_PATH if File.exist?(CA_PATH)
|
38
|
+
ssl_config[:verify] = false if options[:ssl] && options[:ssl][:verify] == false
|
39
|
+
|
40
|
+
old_configuration = @connection.instance_variable_get(:@ssl)
|
41
|
+
@connection.instance_variable_set(:@ssl, ssl_config) unless ssl_config.empty?
|
42
|
+
yield
|
43
|
+
ensure
|
44
|
+
@connection.instance_variable_set(:@ssl, old_configuration)
|
45
|
+
end
|
48
46
|
|
49
|
-
|
50
|
-
|
51
|
-
http.ca_path = CA_PATH if File.exist?(CA_PATH)
|
47
|
+
def configure_request(request, url, options)
|
48
|
+
uri = URI.parse(url)
|
52
49
|
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
request.url url
|
51
|
+
{
|
52
|
+
'Accept' => 'application/json',
|
53
|
+
'Content-Type' => 'application/json'
|
54
|
+
}.merge(options[:headers] || {}).each do |h, v|
|
55
|
+
request.headers[h] = v
|
56
56
|
end
|
57
57
|
|
58
|
-
|
58
|
+
request.body = options[:body]
|
59
59
|
end
|
60
60
|
|
61
|
-
def follow_redirects!(
|
61
|
+
def follow_redirects!(method, response, options)
|
62
62
|
redirects = 0
|
63
|
-
while (300..399).include?(response.
|
63
|
+
while (300..399).include?(response.status)
|
64
64
|
if redirects >= MAX_REDIRECTS
|
65
65
|
raise TicketSharing::TooManyRedirects
|
66
66
|
else
|
67
67
|
redirects += 1
|
68
68
|
end
|
69
|
-
response = send_request(
|
69
|
+
response = send_request(method, response['Location'], options)
|
70
70
|
end
|
71
71
|
response
|
72
72
|
end
|
@@ -48,21 +48,21 @@ module TicketSharing
|
|
48
48
|
client = Client.new(url, agreement.authentication_token)
|
49
49
|
@response = client.post(relative_url, self.to_json)
|
50
50
|
|
51
|
-
@response.
|
51
|
+
@response.status
|
52
52
|
end
|
53
53
|
|
54
54
|
def update_partner(url)
|
55
55
|
client = Client.new(url, agreement.authentication_token)
|
56
56
|
@response = client.put(relative_url, self.to_json)
|
57
57
|
|
58
|
-
@response.
|
58
|
+
@response.status
|
59
59
|
end
|
60
60
|
|
61
61
|
def unshare(base_url)
|
62
62
|
client = Client.new(base_url, agreement.authentication_token)
|
63
63
|
@response = client.delete(relative_url)
|
64
64
|
|
65
|
-
@response.
|
65
|
+
@response.status
|
66
66
|
end
|
67
67
|
|
68
68
|
def relative_url
|
metadata
CHANGED
@@ -1,15 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ticket_sharing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Lubaway
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
12
|
-
dependencies:
|
11
|
+
date: 2016-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bump
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: webmock
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: faraday
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
13
83
|
description: A ruby implementation of the Networked Help Desk API
|
14
84
|
email: josh@zendesk.com
|
15
85
|
executables: []
|
@@ -18,6 +88,7 @@ extra_rdoc_files:
|
|
18
88
|
- Readme.md
|
19
89
|
files:
|
20
90
|
- Readme.md
|
91
|
+
- lib/ticket_sharing.rb
|
21
92
|
- lib/ticket_sharing/actor.rb
|
22
93
|
- lib/ticket_sharing/agreement.rb
|
23
94
|
- lib/ticket_sharing/attachment.rb
|
@@ -43,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
43
114
|
requirements:
|
44
115
|
- - ">="
|
45
116
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
117
|
+
version: 2.1.0
|
47
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
119
|
requirements:
|
49
120
|
- - ">="
|