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.
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