smokey_bear 0.0.1 → 1.0.0
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/lib/smokey_bear/helpers.rb +65 -0
- data/lib/smokey_bear/version.rb +1 -1
- data/lib/smokey_bear.rb +24 -2
- data/smokey_bear.gemspec +4 -1
- metadata +50 -2
data/lib/smokey_bear/helpers.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'multi_json'
|
2
|
+
require 'timeout'
|
3
|
+
require 'rest_client'
|
4
|
+
require 'delegate'
|
5
|
+
|
6
|
+
module SmokeyBear
|
7
|
+
module Helpers
|
8
|
+
|
9
|
+
class ResponseDelegate < DelegateClass(RestClient::Response)
|
10
|
+
|
11
|
+
def has_status?(expected_code)
|
12
|
+
code == expected_code
|
13
|
+
end
|
14
|
+
|
15
|
+
def json?
|
16
|
+
headers[:content_type] =~ /\bjson\b/
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def get(*args); perform_request(:get, *args); end
|
22
|
+
def post(*args); perform_request(:post, *args); end
|
23
|
+
def delete(*args); perform_request(:delete, *args); end
|
24
|
+
def put(*args); perform_request(:put, *args); end
|
25
|
+
def head(*args); perform_request(:head, *args); end
|
26
|
+
|
27
|
+
def response
|
28
|
+
@response ||= (raise "Please make sure you perform a request first")
|
29
|
+
end
|
30
|
+
|
31
|
+
def decoded_response
|
32
|
+
@decoded_response ||= MultiJson.load(response.to_str)
|
33
|
+
end
|
34
|
+
|
35
|
+
def headers
|
36
|
+
response.headers
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def perform_request(*args)
|
42
|
+
Timeout.timeout SmokeyBear.timeout do
|
43
|
+
perform_raw_request(*args)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def perform_raw_request(method, path, options = {})
|
48
|
+
url = File.join(SmokeyBear.base_url)
|
49
|
+
endpoint = options.delete(:endpoint)
|
50
|
+
endpoint ||= SmokeyBear.endpoint unless endpoint == false
|
51
|
+
url = File.join(url, endpoint) unless endpoint == false
|
52
|
+
url = File.join(url, path)
|
53
|
+
if [:post, :put, :delete].include?(method)
|
54
|
+
response = RestClient.send method, url, MultiJson.dump(options), :content_type => :json, :accept => :json
|
55
|
+
else
|
56
|
+
url << "?#{options.to_param}" unless options.empty?
|
57
|
+
response = RestClient.send method, url, :accept => :json
|
58
|
+
end
|
59
|
+
@response = ResponseDelegate.new response
|
60
|
+
rescue RestClient::Exception => e
|
61
|
+
@response = e.response
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
data/lib/smokey_bear/version.rb
CHANGED
data/lib/smokey_bear.rb
CHANGED
@@ -1,9 +1,31 @@
|
|
1
1
|
require "smokey_bear/version"
|
2
|
+
require "active_support"
|
3
|
+
require "active_support/core_ext"
|
2
4
|
|
3
5
|
module SmokeyBear
|
4
6
|
|
5
|
-
class
|
6
|
-
|
7
|
+
class << self
|
8
|
+
|
9
|
+
require 'smokey_bear/helpers'
|
10
|
+
|
11
|
+
attr_accessor :domain, :endpoint, :https, :timeout
|
12
|
+
|
13
|
+
def configure
|
14
|
+
yield self if block_given?
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_base_url
|
18
|
+
"#{https ? "https" : "http"}://#{domain}/"
|
19
|
+
end
|
20
|
+
|
21
|
+
def base_url
|
22
|
+
@base_url ||= build_base_url
|
23
|
+
end
|
24
|
+
|
7
25
|
end
|
8
26
|
|
27
|
+
self.endpoint = nil
|
28
|
+
self.https = false
|
29
|
+
self.timeout = 15
|
30
|
+
|
9
31
|
end
|
data/smokey_bear.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |gem|
|
|
5
5
|
gem.authors = ["Darcy Laycock"]
|
6
6
|
gem.email = ["sutto@sutto.net"]
|
7
7
|
gem.description = %q{Tools for testing JSON-based APIs}
|
8
|
-
gem.summary = %q{Smokey Bear provides a set of tools
|
8
|
+
gem.summary = %q{Smokey Bear provides a set of tools oriented towards making it easy to test HTTP and JSON based APIS.}
|
9
9
|
gem.homepage = ""
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
@@ -17,4 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.add_dependency 'rest-client'
|
19
19
|
gem.add_dependency 'multi_json'
|
20
|
+
gem.add_dependency 'active_support', '~> 3.0'
|
21
|
+
gem.add_dependency 'i18n'
|
22
|
+
gem.add_dependency 'rest-client'
|
20
23
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smokey_bear
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -43,6 +43,54 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: active_support
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: i18n
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rest-client
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
46
94
|
description: Tools for testing JSON-based APIs
|
47
95
|
email:
|
48
96
|
- sutto@sutto.net
|
@@ -82,6 +130,6 @@ rubyforge_project:
|
|
82
130
|
rubygems_version: 1.8.24
|
83
131
|
signing_key:
|
84
132
|
specification_version: 3
|
85
|
-
summary: Smokey Bear provides a set of tools
|
133
|
+
summary: Smokey Bear provides a set of tools oriented towards making it easy to test
|
86
134
|
HTTP and JSON based APIS.
|
87
135
|
test_files: []
|