zendesk_api 0.1.7 → 0.1.8

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.
Files changed (42) hide show
  1. data/.yardopts +1 -1
  2. data/Gemfile.lock +3 -1
  3. data/Rakefile +1 -0
  4. data/Readme.md +38 -0
  5. data/lib/zendesk_api.rb +2 -3
  6. data/lib/zendesk_api/actions.rb +9 -2
  7. data/lib/zendesk_api/association.rb +28 -54
  8. data/lib/zendesk_api/client.rb +20 -5
  9. data/lib/zendesk_api/collection.rb +31 -16
  10. data/lib/zendesk_api/configuration.rb +1 -0
  11. data/lib/zendesk_api/helpers.rb +1 -0
  12. data/lib/zendesk_api/lru_cache.rb +1 -0
  13. data/lib/zendesk_api/middleware/request/etag_cache.rb +1 -0
  14. data/lib/zendesk_api/middleware/request/retry.rb +2 -0
  15. data/lib/zendesk_api/middleware/request/upload.rb +1 -0
  16. data/lib/zendesk_api/middleware/response/callback.rb +1 -0
  17. data/lib/zendesk_api/middleware/response/deflate.rb +1 -0
  18. data/lib/zendesk_api/middleware/response/gzip.rb +2 -0
  19. data/lib/zendesk_api/middleware/response/logger.rb +1 -0
  20. data/lib/zendesk_api/middleware/response/parse_iso_dates.rb +1 -0
  21. data/lib/zendesk_api/rescue.rb +2 -0
  22. data/lib/zendesk_api/resource.rb +11 -6
  23. data/lib/zendesk_api/resources.rb +319 -0
  24. data/lib/zendesk_api/sideloading.rb +1 -0
  25. data/lib/zendesk_api/track_changes.rb +3 -2
  26. data/lib/zendesk_api/trackie.rb +1 -0
  27. data/lib/zendesk_api/version.rb +1 -1
  28. data/spec/association_spec.rb +1 -1
  29. data/spec/client_spec.rb +13 -2
  30. data/spec/collection_spec.rb +7 -7
  31. data/spec/data_resource_spec.rb +53 -66
  32. data/spec/read_resource_spec.rb +1 -1
  33. data/spec/resource_spec.rb +6 -6
  34. data/spec/spec_helper.rb +1 -1
  35. data/util/resource_handler.rb +68 -0
  36. data/util/verb_handler.rb +16 -0
  37. data/zendesk_api.gemspec +3 -2
  38. metadata +27 -12
  39. data/lib/zendesk_api/resources/forum.rb +0 -51
  40. data/lib/zendesk_api/resources/misc.rb +0 -79
  41. data/lib/zendesk_api/resources/ticket.rb +0 -97
  42. 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
@@ -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.7
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-24 00:00:00.000000000 Z
13
+ date: 2012-10-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rspec
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: vcr
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: webmock
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: rake
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: json
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: inflection
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/forum.rb
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