redflex-hydrogen-ruby 0.9.0 → 0.9.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.
- data/README.md +2 -5
- data/VERSION.yml +1 -1
- data/lib/hydrogen/base.rb +4 -0
- data/lib/hydrogen/request.rb +15 -7
- data/lib/hydrogen.rb +3 -1
- data/test/fixtures/comment.json +1 -0
- data/test/fixtures/comments.json +1 -0
- data/test/fixtures/create_comment.json +1 -0
- data/test/fixtures/create_topic.json +1 -0
- data/test/fixtures/delete_topic.json +1 -0
- data/test/fixtures/topic.json +1 -0
- data/test/fixtures/topics.json +1 -0
- data/test/hydrogen/base_test.rb +81 -0
- data/test/test_helper.rb +48 -0
- metadata +17 -7
- data/History.txt +0 -0
data/README.md
CHANGED
@@ -7,7 +7,7 @@ there will be a simultaneous update of this library.
|
|
7
7
|
|
8
8
|
## Requirements ##############################################################
|
9
9
|
|
10
|
-
*
|
10
|
+
* Crack
|
11
11
|
* Mash
|
12
12
|
|
13
13
|
|
@@ -49,10 +49,7 @@ The first step is to create a `Hydrogen::Base` object to represent your
|
|
49
49
|
client.
|
50
50
|
|
51
51
|
require 'hydrogen'
|
52
|
-
client = Hydrogen::Base.new('
|
53
|
-
|
54
|
-
In the above example, the Hydrogen account is `redflex` (this is the same as
|
55
|
-
*account*.hydrogenapp.com, **not** your user name).
|
52
|
+
client = Hydrogen::Base.new('account_name', 'username', 'password')
|
56
53
|
|
57
54
|
|
58
55
|
### Getting a list of topics #################################################
|
data/VERSION.yml
CHANGED
data/lib/hydrogen/base.rb
CHANGED
@@ -19,12 +19,14 @@ module Hydrogen
|
|
19
19
|
# Options:
|
20
20
|
def topic(id)
|
21
21
|
response = perform_get("/topics/#{id}.json")
|
22
|
+
response['topic']
|
22
23
|
end
|
23
24
|
|
24
25
|
|
25
26
|
# Options:
|
26
27
|
def create_topic(query={})
|
27
28
|
response = perform_post("/topics/create.json", query)
|
29
|
+
response['topic']
|
28
30
|
end
|
29
31
|
|
30
32
|
|
@@ -44,12 +46,14 @@ module Hydrogen
|
|
44
46
|
# Options:
|
45
47
|
def comment(topic_id, comment_id)
|
46
48
|
response = perform_get("/topics/#{topic_id}/comments/#{comment_id}.json")
|
49
|
+
response['comment']
|
47
50
|
end
|
48
51
|
|
49
52
|
|
50
53
|
# Options: comment*, reply_to
|
51
54
|
def create_comment(topic_id, query={})
|
52
55
|
response = perform_post("/topics/#{topic_id}/comments/create.json", query)
|
56
|
+
response['comment']
|
53
57
|
end
|
54
58
|
|
55
59
|
|
data/lib/hydrogen/request.rb
CHANGED
@@ -2,9 +2,6 @@ module Hydrogen
|
|
2
2
|
class Request
|
3
3
|
|
4
4
|
|
5
|
-
include HTTParty
|
6
|
-
|
7
|
-
|
8
5
|
def initialize(options={})
|
9
6
|
@options = {:mash => true}.merge(options)
|
10
7
|
@auth = {:username => @options[:username], :password => @options[:password]} if @options[:username]
|
@@ -12,14 +9,25 @@ module Hydrogen
|
|
12
9
|
|
13
10
|
|
14
11
|
def perform_get(path, query={})
|
15
|
-
|
16
|
-
|
12
|
+
url = URI.parse("#{@options[:base_uri]}#{path}")
|
13
|
+
req = Net::HTTP::Get.new(url.path)
|
14
|
+
req.basic_auth @auth[:username], @auth[:password]
|
15
|
+
res = Net::HTTP.start(url.host, url.port) do |http|
|
16
|
+
response = http.request(req)
|
17
|
+
perform(response)
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
19
21
|
|
20
22
|
def perform_post(path, query={})
|
21
|
-
|
22
|
-
|
23
|
+
url = URI.parse("#{@options[:base_uri]}#{path}")
|
24
|
+
req = Net::HTTP::Post.new(url.path)
|
25
|
+
req.basic_auth @auth[:username], @auth[:password]
|
26
|
+
req.set_form_data(query)
|
27
|
+
res = Net::HTTP.start(url.host, url.port) do |http|
|
28
|
+
response = http.request(req)
|
29
|
+
perform(response)
|
30
|
+
end
|
23
31
|
end
|
24
32
|
|
25
33
|
|
data/lib/hydrogen.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"comment":{"comment_id":1,"parent":0,"text":"first comment","created":"Thu, 27 Aug 2009 21:28:55 +0000","creator":"Matt Kirman"}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"comments":[{"comment_id":1,"parent":0,"text":"first comment","created":"Thu, 27 Aug 2009 21:28:55 +0000","creator":"Matt Kirman"}, {"comment_id":2,"parent":1,"text":"reply to first comment","created":"Thu, 27 Aug 2009 23:28:55 +0000","creator":"Matt Kirman"}]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"comment":{"comment_id":3,"parent":0,"text":"This is a test comment","created":"Sun, 27 Sep 2009 15:09:55 +0000","creator":"Matt Kirman"}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"topic":{"topic_id":1,"title":"This is a test question","text":"","type":"question","product":"Hydrogen","tags":["test","question"],"status":4,"private":false,"created":"Tue, 25 Aug 2009 15:07:43 +0000","creator":"Matt Kirman","comments":1,"updated":"Thu, 27 Aug 2009 21:28:55 +0000"}}
|
@@ -0,0 +1 @@
|
|
1
|
+
true
|
@@ -0,0 +1 @@
|
|
1
|
+
{"topic":{"topic_id":1,"title":"This is a test question","text":"","type":"question","product":"Hydrogen","tags":["test","question"],"status":4,"private":false,"created":"Tue, 25 Aug 2009 15:07:43 +0000","creator":"Matt Kirman","comments":1,"updated":"Thu, 27 Aug 2009 21:28:55 +0000"}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"topics":[{"topic_id":1,"title":"This is a test question","text":"","type":"question","product":"Hydrogen","tags":["test","question"],"status":4,"private":false,"created":"Tue, 25 Aug 2009 15:07:43 +0000","creator":"Matt Kirman","comments":1,"updated":"Thu, 27 Aug 2009 21:28:55 +0000"},{"topic_id":2,"title":"And another test topic","text":"","type":"praise","product":null,"tags":[""],"status":4,"private":false,"created":"Tue, 25 Aug 2009 15:03:50 +0000","creator":"Matt Kirman","comments":0}]}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class BaseTest < Test::Unit::TestCase
|
4
|
+
context "#base" do
|
5
|
+
setup do
|
6
|
+
@hydrogen = Hydrogen::Base.new('redflex', 'username', 'password')
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
context "initialize" do
|
11
|
+
should "require a client" do
|
12
|
+
@hydrogen.should respond_to('topics')
|
13
|
+
@hydrogen.should respond_to('comments')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
context "hitting the api" do
|
19
|
+
should "be able to get topics" do
|
20
|
+
stub_get('/topics.json', 'topics.json')
|
21
|
+
topics = @hydrogen.topics
|
22
|
+
topics.size.should == 2
|
23
|
+
first = topics.first
|
24
|
+
first.topic_id.should == 1
|
25
|
+
first.creator.should == 'Matt Kirman'
|
26
|
+
first.tags.is_a?(Array).should == true
|
27
|
+
first.tags[0].should == 'test'
|
28
|
+
first.private.should be(false)
|
29
|
+
end
|
30
|
+
|
31
|
+
should "be able to get a single topic" do
|
32
|
+
stub_get('/topics/1.json', 'topic.json')
|
33
|
+
topic = @hydrogen.topic(1)
|
34
|
+
topic.creator.should == 'Matt Kirman'
|
35
|
+
topic.tags.is_a?(Array).should be(true)
|
36
|
+
topic.tags[0].should == 'test'
|
37
|
+
topic.private.should be(false)
|
38
|
+
end
|
39
|
+
|
40
|
+
should "be able to create a topic" do
|
41
|
+
stub_post('/topics/create.json', 'create_topic.json')
|
42
|
+
topic = @hydrogen.create_topic({ :title => 'Test topic', :type => 'question' })
|
43
|
+
topic.creator.should == 'Matt Kirman'
|
44
|
+
topic.tags.is_a?(Array).should be(true)
|
45
|
+
topic.tags[0].should == 'test'
|
46
|
+
topic.private.should be(false)
|
47
|
+
end
|
48
|
+
|
49
|
+
should "be able to delete a topic" do
|
50
|
+
stub_get('/topics/1/delete.json', 'delete_topic.json')
|
51
|
+
response = @hydrogen.delete_topic(1)
|
52
|
+
response.should be(true)
|
53
|
+
end
|
54
|
+
|
55
|
+
should "be able to get topic comments" do
|
56
|
+
stub_get('/topics/1/comments.json', 'comments.json')
|
57
|
+
comments = @hydrogen.comments(1)
|
58
|
+
comments.size.should == 2
|
59
|
+
first = comments.first
|
60
|
+
first.comment_id.should == 1
|
61
|
+
first.creator.should == 'Matt Kirman'
|
62
|
+
end
|
63
|
+
|
64
|
+
should "be able to get a single topic comment" do
|
65
|
+
stub_get('/topics/1/comments/1.json', 'comment.json')
|
66
|
+
comment = @hydrogen.comment(1,1)
|
67
|
+
comment.comment_id.should == 1
|
68
|
+
comment.creator.should == 'Matt Kirman'
|
69
|
+
end
|
70
|
+
|
71
|
+
should "be able to create a new topic comment" do
|
72
|
+
stub_post('/topics/1/comments/create.json', 'create_comment.json')
|
73
|
+
comment = @hydrogen.create_comment(1, { :comment => 'This is a test comment' })
|
74
|
+
comment.comment_id.should == 3
|
75
|
+
comment.creator.should == 'Matt Kirman'
|
76
|
+
comment.text.should == 'This is a test comment'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'pathname'
|
3
|
+
require 'rubygems'
|
4
|
+
|
5
|
+
gem 'thoughtbot-shoulda', '>= 2.10.1'
|
6
|
+
gem 'jnunemaker-matchy', '>= 0.4.0'
|
7
|
+
gem 'mocha', '>= 0.9.4'
|
8
|
+
gem 'fakeweb', '>= 1.2.5'
|
9
|
+
|
10
|
+
require 'shoulda'
|
11
|
+
require 'matchy'
|
12
|
+
require 'mocha'
|
13
|
+
require 'fakeweb'
|
14
|
+
|
15
|
+
FakeWeb.allow_net_connect = false
|
16
|
+
|
17
|
+
dir = (Pathname(__FILE__).dirname + '../lib').expand_path
|
18
|
+
require dir + 'hydrogen'
|
19
|
+
|
20
|
+
|
21
|
+
class Test::Unit::TestCase
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
def fixture_file(filename)
|
26
|
+
return '' if filename == ''
|
27
|
+
|
28
|
+
file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
|
29
|
+
File.read(file_path)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def hydrogen_url(url)
|
34
|
+
url =~ /^http/ ? url : "http://username:password@redflex.hydrogenapp.com:80#{url}"
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def stub_get(url, filename, status=nil)
|
39
|
+
options = {:body => fixture_file(filename)}
|
40
|
+
options.merge!({:status => status}) unless status.nil?
|
41
|
+
|
42
|
+
FakeWeb.register_uri(:get, hydrogen_url(url), options)
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def stub_post(url, filename)
|
47
|
+
FakeWeb.register_uri(:post, hydrogen_url(url), :body => fixture_file(filename))
|
48
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redflex-hydrogen-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Kirman
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-27 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,14 +22,23 @@ extensions: []
|
|
22
22
|
extra_rdoc_files:
|
23
23
|
- README.md
|
24
24
|
files:
|
25
|
-
- History.txt
|
26
25
|
- README.md
|
27
26
|
- VERSION.yml
|
28
27
|
- lib/hydrogen.rb
|
29
28
|
- lib/hydrogen/base.rb
|
30
29
|
- lib/hydrogen/request.rb
|
30
|
+
- test/fixtures/comment.json
|
31
|
+
- test/fixtures/comments.json
|
32
|
+
- test/fixtures/create_comment.json
|
33
|
+
- test/fixtures/create_topic.json
|
34
|
+
- test/fixtures/delete_topic.json
|
35
|
+
- test/fixtures/topic.json
|
36
|
+
- test/fixtures/topics.json
|
37
|
+
- test/hydrogen/base_test.rb
|
38
|
+
- test/test_helper.rb
|
31
39
|
has_rdoc: false
|
32
|
-
homepage: http://
|
40
|
+
homepage: http://github.com/redflex/hydrogen-ruby
|
41
|
+
licenses:
|
33
42
|
post_install_message:
|
34
43
|
rdoc_options:
|
35
44
|
- --charset=UTF-8
|
@@ -50,9 +59,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
59
|
requirements: []
|
51
60
|
|
52
61
|
rubyforge_project: hydrogen
|
53
|
-
rubygems_version: 1.
|
62
|
+
rubygems_version: 1.3.5
|
54
63
|
signing_key:
|
55
64
|
specification_version: 3
|
56
65
|
summary: A Ruby implementation of the Hydrogen API.
|
57
|
-
test_files:
|
58
|
-
|
66
|
+
test_files:
|
67
|
+
- test/hydrogen/base_test.rb
|
68
|
+
- test/test_helper.rb
|
data/History.txt
DELETED
File without changes
|