caseblocks_api 0.2.16 → 0.2.17

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,31 +1,50 @@
1
- = caseblocks_api
1
+ caseblocks_api
2
+ ==============
2
3
 
3
- Authenticate with CaseBlocks:
4
+ **Authenticate with CaseBlocks:**
4
5
 
5
6
  `caseblocks = CaseblocksAPI::Client.new("email@test.com", "some_password", "some_url")`
6
7
 
7
- Create a new Case:
8
+ **Create a new Case:**
8
9
 
9
- `caseblocks.create_case({:title => "This is a Case!", :due_at => "tomorrow")`
10
+ `caseblocks.create_case({:title => "This is a Case!", :due_at => "tomorrow"}, "your_case_type_name")`
10
11
 
11
- Searching for cases:
12
+ **Find or Create a new Case**
13
+
14
+ *The data included in the document should include the case type unique identifier field, otherwise the case will be created regardless of other cases.
15
+
16
+ `caseblocks.find_or_create_case({:title => "This is a Case!", :due_at => "tomorrow"}, "your_case_type_name")`
17
+
18
+ **Searching for cases:**
12
19
 
13
20
  `caseblocks.search('CaseTypeName', {telephone_number: '12334', given_name: 'Smith'})`
14
21
 
15
- Searching with pagination:
22
+ **Searching with pagination:**
16
23
 
17
24
  `caseblocks.search('CaseTypeName', {given_name: 'Smith'}, page: 0, page_size: 10)`
18
25
 
19
- Searching with sorting:
26
+ **Searching with sorting:**
20
27
 
21
28
  `caseblocks.search('CaseTypeName', {given_name: 'Smith'}, sort_by: [{field: 'created_at', direction: 'desc'}])`
22
29
  `caseblocks.search('CaseTypeName', {given_name: 'Smith'}, sort_by: [{field: 'created_at', direction: 'asc'}])`
23
30
 
24
- Searching for a reduced response:
31
+ **Searching for a reduced response:**
25
32
 
26
33
  `caseblocks.search('CaseTypeName', {given_name: 'Smith'}, fields: ['id', 'given_name', ''created_at'])`
27
34
 
28
- == Contributing to caseblocks_api
35
+ **Creating Conversations and messages on a case:**
36
+
37
+ We can create a message on a case by calling create_message. If you include a conversation_id it will be added as a reply to that conversation.
38
+
39
+ `caseblocks.create_message(:author_id => 1, :case_id => "abcdef12345", :subject => "Read this, its awesome!", :body => "This is the body of the message", :recipient_users => [], :recipient_teams => [])`
40
+
41
+ and for a reply
42
+
43
+ `caseblocks.create_message(:author_id => 1, :case_id => "abcdef12345", :subject => "Read this, its awesome!", :body => "This is the body of the message", :recipient_users => [], :recipient_teams => [], :conversation_id => "")`
44
+
45
+
46
+ Contributing to caseblocks_api
47
+ ==============================
29
48
 
30
49
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
31
50
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
@@ -35,7 +54,8 @@ Searching for a reduced response:
35
54
  * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
36
55
  * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
37
56
 
38
- == Copyright
57
+ Copyright
58
+ =========
39
59
 
40
60
  Copyright (c) 2012 EmergeAdapt. See LICENSE.txt for
41
61
  further details.
@@ -5,10 +5,10 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "caseblocks_api"
8
- s.version = "0.2.16"
8
+ s.version = "0.2.17"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Mark Provan"]
11
+ s.authors = ["Mark Provan", "Stewart McKee"]
12
12
  s.date = "2013-09-03"
13
13
  s.email = "development@emergeadapt.com"
14
14
  s.extra_rdoc_files = [
@@ -29,12 +29,32 @@ module CaseblocksAPI
29
29
  end
30
30
  end
31
31
 
32
- def create_case(params, case_type=nil)
32
+ def create_case(params, case_type=nil)
33
33
  params.merge!(:case_type_id => fetch_case_type_id(case_type))
34
- response = self.class.post("/case_blocks/cases", :body => {:case => params}.to_json)
34
+ response = self.class.post("/case_blocks/cases", :body => {:case => params}.to_json)
35
35
  if response.code != 201
36
36
  response_hash = {:body => response.body, :code => response.code, :message => response.message, :headers => response.headers.inspect}
37
- raise CaseblocksAPI::CaseCreationError.new("Unable to create case - received response code #{response.code}", response_hash)
37
+ raise CaseblocksAPI::CaseCreationError.new("Unable to create case - received response code #{response.code}", response_hash)
38
+ end
39
+ end
40
+
41
+ def find_or_create_case(params, case_type=nil)
42
+ params.merge!(:case_type_id => fetch_case_type_id(case_type))
43
+ response = self.class.post("/case_blocks/cases", :body => {:unique => true, :case => params}.to_json)
44
+ if response.code != 201
45
+ response_hash = {:body => response.body, :code => response.code, :message => response.message, :headers => response.headers.inspect}
46
+ raise CaseblocksAPI::CaseCreationError.new("Unable to create case - received response code #{response.code}", response_hash)
47
+ end
48
+ end
49
+
50
+ def create_message(params)
51
+ query = {:message => params}
52
+ response = self.class.post("/case_blocks/messages", :body => query.to_json)
53
+ if response.code != 201
54
+ response_hash = {:body => response.body, :code => response.code, :message => response.message, :headers => response.headers.inspect}
55
+ raise CaseblocksAPI::CaseCreationError.new("Unable to create case - received response code #{response.code}", response_hash)
56
+ else
57
+ return response["message"]
38
58
  end
39
59
  end
40
60
 
@@ -29,6 +29,9 @@ describe "CaseblocksAPI" do
29
29
  stub_request(:post, "http://example.com/tokens?auth_token=").
30
30
  with(:body => "{\"email\":\"username\",\"password\":\"password\"}",
31
31
  :headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json'})
32
+ stub_request(:post, "http://example.com/tokens?auth_token=").
33
+ with(:body => "{\"unique\":true,\"email\":\"username\",\"password\":\"password\"}",
34
+ :headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json'})
32
35
  end
33
36
 
34
37
  context "successfully created on CaseBlocks" do
@@ -39,6 +42,16 @@ describe "CaseblocksAPI" do
39
42
  caseblocks_client.create_case({'my' => 'params'}, 'some_case')
40
43
  stub.should have_been_made.times(1)
41
44
  end
45
+
46
+ context "with unique case" do
47
+ it "should include unique key" do
48
+ stub = stub_request(:post, "example.com/case_blocks/cases?auth_token=")
49
+ .with({body: { 'unique' => true, 'case' => {'my' => 'params', 'case_type_id' => 1}}.to_json })
50
+ .to_return(:status => 201, :body => "", :headers => {})
51
+ caseblocks_client.find_or_create_case({'my' => 'params'}, 'some_case')
52
+
53
+ end
54
+ end
42
55
  end
43
56
 
44
57
  context "received non-200 response code from CaseBlocks" do
@@ -50,5 +63,20 @@ describe "CaseblocksAPI" do
50
63
  expect{caseblocks_client.create_case({'my' => 'params'}, 'some_case')}.to raise_error(CaseblocksAPI::CaseCreationError, 'Unable to create case - received response code 500')
51
64
  end
52
65
  end
66
+
67
+ context "creating a message" do
68
+ it "should call post" do
69
+ stub = stub_request(:post, "example.com/case_blocks/messages?auth_token=")
70
+ .with({body: {"message" => {'case_id' => "234", "subject" => "asdf"}}.to_json })
71
+ .to_return(:status => 201, :body => {"message" => {"case_id" => "234", "subject" => "asdf", "conversation_id" => "567"}}.to_json, :headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json'})
72
+
73
+ message = caseblocks_client.create_message({'case_id' => '234', "subject" => "asdf"})
74
+ message.class.should == Hash
75
+ message["case_id"].should eql "234"
76
+ message["subject"].should eql "asdf"
77
+ message["conversation_id"].should eql "567"
78
+ stub.should have_been_made.times(1)
79
+ end
80
+ end
53
81
  end
54
82
  end
metadata CHANGED
@@ -1,11 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caseblocks_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.16
4
+ version: 0.2.17
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mark Provan
9
+ - Stewart McKee
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
@@ -13,7 +14,7 @@ date: 2013-09-03 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: httparty
16
- requirement: &70195637932920 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
20
  - - ! '>='
@@ -21,10 +22,15 @@ dependencies:
21
22
  version: '0'
22
23
  type: :runtime
23
24
  prerelease: false
24
- version_requirements: *70195637932920
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
25
31
  - !ruby/object:Gem::Dependency
26
32
  name: activesupport
27
- requirement: &70195637932220 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
28
34
  none: false
29
35
  requirements:
30
36
  - - ! '>='
@@ -32,10 +38,15 @@ dependencies:
32
38
  version: '0'
33
39
  type: :runtime
34
40
  prerelease: false
35
- version_requirements: *70195637932220
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rspec
38
- requirement: &70195637931620 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ~>
@@ -43,10 +54,15 @@ dependencies:
43
54
  version: '2.11'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70195637931620
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '2.11'
47
63
  - !ruby/object:Gem::Dependency
48
64
  name: rdoc
49
- requirement: &70195637930980 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
50
66
  none: false
51
67
  requirements:
52
68
  - - ~>
@@ -54,10 +70,15 @@ dependencies:
54
70
  version: '3.12'
55
71
  type: :development
56
72
  prerelease: false
57
- version_requirements: *70195637930980
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '3.12'
58
79
  - !ruby/object:Gem::Dependency
59
80
  name: bundler
60
- requirement: &70195637930420 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
61
82
  none: false
62
83
  requirements:
63
84
  - - ! '>='
@@ -65,10 +86,15 @@ dependencies:
65
86
  version: '0'
66
87
  type: :development
67
88
  prerelease: false
68
- version_requirements: *70195637930420
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
69
95
  - !ruby/object:Gem::Dependency
70
96
  name: jeweler
71
- requirement: &70195637929340 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
72
98
  none: false
73
99
  requirements:
74
100
  - - ~>
@@ -76,10 +102,15 @@ dependencies:
76
102
  version: 1.8.4
77
103
  type: :development
78
104
  prerelease: false
79
- version_requirements: *70195637929340
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.8.4
80
111
  - !ruby/object:Gem::Dependency
81
112
  name: guard-rspec
82
- requirement: &70195637945060 !ruby/object:Gem::Requirement
113
+ requirement: !ruby/object:Gem::Requirement
83
114
  none: false
84
115
  requirements:
85
116
  - - ! '>='
@@ -87,10 +118,15 @@ dependencies:
87
118
  version: '0'
88
119
  type: :development
89
120
  prerelease: false
90
- version_requirements: *70195637945060
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
91
127
  - !ruby/object:Gem::Dependency
92
128
  name: pry
93
- requirement: &70195637949780 !ruby/object:Gem::Requirement
129
+ requirement: !ruby/object:Gem::Requirement
94
130
  none: false
95
131
  requirements:
96
132
  - - ! '>='
@@ -98,10 +134,15 @@ dependencies:
98
134
  version: '0'
99
135
  type: :development
100
136
  prerelease: false
101
- version_requirements: *70195637949780
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
102
143
  - !ruby/object:Gem::Dependency
103
144
  name: webmock
104
- requirement: &70195637948840 !ruby/object:Gem::Requirement
145
+ requirement: !ruby/object:Gem::Requirement
105
146
  none: false
106
147
  requirements:
107
148
  - - ! '>='
@@ -109,10 +150,15 @@ dependencies:
109
150
  version: '0'
110
151
  type: :development
111
152
  prerelease: false
112
- version_requirements: *70195637948840
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
113
159
  - !ruby/object:Gem::Dependency
114
160
  name: rspec-given
115
- requirement: &70195637948240 !ruby/object:Gem::Requirement
161
+ requirement: !ruby/object:Gem::Requirement
116
162
  none: false
117
163
  requirements:
118
164
  - - ! '>='
@@ -120,7 +166,12 @@ dependencies:
120
166
  version: '0'
121
167
  type: :development
122
168
  prerelease: false
123
- version_requirements: *70195637948240
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
124
175
  description:
125
176
  email: development@emergeadapt.com
126
177
  executables: []
@@ -167,9 +218,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
218
  - - ! '>='
168
219
  - !ruby/object:Gem::Version
169
220
  version: '0'
170
- segments:
171
- - 0
172
- hash: 1836771192975938175
173
221
  required_rubygems_version: !ruby/object:Gem::Requirement
174
222
  none: false
175
223
  requirements:
@@ -178,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
226
  version: '0'
179
227
  requirements: []
180
228
  rubyforge_project:
181
- rubygems_version: 1.8.15
229
+ rubygems_version: 1.8.24
182
230
  signing_key:
183
231
  specification_version: 3
184
232
  summary: Ruby wrapper for CaseBlocks API