zendesk_api 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +1 -1
- data/Gemfile.lock +3 -1
- data/Rakefile +1 -0
- data/Readme.md +38 -0
- data/lib/zendesk_api.rb +2 -3
- data/lib/zendesk_api/actions.rb +9 -2
- data/lib/zendesk_api/association.rb +28 -54
- data/lib/zendesk_api/client.rb +20 -5
- data/lib/zendesk_api/collection.rb +31 -16
- data/lib/zendesk_api/configuration.rb +1 -0
- data/lib/zendesk_api/helpers.rb +1 -0
- data/lib/zendesk_api/lru_cache.rb +1 -0
- data/lib/zendesk_api/middleware/request/etag_cache.rb +1 -0
- data/lib/zendesk_api/middleware/request/retry.rb +2 -0
- data/lib/zendesk_api/middleware/request/upload.rb +1 -0
- data/lib/zendesk_api/middleware/response/callback.rb +1 -0
- data/lib/zendesk_api/middleware/response/deflate.rb +1 -0
- data/lib/zendesk_api/middleware/response/gzip.rb +2 -0
- data/lib/zendesk_api/middleware/response/logger.rb +1 -0
- data/lib/zendesk_api/middleware/response/parse_iso_dates.rb +1 -0
- data/lib/zendesk_api/rescue.rb +2 -0
- data/lib/zendesk_api/resource.rb +11 -6
- data/lib/zendesk_api/resources.rb +319 -0
- data/lib/zendesk_api/sideloading.rb +1 -0
- data/lib/zendesk_api/track_changes.rb +3 -2
- data/lib/zendesk_api/trackie.rb +1 -0
- data/lib/zendesk_api/version.rb +1 -1
- data/spec/association_spec.rb +1 -1
- data/spec/client_spec.rb +13 -2
- data/spec/collection_spec.rb +7 -7
- data/spec/data_resource_spec.rb +53 -66
- data/spec/read_resource_spec.rb +1 -1
- data/spec/resource_spec.rb +6 -6
- data/spec/spec_helper.rb +1 -1
- data/util/resource_handler.rb +68 -0
- data/util/verb_handler.rb +16 -0
- data/zendesk_api.gemspec +3 -2
- metadata +27 -12
- data/lib/zendesk_api/resources/forum.rb +0 -51
- data/lib/zendesk_api/resources/misc.rb +0 -79
- data/lib/zendesk_api/resources/ticket.rb +0 -97
- data/lib/zendesk_api/resources/user.rb +0 -59
@@ -0,0 +1,16 @@
|
|
1
|
+
class VerbHandler < YARD::Handlers::Ruby::Base
|
2
|
+
handles method_call(:put), method_call(:post), method_call(:get)
|
3
|
+
|
4
|
+
def process
|
5
|
+
name = statement.parameters.first.jump(:ident).source
|
6
|
+
|
7
|
+
verb = YARD::CodeObjects::MethodObject.new(namespace, name)
|
8
|
+
register(verb)
|
9
|
+
verb.dynamic = true
|
10
|
+
verb.docstring.add_tag(YARD::Tags::Tag.new(:return, "Success of this call", "Boolean"))
|
11
|
+
|
12
|
+
verb.signature = "def #{name}=(options = {})"
|
13
|
+
verb.parameters = [['options', {}]]
|
14
|
+
verb.docstring.add_tag(YARD::Tags::Tag.new(:param, "Options to pass to the request", "Hash", "options"))
|
15
|
+
end
|
16
|
+
end
|
data/zendesk_api.gemspec
CHANGED
@@ -18,10 +18,11 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.required_ruby_version = ">= 1.8.7"
|
19
19
|
s.required_rubygems_version = ">= 1.3.6"
|
20
20
|
|
21
|
+
s.add_development_dependency "bump"
|
22
|
+
s.add_development_dependency "rake"
|
21
23
|
s.add_development_dependency "rspec"
|
22
24
|
s.add_development_dependency "vcr"
|
23
25
|
s.add_development_dependency "webmock"
|
24
|
-
s.add_development_dependency "rake"
|
25
26
|
s.add_development_dependency "yard"
|
26
27
|
|
27
28
|
# Optional. Only used for uploads testing.
|
@@ -30,8 +31,8 @@ Gem::Specification.new do |s|
|
|
30
31
|
s.add_runtime_dependency "faraday", ">= 0.8.0"
|
31
32
|
s.add_runtime_dependency "faraday_middleware", ">= 0.8.7"
|
32
33
|
s.add_runtime_dependency "hashie"
|
33
|
-
s.add_runtime_dependency "json"
|
34
34
|
s.add_runtime_dependency "inflection"
|
35
|
+
s.add_runtime_dependency "json"
|
35
36
|
s.add_runtime_dependency "mime-types"
|
36
37
|
s.add_runtime_dependency "multipart-post"
|
37
38
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,10 +10,10 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-10-
|
13
|
+
date: 2012-10-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: bump
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0'
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
32
|
+
name: rake
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
@@ -45,7 +45,7 @@ dependencies:
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: rspec
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
@@ -61,7 +61,23 @@ dependencies:
|
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: vcr
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: webmock
|
65
81
|
requirement: !ruby/object:Gem::Requirement
|
66
82
|
none: false
|
67
83
|
requirements:
|
@@ -141,7 +157,7 @@ dependencies:
|
|
141
157
|
- !ruby/object:Gem::Version
|
142
158
|
version: '0'
|
143
159
|
- !ruby/object:Gem::Dependency
|
144
|
-
name:
|
160
|
+
name: inflection
|
145
161
|
requirement: !ruby/object:Gem::Requirement
|
146
162
|
none: false
|
147
163
|
requirements:
|
@@ -157,7 +173,7 @@ dependencies:
|
|
157
173
|
- !ruby/object:Gem::Version
|
158
174
|
version: '0'
|
159
175
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
176
|
+
name: json
|
161
177
|
requirement: !ruby/object:Gem::Requirement
|
162
178
|
none: false
|
163
179
|
requirements:
|
@@ -240,10 +256,7 @@ files:
|
|
240
256
|
- lib/zendesk_api/middleware/response/parse_iso_dates.rb
|
241
257
|
- lib/zendesk_api/rescue.rb
|
242
258
|
- lib/zendesk_api/resource.rb
|
243
|
-
- lib/zendesk_api/resources
|
244
|
-
- lib/zendesk_api/resources/misc.rb
|
245
|
-
- lib/zendesk_api/resources/ticket.rb
|
246
|
-
- lib/zendesk_api/resources/user.rb
|
259
|
+
- lib/zendesk_api/resources.rb
|
247
260
|
- lib/zendesk_api/sideloading.rb
|
248
261
|
- lib/zendesk_api/track_changes.rb
|
249
262
|
- lib/zendesk_api/trackie.rb
|
@@ -308,6 +321,8 @@ files:
|
|
308
321
|
- spec/search_spec.rb
|
309
322
|
- spec/spec_helper.rb
|
310
323
|
- spec/trackie_spec.rb
|
324
|
+
- util/resource_handler.rb
|
325
|
+
- util/verb_handler.rb
|
311
326
|
- zendesk_api.gemspec
|
312
327
|
homepage: http://developer.zendesk.com
|
313
328
|
licenses:
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module ZendeskAPI
|
2
|
-
class ForumSubscription < Resource
|
3
|
-
only_send_unnested_params
|
4
|
-
has :forum
|
5
|
-
has :user
|
6
|
-
end
|
7
|
-
|
8
|
-
class Forum < Resource
|
9
|
-
has :category
|
10
|
-
has :organization
|
11
|
-
has :locale
|
12
|
-
|
13
|
-
has_many :topics
|
14
|
-
has_many :subscriptions, :class => :forum_subscription
|
15
|
-
end
|
16
|
-
|
17
|
-
class Category < Resource
|
18
|
-
has_many :forums
|
19
|
-
end
|
20
|
-
|
21
|
-
class TopicSubscription < Resource
|
22
|
-
only_send_unnested_params
|
23
|
-
has :topic
|
24
|
-
has :user
|
25
|
-
end
|
26
|
-
|
27
|
-
class Topic < Resource
|
28
|
-
class TopicComment < Resource
|
29
|
-
has :topic
|
30
|
-
has :user
|
31
|
-
has_many :attachments
|
32
|
-
end
|
33
|
-
|
34
|
-
class TopicVote < SingularResource
|
35
|
-
only_send_unnested_params
|
36
|
-
has :topic
|
37
|
-
has :user
|
38
|
-
end
|
39
|
-
|
40
|
-
has_many :comments, :class => :topic_comment
|
41
|
-
has_many :subscriptions, :class => :topic_subscription
|
42
|
-
has :vote, :class => :topic_vote
|
43
|
-
|
44
|
-
def votes(opts = {})
|
45
|
-
return @votes if @votes && !opts[:reload]
|
46
|
-
|
47
|
-
association = ZendeskAPI::Association.new(:class => Topic::TopicVote, :parent => self, :path => 'votes')
|
48
|
-
@votes = ZendeskAPI::Collection.new(@client, Topic::TopicVote, opts.merge(:association => association))
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,79 +0,0 @@
|
|
1
|
-
module ZendeskAPI
|
2
|
-
class Activity < Resource
|
3
|
-
has :user
|
4
|
-
has :actor, :class => :user
|
5
|
-
end
|
6
|
-
|
7
|
-
class Setting < DataResource
|
8
|
-
attr_reader :on
|
9
|
-
|
10
|
-
def initialize(client, attributes = {})
|
11
|
-
@on = attributes.first
|
12
|
-
super(client, attributes[1])
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class MobileDevice < Resource
|
17
|
-
put :clear_badge
|
18
|
-
end
|
19
|
-
|
20
|
-
class SatisfactionRating < ReadResource
|
21
|
-
has :assignee, :class => :user
|
22
|
-
has :requester, :class => :user
|
23
|
-
has :ticket
|
24
|
-
has :group
|
25
|
-
end
|
26
|
-
|
27
|
-
class Attachment < Data
|
28
|
-
def initialize(client, attributes)
|
29
|
-
if attributes.is_a?(Hash)
|
30
|
-
super
|
31
|
-
else
|
32
|
-
super(client, :file => attributes)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def save
|
37
|
-
upload = Upload.create!(@client, attributes)
|
38
|
-
self.token = upload.token
|
39
|
-
end
|
40
|
-
|
41
|
-
def to_param
|
42
|
-
token
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
class Upload < Data
|
47
|
-
include Create
|
48
|
-
|
49
|
-
only_send_unnested_params
|
50
|
-
has_many :attachments
|
51
|
-
end
|
52
|
-
|
53
|
-
class Locale < ReadResource; end
|
54
|
-
class Bookmark < Resource; end
|
55
|
-
class Macro < DataResource; end
|
56
|
-
|
57
|
-
module Search
|
58
|
-
class Result < Data; end
|
59
|
-
|
60
|
-
def self.new(client, attributes)
|
61
|
-
result_type = attributes["result_type"]
|
62
|
-
|
63
|
-
if result_type
|
64
|
-
result_type = ZendeskAPI::Helpers.modulize_string(result_type)
|
65
|
-
klass = ZendeskAPI.const_get(result_type) rescue nil
|
66
|
-
end
|
67
|
-
|
68
|
-
(klass || Result).new(client, attributes)
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.resource_name
|
72
|
-
"search"
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.model_key
|
76
|
-
"results"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
module ZendeskAPI
|
2
|
-
class Request < Resource
|
3
|
-
class Comment < ReadResource
|
4
|
-
has_many :attachments, :inline => true
|
5
|
-
end
|
6
|
-
|
7
|
-
has_many :comments
|
8
|
-
has :organization
|
9
|
-
end
|
10
|
-
|
11
|
-
class TicketField < Resource; end
|
12
|
-
|
13
|
-
class TicketComment < Data
|
14
|
-
include Save
|
15
|
-
|
16
|
-
has_many :uploads, :class => :attachment, :inline => true
|
17
|
-
has :author, :class => :user
|
18
|
-
|
19
|
-
def save
|
20
|
-
save_associations
|
21
|
-
true
|
22
|
-
end
|
23
|
-
|
24
|
-
alias :save! :save
|
25
|
-
end
|
26
|
-
|
27
|
-
class TicketMetric < ReadResource; end
|
28
|
-
|
29
|
-
class Ticket < Resource
|
30
|
-
class Audit < DataResource; end
|
31
|
-
|
32
|
-
has :requester, :class => :user, :inline => :create
|
33
|
-
has :submitter, :class => :user
|
34
|
-
has :assignee, :class => :user
|
35
|
-
has :recipient, :class => :user
|
36
|
-
has_many :collaborators, :class => :user
|
37
|
-
has_many :audits
|
38
|
-
has :metrics, :class => :ticket_metric
|
39
|
-
has :group
|
40
|
-
has :forum_topic, :class => :topic
|
41
|
-
has :organization
|
42
|
-
|
43
|
-
has :comment, :class => :ticket_comment, :inline => true
|
44
|
-
has :last_comment, :class => :ticket_comment, :inline => true
|
45
|
-
|
46
|
-
# Gets a incremental export of tickets from the start_time until now.
|
47
|
-
# @param [Client] client The {Client} object to be used
|
48
|
-
# @param [Integer] start_time The start_time parameter
|
49
|
-
# @return [Collection] Collection of {Ticket}
|
50
|
-
def self.incremental_export(client, start_time)
|
51
|
-
ZendeskAPI::Collection.new(client, self, :path => "exports/tickets?start_time=#{start_time.to_i}")
|
52
|
-
end
|
53
|
-
|
54
|
-
# Imports a ticket through the imports/tickets endpoint
|
55
|
-
# @param [Client] client The {Client} object to be used
|
56
|
-
# @param [Hash] attributes The attributes to create.
|
57
|
-
# @return [Ticket] Created object or nil
|
58
|
-
def self.import(client, attributes)
|
59
|
-
ticket = new(client, attributes)
|
60
|
-
return unless ticket.save(:path => "imports/tickets")
|
61
|
-
ticket
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
class SuspendedTicket < ReadResource
|
66
|
-
include Destroy
|
67
|
-
put :recover
|
68
|
-
end
|
69
|
-
|
70
|
-
class ViewRow < DataResource
|
71
|
-
has :ticket
|
72
|
-
|
73
|
-
# Optional columns
|
74
|
-
has :group
|
75
|
-
has :assignee, :class => :user
|
76
|
-
has :requester, :class => :user
|
77
|
-
has :submitter, :class => :user
|
78
|
-
has :organization
|
79
|
-
|
80
|
-
def self.model_key
|
81
|
-
"rows"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
class ViewExecution < Data
|
86
|
-
has_many :custom_fields, :class => :ticket_field
|
87
|
-
end
|
88
|
-
|
89
|
-
class View < ReadResource
|
90
|
-
has_many :rows, :class => :view_row, :path => "execute"
|
91
|
-
has :execution, :class => :view_execution
|
92
|
-
|
93
|
-
def self.preview(client, options = {})
|
94
|
-
Collection.new(client, ViewRow, options.merge(:path => "views/preview", :verb => :post))
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'zendesk_api/resources/forum'
|
2
|
-
|
3
|
-
module ZendeskAPI
|
4
|
-
class CRMData < DataResource; end
|
5
|
-
class CRMDataStatus < DataResource; end
|
6
|
-
class CustomRole < DataResource; end
|
7
|
-
|
8
|
-
class GroupMembership < Resource
|
9
|
-
has :user
|
10
|
-
has :group
|
11
|
-
end
|
12
|
-
|
13
|
-
class User < Resource
|
14
|
-
class Identity < Resource
|
15
|
-
put :make_primary
|
16
|
-
put :verify
|
17
|
-
put :request_verification
|
18
|
-
end
|
19
|
-
|
20
|
-
def initialize(*)
|
21
|
-
super
|
22
|
-
|
23
|
-
# Needed for side-loading to work
|
24
|
-
self.role_id = role.id if self.key?(:role)
|
25
|
-
end
|
26
|
-
|
27
|
-
has :organization
|
28
|
-
|
29
|
-
has :custom_role, :include => :roles
|
30
|
-
has :role, :inline => true, :include_key => :name
|
31
|
-
has :ability, :inline => true
|
32
|
-
|
33
|
-
has_many :identities
|
34
|
-
|
35
|
-
has_many :requests
|
36
|
-
has_many :requested_tickets, :class => :ticket, :path => 'tickets/requested'
|
37
|
-
has_many :ccd_tickets, :class => :ticket, :path => 'tickets/ccd'
|
38
|
-
|
39
|
-
has_many :groups
|
40
|
-
has_many :group_memberships
|
41
|
-
has_many :topics
|
42
|
-
|
43
|
-
has_many :forum_subscriptions, :class => "forum_subscription"
|
44
|
-
has_many :topic_subscriptions, :class => "topic_subscription"
|
45
|
-
has_many :topic_comments, :class => "topic/topic_comment"
|
46
|
-
has_many :topic_votes, :class => "topic/vote"
|
47
|
-
|
48
|
-
has :crm_data
|
49
|
-
has :crm_data_status, :path => 'crm_data/status'
|
50
|
-
end
|
51
|
-
|
52
|
-
class Organization < Resource
|
53
|
-
has :ability, :inline => true
|
54
|
-
has :group
|
55
|
-
|
56
|
-
has_many :tickets
|
57
|
-
has_many :users
|
58
|
-
end
|
59
|
-
end
|