helpscout 0.0.3 → 0.0.4

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.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helpscout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-15 00:00:00.000000000 Z
12
+ date: 2013-02-11 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70109893584620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,31 +21,21 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
24
+ version_requirements: *70109893584620
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: bundler
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70109893583940 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ~>
36
31
  - !ruby/object:Gem::Version
37
- version: 1.1.3
32
+ version: 1.2.3
38
33
  type: :development
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 1.1.3
35
+ version_requirements: *70109893583940
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: jeweler
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70109893583180 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 1.8.4
54
44
  type: :development
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.8.4
46
+ version_requirements: *70109893583180
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: httparty
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &70109893582640 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ! '>='
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: '0'
70
55
  type: :development
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
57
+ version_requirements: *70109893582640
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: simplecov
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &70109893582100 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ! '>='
@@ -85,15 +65,10 @@ dependencies:
85
65
  version: '0'
86
66
  type: :development
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
68
+ version_requirements: *70109893582100
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: reek
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &70109893581420 !ruby/object:Gem::Requirement
97
72
  none: false
98
73
  requirements:
99
74
  - - ~>
@@ -101,15 +76,10 @@ dependencies:
101
76
  version: 1.2.8
102
77
  type: :development
103
78
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: 1.2.8
79
+ version_requirements: *70109893581420
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: rdoc
112
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &70109893580760 !ruby/object:Gem::Requirement
113
83
  none: false
114
84
  requirements:
115
85
  - - ! '>='
@@ -117,12 +87,7 @@ dependencies:
117
87
  version: '0'
118
88
  type: :development
119
89
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
90
+ version_requirements: *70109893580760
126
91
  description: ''
127
92
  email: hector@hectorramos.com
128
93
  executables: []
@@ -136,7 +101,7 @@ files:
136
101
  - VERSION
137
102
  - helpscout.gemspec
138
103
  - lib/helpscout.rb
139
- - lib/helpscout/base.rb
104
+ - lib/helpscout/client.rb
140
105
  - lib/helpscout/models.rb
141
106
  homepage: http://github.com/hramos/helpscout
142
107
  licenses:
@@ -151,6 +116,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
116
  - - ! '>='
152
117
  - !ruby/object:Gem::Version
153
118
  version: '0'
119
+ segments:
120
+ - 0
121
+ hash: -795765520829784459
154
122
  required_rubygems_version: !ruby/object:Gem::Requirement
155
123
  none: false
156
124
  requirements:
@@ -159,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
127
  version: '0'
160
128
  requirements: []
161
129
  rubyforge_project:
162
- rubygems_version: 1.8.24
130
+ rubygems_version: 1.8.11
163
131
  signing_key:
164
132
  specification_version: 3
165
133
  summary: HelpScout API Wrapper
@@ -1,270 +0,0 @@
1
- require "date"
2
- require "httparty"
3
- require "helpscout/models"
4
- require "erb"
5
-
6
- module HelpScout
7
- class Base
8
- include HTTParty
9
- base_uri 'https://api.helpscout.net/v1'
10
-
11
- def initialize(key=nil)
12
- Base.settings
13
-
14
- if key.nil?
15
- key = @@settings["api_key"]
16
- end
17
-
18
- @auth = { :username => key, :password => "X" }
19
- @users = []
20
- @mailboxes = []
21
- end
22
-
23
- @@settings ||= nil
24
-
25
- def self.load!(api_key)
26
- @auth = { :username => api_key, :password => "X" }
27
- @users = []
28
- @mailboxes = []
29
- @@settings = {"api_key" => api_key}
30
- end
31
-
32
- def self.settings
33
- if @@settings.nil?
34
- path = "config/helpscout.yml"
35
- @@settings = YAML.load(ERB.new(File.new(path).read).result)
36
- @auth = { :username => @@settings["api_key"], :password => "X" }
37
- end
38
- @@settings
39
- end
40
-
41
- def self.parametrizedUrl(url, params={})
42
- return url unless params
43
-
44
- complete_url = url
45
-
46
- parameterString = ""
47
-
48
- params.each do |k,v|
49
- if parameterString.length > 0
50
- parameterString << "&"
51
- else
52
- parameterString << "?"
53
- end
54
- parameterString << "#{k}=#{v}"
55
- end
56
-
57
- if parameterString.length > 0
58
- complete_url << parameterString
59
- end
60
- complete_url
61
- end
62
-
63
- def self.requestItem(url, params={})
64
- item = nil
65
- complete_url = Base.parametrizedUrl(url, params)
66
-
67
- response = Base.get(complete_url, {:basic_auth => @auth})
68
-
69
- if 200 <= response.code && response.code < 300
70
- envelope = SingleItemEnvelope.new(response)
71
- if envelope.item
72
- item = envelope.item
73
- end
74
- elsif 400 <= response.code && response.code < 500
75
- if response["message"]
76
- envelope = ErrorEnvelope.new(response)
77
- raise StandardError, envelope.message
78
- else
79
- raise StandardError, response["error"]
80
- end
81
- else
82
- raise StandardError, "Server Response: #{response.code}"
83
- end
84
-
85
- item
86
- end
87
-
88
- def self.requestItems(url, params={})
89
- items = []
90
- complete_url = Base.parametrizedUrl(url, params)
91
-
92
- response = Base.get(complete_url, {:basic_auth => @auth})
93
-
94
- if 200 <= response.code && response.code < 300
95
- envelope = CollectionsEnvelope.new(response)
96
- if envelope.items
97
- envelope.items.each do |item|
98
- items << item
99
- end
100
- end
101
-
102
- if envelope.page < envelope.pages
103
- params[:page] = envelope.page + 1
104
- items << Base.requestItems(url, params)
105
- end
106
- elsif 400 <= response.code && response.code < 500
107
- if response["message"]
108
- envelope = ErrorEnvelope.new(response)
109
- raise StandardError, envelope.message
110
- else
111
- raise StandardError, response["error"]
112
- end
113
- else
114
- raise StandardError, "Server Response: #{response.code}"
115
- end
116
-
117
- items
118
- end
119
-
120
- def self.user(userId)
121
- url = "/users/#{userId}.json"
122
- item = Base.requestItem(url, nil)
123
- user = nil
124
- if item
125
- user = User.new(item)
126
- end
127
- user
128
- end
129
-
130
- def self.users
131
- url = "/users.json"
132
- items = Base.requestItems(url, :page => 1)
133
- @users = []
134
- items.each do |item|
135
- @users << User.new(item)
136
- end
137
- @users
138
- end
139
-
140
- def self.usersInMailbox(mailboxId)
141
- url ="/mailboxes/#{mailboxId}/users.json"
142
- items = Base.requestItems(url, :page => 1)
143
- users = []
144
- items.each do |item|
145
- users << User.new(item)
146
- end
147
- users
148
- end
149
-
150
- def self.mailboxes
151
- url = "/mailboxes.json"
152
- @mailboxes = []
153
- begin
154
- items = Base.requestItems(url, {})
155
- items.each do |item|
156
- @mailboxes << Mailbox.new(item)
157
- end
158
- rescue StandardError => e
159
- print "Request failed: " + e.message
160
- end
161
- @mailboxes
162
- end
163
-
164
- def self.foldersInMailbox(mailboxId)
165
- url ="/mailboxes/#{mailboxId}/folders.json"
166
- items = Base.requestItems(url, :page => 1)
167
- folders = []
168
- items.each do |item|
169
- folders << Mailbox::Folder.new(item)
170
- end
171
- folders
172
- end
173
-
174
- def self.conversation(conversationId)
175
- url = "/conversations/#{conversationId}.json"
176
- item = Base.requestItem(url, nil)
177
- conversation = nil
178
- if item
179
- conversation = Conversation.new(item)
180
- end
181
- conversation
182
- end
183
-
184
-
185
- CONVERSATION_STATUS_ACTIVE = "active"
186
- CONVERSATION_STATUS_ALL = "all"
187
- CONVERSATION_STATUS_PENDING = "pending"
188
-
189
- def self.conversations(mailboxId, status, modifiedSince)
190
- url = "/mailboxes/#{mailboxId}/conversations.json"
191
-
192
- options = {}
193
- if status
194
- options["status"] = status
195
- end
196
- if modifiedSince
197
- # TODO: Check modifiedSince format. Needs to be Datetime in UTC
198
- options["modifiedSince"] = modifiedSince
199
- end
200
-
201
- conversations = []
202
- begin
203
- items = Base.requestItems(url, options)
204
- items.each do |item|
205
- conversations << Conversation.new(item)
206
- end
207
- rescue StandardError => e
208
- print "Request failed: " + e.message
209
- end
210
- conversations
211
- end
212
-
213
- def self.customer(customerId)
214
- url = "/customers/#{customerId}.json"
215
- item = Base.requestItem(url, nil)
216
- customer = nil
217
- if item
218
- customer = Customer.new(item)
219
- end
220
- customer
221
- end
222
-
223
- def self.customers
224
- url = "/customers.json"
225
- items = Base.requestItems(url, :page => 1)
226
- customers = []
227
- items.each do |item|
228
- customers << Customer.new(item)
229
- end
230
- customers
231
- end
232
-
233
- def self.attachmentData(attachmentId)
234
- url = "/attachments/#{attachmentId}/data.json"
235
- item = Base.requestItem(url, nil)
236
- attachmentData = nil
237
- if item
238
- attachmentData = Conversation::AttachmentData.new(item)
239
- end
240
- attachmentData
241
- end
242
- end
243
-
244
- # TODO: check response, if 200, it's one of the first two.
245
- # If 403, error
246
- class SingleItemEnvelope
247
- attr_accessor :item
248
- def initialize(object)
249
- @item = object["item"]
250
- end
251
- end
252
-
253
- class CollectionsEnvelope
254
- attr_accessor :page, :pages, :count, :items
255
- def initialize(object)
256
- @page = object["page"]
257
- @pages = object["pages"]
258
- @count = object["count"]
259
- @items = object["items"]
260
- end
261
- end
262
-
263
- class ErrorEnvelope
264
- attr_accessor :status, :message
265
- def initialize(object)
266
- @status = object["status"]
267
- @message = object["message"]
268
- end
269
- end
270
- end