grifter 0.1.2 → 0.2.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.
- checksums.yaml +4 -4
- data/Readme.md +3 -2
- data/bin/grift +16 -0
- data/grifter.gemspec +2 -2
- data/lib/grifter/configuration.rb +36 -22
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 272206b2927fd805a4d0eebfaeb12aa9bb5544b8
|
4
|
+
data.tar.gz: 811ddf5f1872f2c8a82a0ccf7fb5082d7d5537ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e687565405a56497e50a449267895dc594006df2ae3679034003fc24132937fab025a76f3204e1707af89a8456c661b50a9766bec55d50b02343221262874759
|
7
|
+
data.tar.gz: 4aaf0eda705b509714ffbcb3b02d2d06df44dbf3645ebb412ccc6bb20dcef047bfac5693815bedfa4b26421689480cc432080e150931896031bf9a146418914f
|
data/Readme.md
CHANGED
@@ -57,7 +57,7 @@ which is accessible without needing any authentication key:
|
|
57
57
|
mkdir owm_grifts
|
58
58
|
touch owm_grifts/weather_grifts.rb
|
59
59
|
|
60
|
-
### add method for checking weather to
|
60
|
+
### add method for checking weather to owm_grifts/weather.rb
|
61
61
|
def weather_for city
|
62
62
|
owm.get "/data/2.5/weather?q=#{URI.encode(city)}"
|
63
63
|
end
|
@@ -118,7 +118,8 @@ Setup spec/weather_spec.rb with contents like:
|
|
118
118
|
describe "getting weather reports" do
|
119
119
|
it "should know the weather for New York City" do
|
120
120
|
response = weather_for 'New York, NY'
|
121
|
-
|
121
|
+
expected_items = ['temp', 'temp_min', 'temp_max', 'humidity', 'pressure']
|
122
|
+
response['main'].keys.should include(*expected_items)
|
122
123
|
end
|
123
124
|
end
|
124
125
|
|
data/bin/grift
CHANGED
@@ -46,6 +46,11 @@ def parse_cmd_line
|
|
46
46
|
opts.on("-n", "--no-authenticate",
|
47
47
|
"Do not authenticate") { options[:authenticate] = false }
|
48
48
|
|
49
|
+
opts.on('-l', "--list", "Print each available grift method") do
|
50
|
+
options[:list_grift_methods] = true
|
51
|
+
options[:authenticate] = false #no point in authenticating for --list
|
52
|
+
end
|
53
|
+
|
49
54
|
end
|
50
55
|
optparse.parse!
|
51
56
|
options
|
@@ -66,6 +71,17 @@ rescue GrifterConfigFileMissing => e
|
|
66
71
|
Kernel.abort
|
67
72
|
end
|
68
73
|
|
74
|
+
if options[:list_grift_methods]
|
75
|
+
puts "Grift method listing"
|
76
|
+
|
77
|
+
grifter.singleton_methods.sort.each do |meth|
|
78
|
+
puts " - #{meth}(#{grifter.method(meth).parameters.join(', ')})"
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
exit
|
83
|
+
end
|
84
|
+
|
69
85
|
if not(ARGV.empty?)
|
70
86
|
#a grift method has been specified on the command line
|
71
87
|
method = ARGV.shift
|
data/grifter.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "grifter"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Robert Schultheis"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-11-05"
|
13
13
|
s.description = "convention based approach to interfacing with an HTTP JSON API."
|
14
14
|
s.email = "rob@knewton.com"
|
15
15
|
s.executables = ["grift"]
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'uri'
|
2
3
|
|
3
4
|
require_relative 'log'
|
4
5
|
|
@@ -16,6 +17,20 @@ class Grifter
|
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
20
|
+
def get_service_config_from_url url
|
21
|
+
return {} if url.nil?
|
22
|
+
unless url =~ URI::ABS_URI
|
23
|
+
raise GrifterConfigurationError.new "url is not a proper aboslute URL: #{url}"
|
24
|
+
end
|
25
|
+
parsed = URI.parse url
|
26
|
+
{
|
27
|
+
:hostname => parsed.host,
|
28
|
+
:port => parsed.port,
|
29
|
+
:base_uri => parsed.path,
|
30
|
+
:ssl => (parsed.scheme == 'https'),
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
19
34
|
def load_config_file options={}
|
20
35
|
options = {
|
21
36
|
config_file: ENV['GRIFTER_CONFIG_FILE'] ? ENV['GRIFTER_CONFIG_FILE'] : 'grifter.yml',
|
@@ -42,28 +57,17 @@ class Grifter
|
|
42
57
|
#fill out services block entirely for each service
|
43
58
|
config[:services].each_pair do |service_name, service_config|
|
44
59
|
service_config[:name] = service_name.to_s
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
service_config[:ssl] = false
|
57
|
-
end
|
58
|
-
|
59
|
-
#ignore_ssl_certificate
|
60
|
-
unless service_config[:ignore_ssl_cert]
|
61
|
-
service_config[:ignore_ssl_cert] = false
|
62
|
-
end
|
63
|
-
|
64
|
-
unless service_config[:base_uri]
|
65
|
-
service_config[:base_uri] = ''
|
66
|
-
end
|
60
|
+
|
61
|
+
#check for a url configuration option. This option will trump any others that may be set
|
62
|
+
service_config.merge!(get_service_config_from_url(service_config.delete(:url)))
|
63
|
+
|
64
|
+
#default everything that is not defined
|
65
|
+
service_config.merge!({
|
66
|
+
ssl: false,
|
67
|
+
ignore_ssl_cert: false,
|
68
|
+
base_uri: '',
|
69
|
+
port: (service_config[:ssl] == true ? 443 : 80),
|
70
|
+
}.merge(service_config))
|
67
71
|
|
68
72
|
end
|
69
73
|
|
@@ -75,12 +79,22 @@ class Grifter
|
|
75
79
|
end
|
76
80
|
|
77
81
|
config[:environments][config[:environment]].each_pair do |service_name, service_overrides|
|
82
|
+
service_overrides.merge!(get_service_config_from_url(service_overrides.delete(:url)))
|
78
83
|
config[:services][service_name].merge! service_overrides
|
79
84
|
end
|
80
85
|
else
|
81
86
|
config[:environment] = :undefined
|
82
87
|
end
|
83
88
|
|
89
|
+
#merge any overrides provided via a GRIFTER_<svc name>_URL environment variable
|
90
|
+
config[:services].each_pair do |service_name, service_config|
|
91
|
+
env_var_name = "GRIFTER_#{service_config[:name].upcase}_URL"
|
92
|
+
if ENV[env_var_name]
|
93
|
+
Log.warn "Environment variable #{env_var_name} is defined, using it to override configuration"
|
94
|
+
service_config.merge!(get_service_config_from_url(ENV[env_var_name]))
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
84
98
|
#join the grift globs with the relative path to config file
|
85
99
|
if config[:grift_globs] && options[:config_file]
|
86
100
|
config_file_dir = File.dirname options[:config_file]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grifter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Schultheis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|