hellotxt 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ require 'autotest/growl'
2
+ require 'redgreen'
3
+ require 'autotest/timestamp'
4
+ Autotest.add_hook :initialize do |at|
5
+ %w{.svn .hg .git vendor}.each {|exception| at.add_exception(exception)}
6
+ end
@@ -1,3 +1,10 @@
1
+ == 1.0.4 / 2010-11-11
2
+
3
+ * minor tweak
4
+ * update Rakefile for Bones 3.5.1
5
+ * cleanup README instructions
6
+ * remove references to gems.github.com
7
+
1
8
  == 1.0.3 / 2009-11-22
2
9
 
3
10
  * maintenance release
data/README CHANGED
@@ -30,7 +30,7 @@ Everything after the 'hellotxt' command is what will be posted to the service. Y
30
30
  If your keys have not been stored, it will ask for them. These keys will be saved
31
31
  in a YAML file in your home directory and you won't be asked for them again.
32
32
 
33
- You can obtain your API key here: http://hellotxt.com/api/doc
33
+ You can obtain your API key and user key here: http://hellotxt.com/developers/applications
34
34
 
35
35
  Library usage:
36
36
 
@@ -55,20 +55,22 @@ Ruby!
55
55
 
56
56
  == INSTALL:
57
57
 
58
- # From Rubyforge...
59
- $ sudo gem install hellotxt
58
+ $ (sudo) gem install hellotxt
60
59
 
61
- *OR*
60
+ (you really should try RVM if you still need sudo to manage your gems. http://rvm.beginrescueend.com/)
62
61
 
63
- # From Github...
64
- $ sudo gem sources -a http://gems.github.com (only need to do this once)
65
- $ sudo gem install kevwil-hellotxt
62
+ == RUN TESTS:
63
+
64
+ $ (sudo) gem install bones-extras
65
+ $ rake
66
+
67
+ (you really should try RVM if you still need sudo to manage your gems. http://rvm.beginrescueend.com/)
66
68
 
67
69
  == LICENSE:
68
70
 
69
71
  (The MIT License)
70
72
 
71
- Copyright (c) 2008-2009 Kevin Williams
73
+ Copyright (c) 2008-2010 Kevin Williams
72
74
 
73
75
  Permission is hereby granted, free of charge, to any person obtaining
74
76
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ require 'hellotxt'
10
10
  task :default => 'spec:run'
11
11
  task 'gem:release' => 'spec:run'
12
12
 
13
- Bones {
13
+ Bones do
14
14
  name 'hellotxt'
15
15
  authors ['Kevin Williams']
16
16
  email ['kevwil@gmail.com']
@@ -19,14 +19,17 @@ Bones {
19
19
  readme_file 'README'
20
20
  ignore_file '.gitignore'
21
21
  gem.need_tar false
22
- depend_on 'bones', :development => true
22
+ depend_on 'rcov', :development => true
23
23
  depend_on 'rspec', :development => true
24
24
  depend_on 'mocha', :development => true
25
+ depend_on 'bones-git', :development => true
26
+ depend_on 'bones-rspec', :development => true
25
27
  ruby_opts << '-Ilib' << '-rubygems'
26
- spec.opts << '--color'# << '--format html:./spec_out.html'
28
+ test.opts << '--color'# << '--format html:./spec_out.html'
27
29
  rcov.opts << ['--exclude', 'rcov']
28
30
  rcov.opts << ['--exclude', 'mocha']
29
- # enable_sudo
30
- }
31
+ use_gmail
32
+ enable_sudo
33
+ end
31
34
 
32
35
  # EOF
@@ -3,7 +3,7 @@ module HelloTxt
3
3
  module VERSION # :nodoc:
4
4
  MAJOR = 1
5
5
  MINOR = 0
6
- TINY = 3
6
+ TINY = 4
7
7
  STRING = [MAJOR,MINOR,TINY].join('.')
8
8
  end
9
9
 
@@ -10,122 +10,122 @@ module HelloTxt
10
10
 
11
11
  class Client
12
12
 
13
- def initialize(api_key, user_key)
14
- @api_key = api_key
15
- @user_key = user_key
16
- end
17
-
18
- # Validates API key and USER key
19
- # if successful returns:
20
- # {'status' => 'OK'}
21
- # if unsuccessful returns:
22
- # {'status' => 'FAIL', 'message' => 'message what went wrong'}
23
- def validate
24
- response = get_response('user.validate')
25
- if response.elements['rsp'].attributes['status'] == 'OK'
26
- return status_ok
27
- else
28
- return status_fail(response)
29
- end
30
- end
13
+ def initialize(api_key, user_key)
14
+ @api_key = api_key
15
+ @user_key = user_key
16
+ end
31
17
 
32
- # Returns a list of services the user has set up through HelloTxt
33
- # Optional arguments:
34
- # group = service group type; either 'inhome', 'friend', 'colleague', 'all'
35
- # if successful returns:
36
- # {'status' => 'OK', 'services' => [{'id' => 'serviceid', 'name' => 'servicename', 'code' => 'servicecode', 'inhome' => 'checked', 'friend' => 'checked', 'collegue' => 'checked'}, ...]}
37
- # if unsuccessful returns:
38
- # {'status' => 'FAIL', 'message' => 'message what went wrong'}
39
- def user_services(group = 'all')
40
- response = get_response('user.services', 'group' => group)
41
- if response.elements['rsp'].attributes['status'] == 'OK'
42
- services = status_ok()
43
- services['services'] = []
44
- response.elements.each('rsp/services/service') do |service|
45
- services['services'].push({'id' => service.attributes['id'],
46
- 'name' => service.attributes['name'],
47
- 'code' => service.elements['code'].text,
48
- 'inhome' => service.elements['inhome'].text,
49
- 'friend' => service.elements['friend'].text,
50
- 'collegue' => service.elements['collegue'].text})
51
- end
52
- return services
53
- else
54
- return status_fail(response)
55
- end
56
- end
18
+ # Validates API key and USER key
19
+ # if successful returns:
20
+ # {'status' => 'OK'}
21
+ # if unsuccessful returns:
22
+ # {'status' => 'FAIL', 'message' => 'message what went wrong'}
23
+ def validate
24
+ response = get_response('user.validate')
25
+ if response.elements['rsp'].attributes['status'] == 'OK'
26
+ return status_ok
27
+ else
28
+ return status_fail(response)
29
+ end
30
+ end
57
31
 
58
- # Posts a message to the user's social services
59
- # Arguments:
60
- # body = message body
61
- # Optional arguments:
62
- # title = title of the posted message, only used if the service supports it
63
- # group = service group type; either 'inhome', 'friend', 'collegue'
64
- # image = raw bytes of an image to post
65
- # debug = set debug to 1 to avoid posting test data
66
- # if successful returns:
67
- # {'status' => 'OK'}
68
- # if unsuccessful returns:
69
- # {'status' => 'FAIL', 'message' => 'message what went wrong'}
70
- def post(body, title = '', group = 'inhome', image = '', debug = 0)
71
- response = get_response('user.post',
72
- 'body' => body, 'title' => title,
73
- 'group' => group, 'image' => image,
74
- 'debug' => debug)
75
- if response.elements['rsp'].attributes['status'] == 'OK'
76
- return status_ok
77
- else
78
- return status_fail(response)
79
- end
80
- end
81
-
82
- # Returns a list of 20 status update sent through HelloTxt.
83
- # if successful returns:
84
- # {'status' => 'OK', 'messages' => [{'id' => 'messageid', 'title' => 'titletext', 'body' => 'bodytext'}, ...]}
85
- # if unsuccessful returns:
86
- # {'status' => 'FAIL', 'message' => 'message what went wrong'}
87
- def latest
88
- response = get_response('user.latest')
89
- if response.elements['rsp'].attributes['status'] == 'OK'
90
- messages = status_ok()
91
- messages['messages'] = []
92
- response.elements.each('rsp/messages/message') do |message|
93
- messages['messages'].push({'id' => message.attributes['id'],
94
- 'title' => message.elements['title'].text,
95
- 'body' => message.elements['body'].text})
96
- end
97
- return messages
98
- else
99
- return status_fail(response)
100
- end
101
- end
32
+ # Returns a list of services the user has set up through HelloTxt
33
+ # Optional arguments:
34
+ # group = service group type; either 'inhome', 'friend', 'colleague', 'all'
35
+ # if successful returns:
36
+ # {'status' => 'OK', 'services' => [{'id' => 'serviceid', 'name' => 'servicename', 'code' => 'servicecode', 'inhome' => 'checked', 'friend' => 'checked', 'colleague' => 'checked'}, ...]}
37
+ # if unsuccessful returns:
38
+ # {'status' => 'FAIL', 'message' => 'message what went wrong'}
39
+ def user_services(group = 'all')
40
+ response = get_response('user.services', 'group' => group)
41
+ if response.elements['rsp'].attributes['status'] == 'OK'
42
+ services = status_ok()
43
+ services['services'] = []
44
+ response.elements.each('rsp/services/service') do |service|
45
+ services['services'].push({'id' => service.attributes['id'],
46
+ 'name' => service.attributes['name'],
47
+ 'code' => service.elements['code'].text,
48
+ 'inhome' => service.elements['inhome'].text,
49
+ 'friend' => service.elements['friend'].text,
50
+ 'colleague' => service.elements['colleague'].text})
51
+ end
52
+ return services
53
+ else
54
+ return status_fail(response)
55
+ end
56
+ end
102
57
 
103
- private
58
+ # Posts a message to the user's social services
59
+ # Arguments:
60
+ # body = message body
61
+ # Optional arguments:
62
+ # title = title of the posted message, only used if the service supports it
63
+ # group = service group type; either 'inhome', 'friend', 'colleague'
64
+ # image = raw bytes of an image to post
65
+ # debug = set debug to 1 to avoid posting test data
66
+ # if successful returns:
67
+ # {'status' => 'OK'}
68
+ # if unsuccessful returns:
69
+ # {'status' => 'FAIL', 'message' => 'message what went wrong'}
70
+ def post(body, title = '', group = 'inhome', image = '', debug = 0)
71
+ response = get_response('user.post',
72
+ 'body' => body, 'title' => title,
73
+ 'group' => group, 'image' => image,
74
+ 'debug' => debug)
75
+ if response.elements['rsp'].attributes['status'] == 'OK'
76
+ return status_ok
77
+ else
78
+ return status_fail(response)
79
+ end
80
+ end
104
81
 
105
- # Gets a particular hellotxt response.
106
- # <tt>type</tt>: The service type (ex. 'user.services'). Gets appended to <tt>API_URL</tt>.
107
- # <tt>parameters</tt>: Optional (depending on the <tt>type</tt>) parameters to be passed along
108
- # with the request. The API key and USER key are merged with this on every call.
109
- def get_response(type, parameters = {})
110
- parameters.merge!('app_key' => @api_key, 'user_key' => @user_key)
111
- REXML::Document.new(http_request("#{API_URL}/method/#{type}", parameters))
82
+ # Returns a list of 20 status update sent through HelloTxt.
83
+ # if successful returns:
84
+ # {'status' => 'OK', 'messages' => [{'id' => 'messageid', 'title' => 'titletext', 'body' => 'bodytext'}, ...]}
85
+ # if unsuccessful returns:
86
+ # {'status' => 'FAIL', 'message' => 'message what went wrong'}
87
+ def latest
88
+ response = get_response('user.latest')
89
+ if response.elements['rsp'].attributes['status'] == 'OK'
90
+ messages = status_ok()
91
+ messages['messages'] = []
92
+ response.elements.each('rsp/messages/message') do |message|
93
+ messages['messages'].push({'id' => message.attributes['id'],
94
+ 'title' => message.elements['title'].text,
95
+ 'body' => message.elements['body'].text})
96
+ end
97
+ return messages
98
+ else
99
+ return status_fail(response)
100
+ end
112
101
  end
113
102
 
114
- # This makes the actual HTTP request.
115
- def http_request(url, parameters)
116
- response = Net::HTTP.post_form(URI.parse(url), parameters)
117
- return response.body
118
- end
103
+ private
104
+
105
+ # Gets a particular hellotxt response.
106
+ # <tt>type</tt>: The service type (ex. 'user.services'). Gets appended to <tt>API_URL</tt>.
107
+ # <tt>parameters</tt>: Optional (depending on the <tt>type</tt>) parameters to be passed along
108
+ # with the request. The API key and USER key are merged with this on every call.
109
+ def get_response(type, parameters = {})
110
+ parameters.merge!('app_key' => @api_key, 'user_key' => @user_key)
111
+ REXML::Document.new(http_request("#{API_URL}/method/#{type}", parameters))
112
+ end
113
+
114
+ # This makes the actual HTTP request.
115
+ def http_request(url, parameters)
116
+ response = Net::HTTP.post_form(URI.parse(url), parameters)
117
+ return response.body
118
+ end
119
119
 
120
- # Successful response.
121
- def status_ok
122
- return {'status' => 'OK'}
123
- end
120
+ # Successful response.
121
+ def status_ok
122
+ return {'status' => 'OK'}
123
+ end
124
124
 
125
- # Failed response.
126
- def status_fail(response)
127
- return {'status' => 'FAIL', 'message' => response.elements['rsp/message'].text}
128
- end
125
+ # Failed response.
126
+ def status_fail(response)
127
+ return {'status' => 'FAIL', 'message' => response.elements['rsp/message'].text}
128
+ end
129
129
 
130
130
  end
131
131
 
@@ -1,5 +1,5 @@
1
1
 
2
- require File.join(File.dirname(__FILE__), %w[spec_helper])
2
+ require 'spec_helper'
3
3
 
4
4
  describe HelloTxt::Client, "with expected results" do
5
5
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), %w[spec_helper])
1
+ require 'spec_helper'
2
2
  require 'tempfile'
3
3
 
4
4
  describe HelloTxt::Keyloader do
@@ -1,10 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'mocha'
3
3
 
4
- require File.expand_path(
5
- File.join(File.dirname(__FILE__), %w[.. lib hellotxt]))
6
- require File.expand_path(
7
- File.join(File.dirname(__FILE__), %w[spec_responses]))
4
+ require File.expand_path(File.join(File.dirname(__FILE__),'/../lib/hellotxt'))
5
+ require 'spec_responses'
8
6
 
9
7
  Spec::Runner.configure do |config|
10
8
  # == Mock Framework
@@ -30,31 +30,31 @@ def init_service_response
30
30
  <code>Ee6n</code>
31
31
  <inhome>checked</inhome>
32
32
  <friend>unchecked</friend>
33
- <collegue>unchecked</collegue>
33
+ <colleague>unchecked</colleague>
34
34
  </service>
35
35
  <service id="fb" name="facebook">
36
36
  <code>XW7G</code>
37
37
  <inhome>checked</inhome>
38
38
  <friend>false</friend>
39
- <collegue>false</collegue>
39
+ <colleague>false</colleague>
40
40
  </service>
41
41
  <service id="jk" name="jaiku">
42
42
  <code>OK38</code>
43
43
  <inhome>checked</inhome>
44
44
  <friend>checked</friend>
45
- <collegue>unchecked</collegue>
45
+ <colleague>unchecked</colleague>
46
46
  </service>
47
47
  <service id="id" name="identica">
48
48
  <code>IOZq</code>
49
49
  <inhome>checked</inhome>
50
50
  <friend>unchecked</friend>
51
- <collegue>unchecked</collegue>
51
+ <colleague>unchecked</colleague>
52
52
  </service>
53
53
  <service id="rj" name="rejaw">
54
54
  <code>s46G</code>
55
55
  <inhome>checked</inhome>
56
56
  <friend>unchecked</friend>
57
- <collegue>unchecked</collegue>
57
+ <colleague>unchecked</colleague>
58
58
  </service>
59
59
  </services>
60
60
  </rsp>
@@ -71,7 +71,7 @@ def init_friend_service_response
71
71
  <code>OK38</code>
72
72
  <inhome>checked</inhome>
73
73
  <friend>checked</friend>
74
- <collegue>unchecked</collegue>
74
+ <colleague>unchecked</colleague>
75
75
  </service>
76
76
  </services>
77
77
  </rsp>
@@ -88,10 +88,10 @@ def init_user_latest_response
88
88
  <title></title>
89
89
  <body>this is a test message</body>
90
90
  </message>
91
- <message id="5678">
92
- <title></title>
93
- <body>Desperately trying not to be bored</body>
94
- </message>
91
+ <message id="5678">
92
+ <title></title>
93
+ <body>Desperately trying not to be bored</body>
94
+ </message>
95
95
  </messages>
96
96
  </rsp>
97
97
  EOXML
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hellotxt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 4
10
+ version: 1.0.4
5
11
  platform: ruby
6
12
  authors:
7
13
  - Kevin Williams
@@ -9,49 +15,105 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2009-11-22 00:00:00 -08:00
18
+ date: 2010-11-11 00:00:00 -07:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
- name: bones
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ name: rcov
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
23
- version: 3.1.0
24
- version:
29
+ hash: 41
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 9
34
+ version: 0.9.9
35
+ type: :development
36
+ version_requirements: *id001
25
37
  - !ruby/object:Gem::Dependency
26
38
  name: rspec
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
30
42
  requirements:
31
43
  - - ">="
32
44
  - !ruby/object:Gem::Version
33
- version: 1.2.9
34
- version:
45
+ hash: 25
46
+ segments:
47
+ - 1
48
+ - 3
49
+ - 1
50
+ version: 1.3.1
51
+ type: :development
52
+ version_requirements: *id002
35
53
  - !ruby/object:Gem::Dependency
36
54
  name: mocha
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 41
62
+ segments:
63
+ - 0
64
+ - 9
65
+ - 9
66
+ version: 0.9.9
37
67
  type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: bones-git
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
40
74
  requirements:
41
75
  - - ">="
42
76
  - !ruby/object:Gem::Version
43
- version: 0.9.8
44
- version:
77
+ hash: 31
78
+ segments:
79
+ - 1
80
+ - 2
81
+ - 0
82
+ version: 1.2.0
83
+ type: :development
84
+ version_requirements: *id004
45
85
  - !ruby/object:Gem::Dependency
46
- name: bones
86
+ name: bones-rspec
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 19
94
+ segments:
95
+ - 1
96
+ - 1
97
+ - 0
98
+ version: 1.1.0
47
99
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ name: bones
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
50
106
  requirements:
51
107
  - - ">="
52
108
  - !ruby/object:Gem::Version
53
- version: 3.1.0
54
- version:
109
+ hash: 17
110
+ segments:
111
+ - 3
112
+ - 5
113
+ - 1
114
+ version: 3.5.1
115
+ type: :development
116
+ version_requirements: *id006
55
117
  description: HelloTxt (http://hellotxt.com) is a simple service that makes updating your social networks a snap, and this is it's Ruby library.
56
118
  email:
57
119
  - kevwil@gmail.com
@@ -64,7 +126,7 @@ extra_rdoc_files:
64
126
  - Manifest.txt
65
127
  - bin/hellotxt
66
128
  files:
67
- - .gitignore
129
+ - .autotest
68
130
  - History.txt
69
131
  - Manifest.txt
70
132
  - README
@@ -88,21 +150,27 @@ rdoc_options:
88
150
  require_paths:
89
151
  - lib
90
152
  required_ruby_version: !ruby/object:Gem::Requirement
153
+ none: false
91
154
  requirements:
92
155
  - - ">="
93
156
  - !ruby/object:Gem::Version
157
+ hash: 3
158
+ segments:
159
+ - 0
94
160
  version: "0"
95
- version:
96
161
  required_rubygems_version: !ruby/object:Gem::Requirement
162
+ none: false
97
163
  requirements:
98
164
  - - ">="
99
165
  - !ruby/object:Gem::Version
166
+ hash: 3
167
+ segments:
168
+ - 0
100
169
  version: "0"
101
- version:
102
170
  requirements: []
103
171
 
104
172
  rubyforge_project: hellotxt
105
- rubygems_version: 1.3.5
173
+ rubygems_version: 1.3.7
106
174
  signing_key:
107
175
  specification_version: 3
108
176
  summary: HelloTxt (http://hellotxt
data/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- doc/
2
- pkg/
3
- coverage/