ecircle 0.1.0 → 0.1.1

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ecircle (0.1.0)
4
+ ecircle (0.1.1)
5
5
  activesupport
6
6
  i18n
7
7
  rake
data/README.md CHANGED
@@ -12,39 +12,6 @@ The API coverage is far from complete, however as far as I can see the most usef
12
12
 
13
13
  The existing API methods can be considered stable and are used in production.
14
14
 
15
- Features
16
- -------------
17
-
18
- ###Synchronous API
19
-
20
- The following methods are implemented:
21
-
22
- * createMember
23
- * createOrUpdateGroup
24
- * createOrUpdateUserByEmail
25
- * deleteGroup
26
- * deleteMember
27
- * logon (only for debugging purposes)
28
- * logout
29
- * sendParametrizedSingleMessageToUser
30
-
31
- See the [online API documentation](http://rubydoc.info/github/troessner/ecircle/master/frames) for details on arguments and return values
32
-
33
- ###Asnchronous API
34
-
35
- Since the asynchronous API is neither documented by ecircle nor intuitive at all, you're on your own. Jump to the examples section and good luck.
36
-
37
- To do
38
- -------------
39
-
40
- * Fix TODOs in source code
41
- * Implement missing API methods:
42
- * deleteUser
43
- * deleteUserByEmail
44
- * lookupGroups
45
- * Write specs
46
-
47
-
48
15
  Installation
49
16
  -------------
50
17
 
@@ -54,7 +21,6 @@ Either as a gem:
54
21
 
55
22
  or via Bundler by adding it to your Gemfile.
56
23
 
57
-
58
24
  Configuration
59
25
  -------------
60
26
 
@@ -64,16 +30,9 @@ Configuration
64
30
  config.password = 'your_password'
65
31
  end
66
32
 
67
-
68
33
  The reason for the unusual configuration setting "sync_realm" is that there is also an asynchronous ecircle API with a different realm.
69
34
 
70
- Logon
71
- -------------
72
-
73
- The ecircle gem does the session handling for you, there is no need to logon explicitly.
74
- Session tokens will be re-used to keep the number of session related traffic to a minimum.
75
-
76
- Response
35
+ Response handling
77
36
  -------------
78
37
 
79
38
  The ecircle gem will always return a wrapped response for all API methods, except for the logon method (see examples below or the API doc).
@@ -87,12 +46,37 @@ The most usefull (and self-explanatory) would be:
87
46
  * fault_code
88
47
  * ecircle_id IF the API returns an ID an success, e.g. for create_member and create_or_update_user_by_email
89
48
  * convenience methods which depend on your (failed request), e.g.:
90
- * member_does_not_exist? (relevant for create_member requests)
91
- * TODO Explain all convenience methods.
49
+ * member_does_not_exist? (delete_member requests)
50
+ * message_id_does_not_exist? (send_parametrized_message_to_user requests)
51
+ * no_such_group? (create_member requests)
52
+ * no_such_user? (create_member_requests)
92
53
 
93
54
  For details see [here](http://rubydoc.info/github/troessner/ecircle/master/Ecircle/WrappedResponse)
94
55
 
95
- Examples
56
+ Features
57
+ -------------
58
+
59
+ ###Synchronous API
60
+
61
+ The following methods are implemented:
62
+
63
+ * createMember
64
+ * createOrUpdateGroup
65
+ * createOrUpdateUserByEmail
66
+ * deleteGroup
67
+ * deleteMember
68
+ * logon (only for debugging purposes)
69
+ * logout
70
+ * sendParametrizedSingleMessageToUser
71
+
72
+ See the [online API documentation](http://rubydoc.info/github/troessner/ecircle/master/frames) for details on arguments and return values
73
+
74
+ ###Asnchronous API
75
+
76
+ Since the asynchronous API is neither documented by ecircle nor intuitive at all, you're on your own. Jump to the examples section and good luck.
77
+
78
+
79
+ Using ecircle
96
80
  -------------
97
81
 
98
82
  ### Synchronous API
@@ -155,6 +139,21 @@ Note the async_realm in the configure block, this another realm as for the sync
155
139
 
156
140
  Ecircle::JobPackage.send_async_message_to_group @options
157
141
 
142
+ To do
143
+ -------------
144
+
145
+ * Implement missing API methods:
146
+ * deleteUser
147
+ * deleteUserByEmail
148
+ * lookupGroups
149
+ * Write specs
150
+
151
+ Logon
152
+ -------------
153
+
154
+ The ecircle gem does the session handling for you, there is no need to logon explicitly.
155
+ Session tokens will be re-used to keep the number of session related traffic to a minimum.
156
+
158
157
  Documentation
159
158
  -------------
160
159
 
@@ -15,34 +15,15 @@ module Ecircle
15
15
  #@private
16
16
  def ensuring_logon &block
17
17
  begin
18
- @auth_token ||= logon
18
+ @auth_token = logon
19
+ block.call
19
20
  rescue Savon::SOAP::Fault => e
20
21
  # If we are here this probably means that our login credentials are wrong.
21
22
  wrapped_response = WrappedResponse.new(e)
22
23
  if wrapped_response.permission_problem?
23
24
  puts @@help
24
- raise
25
- end
26
- end
27
-
28
- first_try = true
29
- begin
30
- block.call
31
- rescue Savon::SOAP::Fault => e
32
- # If we are here that probably means that our session token has expired.
33
- wrapped_response = WrappedResponse.new(e)
34
- if wrapped_response.permission_problem?
35
- if first_try
36
- first_try = false
37
- @auth_token = logon
38
- retry
39
- else
40
- puts "!!! Could not re-authenticate after session expired: #{wrapped_response.inspect} !!!"
41
- raise
42
- end
43
- else
44
- raise # Re-raise cause something else went wrong.
45
25
  end
26
+ raise
46
27
  end
47
28
  end
48
29
 
@@ -1,3 +1,3 @@
1
1
  module Ecircle
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -22,27 +22,29 @@ module Ecircle
22
22
  end
23
23
  end
24
24
 
25
+ # Useful for `delete_member` requests.
26
+ # @return [Boolean]
25
27
  def member_does_not_exist?
26
- @fault_code == 100
27
- end
28
-
29
- def group_does_not_exist?
30
- @fault_code == 500
28
+ @fault_code == 100 && @error_message == 'No Member Id'
31
29
  end
32
30
 
31
+ # This method will tell you if referred to a user id that doesn't exist for ecircle.
32
+ # Usefull for create_member requests
33
33
  def no_such_user?
34
- @fault_code == 500
34
+ @fault_code == 103 && @error_message == 'No such User'
35
35
  end
36
36
 
37
+ # If you do a create_member request where the group id you pass in doesn't exist you get back a "permission problem".
38
+ # Yes, I know. It hurts.
39
+ # @return [Boolean]
37
40
  def permission_problem?
38
41
  @fault_code == 502 && @error_message = 'Permission Problem'
39
42
  end
43
+ alias :no_such_group? :permission_problem?
40
44
 
41
- def no_such_group_when_a_user_was_given?
42
- # YES, this IS horrible. Thanks ecircle. "Group does not exist" error codes vary depending on context.
43
- @fault_code == 502 && @error_message = 'Permission Problem'
44
- end
45
-
45
+ # This method will tell you if you referred to a message id that ecircle doesn't know about.
46
+ # Usefull for send_parametrized_message_to_user requests.
47
+ # @return[Boolean]
46
48
  def message_id_does_not_exist?
47
49
  @error_message =~ /MessageInfo '(\d+)' not found/
48
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecircle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
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: 2011-11-17 00:00:00.000000000Z
12
+ date: 2011-11-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &75171370 !ruby/object:Gem::Requirement
16
+ requirement: &74974340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *75171370
24
+ version_requirements: *74974340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &75170720 !ruby/object:Gem::Requirement
27
+ requirement: &74973630 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *75170720
35
+ version_requirements: *74973630
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &75169990 !ruby/object:Gem::Requirement
38
+ requirement: &74972700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *75169990
46
+ version_requirements: *74972700
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: savon
49
- requirement: &75169080 !ruby/object:Gem::Requirement
49
+ requirement: &74971890 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.7
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *75169080
57
+ version_requirements: *74971890
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &75166030 !ruby/object:Gem::Requirement
60
+ requirement: &74968680 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - =
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.6.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *75166030
68
+ version_requirements: *74968680
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
- requirement: &75165330 !ruby/object:Gem::Requirement
71
+ requirement: &74967950 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *75165330
79
+ version_requirements: *74967950
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ruby-debug19
82
- requirement: &75164260 !ruby/object:Gem::Requirement
82
+ requirement: &74966950 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *75164260
90
+ version_requirements: *74966950
91
91
  description: The ecircle gem aims to be a full-fledged client for all ecircle services.
92
92
  email:
93
93
  - timo.roessner@googlemail.com
@@ -127,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  segments:
129
129
  - 0
130
- hash: 36995713
130
+ hash: 846535155
131
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  none: false
133
133
  requirements:
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  segments:
138
138
  - 0
139
- hash: 36995713
139
+ hash: 846535155
140
140
  requirements: []
141
141
  rubyforge_project: ecircle
142
142
  rubygems_version: 1.8.10