desk_api_v2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +0 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +24 -0
  6. data/README.md +27 -0
  7. data/Rakefile +39 -0
  8. data/desk_api_v2.gemspec +27 -0
  9. data/lib/desk.rb +11 -0
  10. data/lib/desk/api/articles.rb +34 -0
  11. data/lib/desk/api/cases.rb +47 -0
  12. data/lib/desk/api/customers.rb +36 -0
  13. data/lib/desk/api/groups.rb +30 -0
  14. data/lib/desk/api/modules/creatable.rb +15 -0
  15. data/lib/desk/api/modules/deletable.rb +11 -0
  16. data/lib/desk/api/modules/listable.rb +16 -0
  17. data/lib/desk/api/modules/searchable.rb +13 -0
  18. data/lib/desk/api/topics.rb +25 -0
  19. data/lib/desk/api/translations.rb +24 -0
  20. data/lib/desk/article.rb +7 -0
  21. data/lib/desk/case.rb +7 -0
  22. data/lib/desk/client.rb +39 -0
  23. data/lib/desk/collection.rb +17 -0
  24. data/lib/desk/connection.rb +71 -0
  25. data/lib/desk/customer.rb +7 -0
  26. data/lib/desk/entity.rb +7 -0
  27. data/lib/desk/error.rb +17 -0
  28. data/lib/desk/filter.rb +7 -0
  29. data/lib/desk/group.rb +7 -0
  30. data/lib/desk/message.rb +7 -0
  31. data/lib/desk/response/error_handling.rb +30 -0
  32. data/lib/desk/topic.rb +7 -0
  33. data/lib/desk/translation.rb +7 -0
  34. data/lib/desk/user.rb +7 -0
  35. data/spec/desk/api/articles_spec.rb +135 -0
  36. data/spec/desk/api/cases_spec.rb +181 -0
  37. data/spec/desk/api/customers_spec.rb +135 -0
  38. data/spec/desk/api/groups_spec.rb +98 -0
  39. data/spec/desk/api/topics_spec.rb +98 -0
  40. data/spec/desk/api/translations_spec.rb +92 -0
  41. data/spec/desk/collection_spec.rb +22 -0
  42. data/spec/desk/connection_spec.rb +95 -0
  43. data/spec/fixtures/article.json +39 -0
  44. data/spec/fixtures/articles.json +101 -0
  45. data/spec/fixtures/case.json +40 -0
  46. data/spec/fixtures/cases.json +105 -0
  47. data/spec/fixtures/customer.json +60 -0
  48. data/spec/fixtures/customers.json +143 -0
  49. data/spec/fixtures/group.json +9 -0
  50. data/spec/fixtures/group_filters.json +53 -0
  51. data/spec/fixtures/group_users.json +71 -0
  52. data/spec/fixtures/groups.json +42 -0
  53. data/spec/fixtures/message.json +26 -0
  54. data/spec/fixtures/topic.json +23 -0
  55. data/spec/fixtures/topics.json +69 -0
  56. data/spec/fixtures/translation.json +28 -0
  57. data/spec/fixtures/translations.json +79 -0
  58. data/spec/spec_helper.rb +17 -0
  59. metadata +200 -0
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "Support Ninjas",
3
+ "_links": {
4
+ "self": {
5
+ "href": "/api/v2/groups/1",
6
+ "class": "group"
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "total_entries": 2,
3
+ "_links": {
4
+ "self": {
5
+ "href": "/api/v2/groups/1/filters?page=1&per_page=50",
6
+ "class": "page"
7
+ },
8
+ "first": {
9
+ "href": "/api/v2/groups/1/filters?page=1&per_page=50",
10
+ "class": "page"
11
+ },
12
+ "last": {
13
+ "href": "/api/v2/groups/1/filters?page=1&per_page=50",
14
+ "class": "page"
15
+ },
16
+ "next": null,
17
+ "previous": null
18
+ },
19
+ "_embedded": {
20
+ "entries": [
21
+ {
22
+ "name": "My Active Cases",
23
+ "sort_field": "priority",
24
+ "sort_direction": "desc",
25
+ "position": 1,
26
+ "active": true,
27
+ "_links": {
28
+ "self": {
29
+ "href": "/api/v2/filters/1",
30
+ "class": "filter"
31
+ },
32
+ "group": null,
33
+ "user": null
34
+ }
35
+ },
36
+ {
37
+ "name": "New Cases",
38
+ "sort_field": "priority",
39
+ "sort_direction": "desc",
40
+ "position": 1,
41
+ "active": true,
42
+ "_links": {
43
+ "self": {
44
+ "href": "/api/v2/filters/2",
45
+ "class": "filter"
46
+ },
47
+ "group": null,
48
+ "user": null
49
+ }
50
+ }
51
+ ]
52
+ }
53
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "total_entries": 2,
3
+ "_links": {
4
+ "self": {
5
+ "href": "/api/v2/groups/1/users?page=1&per_page=50",
6
+ "class": "page"
7
+ },
8
+ "first": {
9
+ "href": "/api/v2/groups/1/users?page=1&per_page=50",
10
+ "class": "page"
11
+ },
12
+ "last": {
13
+ "href": "/api/v2/groups/1/users?page=1&per_page=50",
14
+ "class": "page"
15
+ },
16
+ "next": null,
17
+ "previous": null
18
+ },
19
+ "_embedded": {
20
+ "entries": [
21
+ {
22
+ "name": "John Doe",
23
+ "public_name": "John Doe",
24
+ "email": "john@acme.com",
25
+ "level": "agent",
26
+ "created_at": "2013-01-20T21:43:58Z",
27
+ "updated_at": "2014-01-13T21:43:58Z",
28
+ "current_login_at": "2014-01-19T21:43:58Z",
29
+ "last_login_at": "2014-01-13T21:43:58Z",
30
+ "_links": {
31
+ "self": {
32
+ "href": "/api/v2/users/1",
33
+ "class": "user"
34
+ },
35
+ "preferences": {
36
+ "href": "/api/v2/users/1/preferences",
37
+ "class": "user_preference"
38
+ },
39
+ "macros": {
40
+ "href": "/api/v2/users/1/macros",
41
+ "class": "macro"
42
+ }
43
+ }
44
+ },
45
+ {
46
+ "name": "Jane Smith",
47
+ "public_name": "Jane Smith",
48
+ "email": "jane@acme.com",
49
+ "level": "agent",
50
+ "created_at": "2013-01-20T21:43:58Z",
51
+ "updated_at": "2014-01-13T21:43:58Z",
52
+ "current_login_at": "2014-01-19T21:43:58Z",
53
+ "last_login_at": "2014-01-13T21:43:58Z",
54
+ "_links": {
55
+ "self": {
56
+ "href": "/api/v2/users/2",
57
+ "class": "user"
58
+ },
59
+ "preferences": {
60
+ "href": "/api/v2/users/1/preferences",
61
+ "class": "user_preference"
62
+ },
63
+ "macros": {
64
+ "href": "/api/v2/users/1/macros",
65
+ "class": "macro"
66
+ }
67
+ }
68
+ }
69
+ ]
70
+ }
71
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "total_entries": 2,
3
+ "_links": {
4
+ "self": {
5
+ "href": "/api/v2/groups?page=1&per_page=50",
6
+ "class": "page"
7
+ },
8
+ "first": {
9
+ "href": "/api/v2/groups?page=1&per_page=50",
10
+ "class": "page"
11
+ },
12
+ "last": {
13
+ "href": "/api/v2/groups?page=1&per_page=50",
14
+ "class": "page"
15
+ },
16
+ "next": null,
17
+ "previous": null
18
+ },
19
+ "_embedded": {
20
+ "entries": [
21
+ {
22
+ "name": "Support Ninjas",
23
+ "_links": {
24
+ "self": {
25
+ "href": "/api/v2/groups/1",
26
+ "class": "group"
27
+ }
28
+ }
29
+ },
30
+ {
31
+ "name": "Administrators",
32
+ "_links": {
33
+ "self": {
34
+ "href": "/api/v2/groups/2",
35
+ "class": "group"
36
+ }
37
+ },
38
+ "position": 2
39
+ }
40
+ ]
41
+ }
42
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "subject": "Please help",
3
+ "body": "Help me with my issue!",
4
+ "direction": "in",
5
+ "status": "pending",
6
+ "to": "john.doe@example.com",
7
+ "from": "doe.john@example.com",
8
+ "cc": null,
9
+ "bcc": null,
10
+ "created_at": "2013-08-21T00:15:04Z",
11
+ "updated_at": "2013-08-21T00:15:04Z",
12
+ "_links": {
13
+ "self": {
14
+ "href": "/api/v2/cases/1/replies/1",
15
+ "class": "email"
16
+ },
17
+ "case": {
18
+ "href": "/api/v2/cases/1",
19
+ "class": "case"
20
+ },
21
+ "customer": {
22
+ "href": "/api/v2/customer/1",
23
+ "class": "customer"
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "Customer Support",
3
+ "description": "This is key to going from good to great",
4
+ "position": 1,
5
+ "allow_questions": true,
6
+ "in_support_center": true,
7
+ "created_at": "2013-10-22T20:04:21Z",
8
+ "updated_at": "2013-10-27T20:04:21Z",
9
+ "_links": {
10
+ "self": {
11
+ "href": "/api/v2/topics/1",
12
+ "class": "topic"
13
+ },
14
+ "articles": {
15
+ "href": "/api/v2/topics/1/articles",
16
+ "class": "article"
17
+ },
18
+ "translations": {
19
+ "href": "/api/v2/topics/1/translations",
20
+ "class": "topic_translation"
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "total_entries": 2,
3
+ "_links": {
4
+ "self": {
5
+ "href": "/api/v2/topics?page=1&per_page=30",
6
+ "class": "page"
7
+ },
8
+ "first": {
9
+ "href": "/api/v2/topics?page=1&per_page=30",
10
+ "class": "page"
11
+ },
12
+ "last": {
13
+ "href": "/api/v2/topics?page=1&per_page=30",
14
+ "class": "page"
15
+ },
16
+ "next": null,
17
+ "previous": null
18
+ },
19
+ "_embedded": {
20
+ "entries": [
21
+ {
22
+ "name": "Customer Support",
23
+ "description": "This is key to going from good to great",
24
+ "position": 1,
25
+ "allow_questions": true,
26
+ "in_support_center": true,
27
+ "created_at": "2013-10-22T20:04:21Z",
28
+ "updated_at": "2013-10-27T20:04:21Z",
29
+ "_links": {
30
+ "self": {
31
+ "href": "/api/v2/topics/1",
32
+ "class": "topic"
33
+ },
34
+ "articles": {
35
+ "href": "/api/v2/topics/1/articles",
36
+ "class": "article"
37
+ },
38
+ "translations": {
39
+ "href": "/api/v2/topics/1/translations",
40
+ "class": "topic_translation"
41
+ }
42
+ }
43
+ },
44
+ {
45
+ "name": "Another Topic",
46
+ "description": "Not the first one, but another one!",
47
+ "position": 2,
48
+ "allow_questions": true,
49
+ "in_support_center": true,
50
+ "created_at": "2013-10-22T20:04:21Z",
51
+ "updated_at": "2013-10-27T20:04:21Z",
52
+ "_links": {
53
+ "self": {
54
+ "href": "/api/v2/topics/2",
55
+ "class": "topic"
56
+ },
57
+ "articles": {
58
+ "href": "/api/v2/topics/1/articles",
59
+ "class": "article"
60
+ },
61
+ "translations": {
62
+ "href": "/api/v2/topics/1/translations",
63
+ "class": "topic_translation"
64
+ }
65
+ }
66
+ }
67
+ ]
68
+ }
69
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "locale": "en",
3
+ "subject": "Awesome Subject",
4
+ "body": "<p>Awesome apples</p>",
5
+ "body_email": "Email for Awesome apples",
6
+ "body_email_auto": true,
7
+ "body_chat": "Awesome apples",
8
+ "body_chat_auto": true,
9
+ "body_web_callback": "<p>Awesome Apples</p>",
10
+ "body_web_callback_auto": true,
11
+ "body_twitter": "Awesome apples",
12
+ "body_twitter_auto": true,
13
+ "body_qna": "Awesome apples",
14
+ "body_qna_auto": true,
15
+ "body_phone": "Awesome apples",
16
+ "body_phone_auto": true,
17
+ "body_facebook": "Awesome apples",
18
+ "body_facebook_auto": true,
19
+ "publish_at": "2013-08-21T00:20:04Z",
20
+ "created_at": "2013-08-21T00:15:04Z",
21
+ "updated_at": "2013-08-21T00:20:04Z",
22
+ "_links": {
23
+ "self": {
24
+ "href": "/api/v2/articles/1/translations/en",
25
+ "class": "article"
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "total_entries": 2,
3
+ "_links": {
4
+ "self": {
5
+ "href": "/api/v2/articles/1/translations?page=1&per_page=50",
6
+ "class": "page"
7
+ },
8
+ "first": {
9
+ "href": "/api/v2/articles/1/translations?page=1&per_page=50",
10
+ "class": "page"
11
+ },
12
+ "last": {
13
+ "href": "/api/v2/articles/1/translations?page=1&per_page=50",
14
+ "class": "page"
15
+ },
16
+ "next": null,
17
+ "previous": null
18
+ },
19
+ "_embedded": {
20
+ "entries": [
21
+ {
22
+ "locale": "en",
23
+ "subject": "Awesome Subject",
24
+ "body": "<p>Awesome apples</p>",
25
+ "body_email": "Email for Awesome apples",
26
+ "body_email_auto": true,
27
+ "body_chat": "Awesome apples",
28
+ "body_chat_auto": true,
29
+ "body_web_callback": "<p>Awesome Apples</p>",
30
+ "body_web_callback_auto": true,
31
+ "body_twitter": "Awesome apples",
32
+ "body_twitter_auto": true,
33
+ "body_qna": "Awesome apples",
34
+ "body_qna_auto": true,
35
+ "body_phone": "Awesome apples",
36
+ "body_phone_auto": true,
37
+ "body_facebook": "Awesome apples",
38
+ "body_facebook_auto": true,
39
+ "publish_at": "2013-08-21T00:20:04Z",
40
+ "created_at": "2013-08-21T00:15:04Z",
41
+ "updated_at": "2013-08-21T00:20:04Z",
42
+ "_links": {
43
+ "self": {
44
+ "href": "/api/v2/articles/1/translations/en",
45
+ "class": "article"
46
+ }
47
+ }
48
+ },
49
+ {
50
+ "locale": "es",
51
+ "subject": "Spanish Translation",
52
+ "body": "Traducción español aquí",
53
+ "body_email": "Traducción español aquí",
54
+ "body_email_auto": true,
55
+ "body_chat": "Traducción español aquí",
56
+ "body_chat_auto": true,
57
+ "body_web_callback": "Traducción español aquí",
58
+ "body_web_callback_auto": true,
59
+ "body_twitter": "Traducción español aquí",
60
+ "body_twitter_auto": true,
61
+ "body_qna": "Traducción español aquí",
62
+ "body_qna_auto": true,
63
+ "body_phone": "Traducción español aquí",
64
+ "body_phone_auto": true,
65
+ "body_facebook": "Traducción español aquí",
66
+ "body_facebook_auto": true,
67
+ "publish_at": "2013-08-21T00:20:04Z",
68
+ "created_at": "2013-08-21T00:15:04Z",
69
+ "updated_at": "2013-08-21T00:20:04Z",
70
+ "_links": {
71
+ "self": {
72
+ "href": "/api/v2/articles/1/translations/es",
73
+ "class": "article"
74
+ }
75
+ }
76
+ }
77
+ ]
78
+ }
79
+ }
@@ -0,0 +1,17 @@
1
+ $: << File.expand_path('../lib', File.dirname(__FILE__))
2
+ require 'desk'
3
+
4
+ require "minitest/spec"
5
+ require 'minitest/autorun'
6
+ require 'minitest/reporters'
7
+ require 'webmock/minitest'
8
+
9
+ MiniTest::Reporters.use!
10
+
11
+ def fixture_path
12
+ File.expand_path("../fixtures", __FILE__)
13
+ end
14
+
15
+ def fixture(file)
16
+ File.new(fixture_path + '/' + file)
17
+ end
metadata ADDED
@@ -0,0 +1,200 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: desk_api_v2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Justin Powers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday_middleware
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.9.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.13
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 3.2.13
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.12
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.12
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 10.0.4
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 10.0.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 1.11.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 1.11.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 3.5.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 3.5.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: minitest-reporters
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 0.14.20
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.14.20
111
+ description: A ruby interface to the Desk.com API V2
112
+ email:
113
+ - justinspowers@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - .gitignore
119
+ - CHANGELOG.md
120
+ - Gemfile
121
+ - LICENSE
122
+ - README.md
123
+ - Rakefile
124
+ - desk_api_v2.gemspec
125
+ - lib/desk.rb
126
+ - lib/desk/api/articles.rb
127
+ - lib/desk/api/cases.rb
128
+ - lib/desk/api/customers.rb
129
+ - lib/desk/api/groups.rb
130
+ - lib/desk/api/modules/creatable.rb
131
+ - lib/desk/api/modules/deletable.rb
132
+ - lib/desk/api/modules/listable.rb
133
+ - lib/desk/api/modules/searchable.rb
134
+ - lib/desk/api/topics.rb
135
+ - lib/desk/api/translations.rb
136
+ - lib/desk/article.rb
137
+ - lib/desk/case.rb
138
+ - lib/desk/client.rb
139
+ - lib/desk/collection.rb
140
+ - lib/desk/connection.rb
141
+ - lib/desk/customer.rb
142
+ - lib/desk/entity.rb
143
+ - lib/desk/error.rb
144
+ - lib/desk/filter.rb
145
+ - lib/desk/group.rb
146
+ - lib/desk/message.rb
147
+ - lib/desk/response/error_handling.rb
148
+ - lib/desk/topic.rb
149
+ - lib/desk/translation.rb
150
+ - lib/desk/user.rb
151
+ - spec/desk/api/articles_spec.rb
152
+ - spec/desk/api/cases_spec.rb
153
+ - spec/desk/api/customers_spec.rb
154
+ - spec/desk/api/groups_spec.rb
155
+ - spec/desk/api/topics_spec.rb
156
+ - spec/desk/api/translations_spec.rb
157
+ - spec/desk/collection_spec.rb
158
+ - spec/desk/connection_spec.rb
159
+ - spec/fixtures/article.json
160
+ - spec/fixtures/articles.json
161
+ - spec/fixtures/case.json
162
+ - spec/fixtures/cases.json
163
+ - spec/fixtures/customer.json
164
+ - spec/fixtures/customers.json
165
+ - spec/fixtures/group.json
166
+ - spec/fixtures/group_filters.json
167
+ - spec/fixtures/group_users.json
168
+ - spec/fixtures/groups.json
169
+ - spec/fixtures/message.json
170
+ - spec/fixtures/topic.json
171
+ - spec/fixtures/topics.json
172
+ - spec/fixtures/translation.json
173
+ - spec/fixtures/translations.json
174
+ - spec/spec_helper.rb
175
+ homepage: http://github.com/dangerp/desk
176
+ licenses:
177
+ - MIT
178
+ metadata: {}
179
+ post_install_message:
180
+ rdoc_options: []
181
+ require_paths:
182
+ - lib
183
+ required_ruby_version: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: 1.9.2
188
+ required_rubygems_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ! '>='
191
+ - !ruby/object:Gem::Version
192
+ version: 1.3.6
193
+ requirements: []
194
+ rubyforge_project:
195
+ rubygems_version: 2.1.11
196
+ signing_key:
197
+ specification_version: 4
198
+ summary: A ruby interface to the Desk.com API V2
199
+ test_files: []
200
+ has_rdoc: