headsail 0.1.15 → 0.1.16
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/.gitignore +1 -0
- data/README.md +2 -8
- data/Rakefile +1 -0
- data/examples/apis.yml +23 -0
- data/headsail.gemspec +6 -2
- data/lib/headsail.rb +1 -1
- data/lib/headsail/api.rb +1 -2
- data/lib/headsail/cli.rb +2 -3
- data/lib/headsail/configure.rb +4 -2
- data/lib/headsail/{logs.rb → log.rb} +4 -1
- data/lib/headsail/redis.rb +5 -26
- data/lib/headsail/task.rb +5 -1
- data/lib/headsail/version.rb +1 -1
- metadata +33 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d05989713cd84dd29b624623e2d7451ad3f79339
|
|
4
|
+
data.tar.gz: a5a110f049d8c1fa0f6d5b2097e14bc06620edc3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7c56d0dda0ebed50cd7a47008f5e8d1eb7d4db9537cd723cbdff1f23faaaaf9e5dc1d27a7960d03230c22957b993ebe11b2b098c074b565e7b2e027831486801
|
|
7
|
+
data.tar.gz: 8bc826cb18b1f5cf7dff5cb6ef5884fd7e7c33238eb429fc49aa8abb898980438d3e7be73224dd2b3017340ffe5a0599c7114c05cb116450abe7c98ff36b1c1c
|
data/.gitignore
CHANGED
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Headsail
|
|
2
2
|
|
|
3
|
-
Headsail
|
|
3
|
+
Headsail is a lightweight client framework for automating the task of API data retrieval and storage. Utilizing simple YAML files, we can create recurring API retrieval jobs, with the response being stored in a Redis DB.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -20,13 +20,7 @@ Or install it yourself as:
|
|
|
20
20
|
|
|
21
21
|
## Usage
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
## Development
|
|
26
|
-
|
|
27
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
28
|
-
|
|
29
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
23
|
+
To come.
|
|
30
24
|
|
|
31
25
|
## Contributing
|
|
32
26
|
|
data/Rakefile
CHANGED
data/examples/apis.yml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-
|
|
2
|
+
name: Weather
|
|
3
|
+
timer: 20
|
|
4
|
+
request:
|
|
5
|
+
method: GET
|
|
6
|
+
uri: http://api.openweathermap.org/data/2.5/weather
|
|
7
|
+
params:
|
|
8
|
+
lat: '35'
|
|
9
|
+
lon: '139'
|
|
10
|
+
appid: <%= ENV['WEATHER_KEY'] %>
|
|
11
|
+
-
|
|
12
|
+
name: Twitter
|
|
13
|
+
timer: 120
|
|
14
|
+
oauth:
|
|
15
|
+
consumer_key: <%= ENV['TWITTER_CONSUMER_KEY'] %>
|
|
16
|
+
consumer_secret: <%= ENV['TWITTER_CONSUMER_SECRET'] %>
|
|
17
|
+
access_token: <%= ENV['TWITTER_ACCESS_TOKEN'] %>
|
|
18
|
+
access_token_secret: <%= ENV['TWITTER_ACCESS_TOKEN_SECRET'] %>
|
|
19
|
+
request:
|
|
20
|
+
method: GET
|
|
21
|
+
uri: https://api.twitter.com/1.1/trends/place.json
|
|
22
|
+
params:
|
|
23
|
+
id: '1'
|
data/headsail.gemspec
CHANGED
|
@@ -10,15 +10,19 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
spec.email = ["nsweeting@gmail.com"]
|
|
11
11
|
spec.summary = "Automated API data retrieval and storage."
|
|
12
12
|
spec.description = "Automated API data retrieval and storage."
|
|
13
|
+
spec.homepage = "https://github.com/nsweeting/headsail"
|
|
13
14
|
spec.license = "MIT"
|
|
14
15
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
15
|
-
spec.executables =
|
|
16
|
-
spec.require_paths =
|
|
16
|
+
spec.executables = %w( headsail )
|
|
17
|
+
spec.require_paths = %w( lib )
|
|
18
|
+
|
|
17
19
|
spec.add_runtime_dependency "redis", "~> 3.3"
|
|
18
20
|
spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
|
|
19
21
|
spec.add_runtime_dependency "oauth", "~> 0.5"
|
|
20
22
|
spec.add_development_dependency "bundler", "~> 1.11"
|
|
21
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
22
24
|
spec.add_development_dependency "minitest", "~> 5.0"
|
|
25
|
+
spec.add_development_dependency "sinatra", "~> 1.4"
|
|
26
|
+
spec.add_development_dependency "webmock", "~> 2.1"
|
|
23
27
|
spec.add_development_dependency "byebug", "~> 5.0"
|
|
24
28
|
end
|
data/lib/headsail.rb
CHANGED
data/lib/headsail/api.rb
CHANGED
data/lib/headsail/cli.rb
CHANGED
|
@@ -6,7 +6,7 @@ module Headsail
|
|
|
6
6
|
# Handles the start of Headsail via command line
|
|
7
7
|
#
|
|
8
8
|
class CLI
|
|
9
|
-
attr_reader :launcher
|
|
9
|
+
attr_reader :launcher, :configure
|
|
10
10
|
|
|
11
11
|
# Creates a new CLI object, parsing the arguments that are passed to it,
|
|
12
12
|
# and readying a Launcher to be run
|
|
@@ -56,8 +56,7 @@ module Headsail
|
|
|
56
56
|
def parse_options
|
|
57
57
|
@parser.parse!(@argv)
|
|
58
58
|
rescue
|
|
59
|
-
Headsail.err('Unsupported options entered in CLI.')
|
|
60
|
-
exit 1
|
|
59
|
+
Headsail.err('Unsupported options entered in CLI.', :exit)
|
|
61
60
|
end
|
|
62
61
|
end
|
|
63
62
|
end
|
data/lib/headsail/configure.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'yaml'
|
|
2
|
+
require 'erb'
|
|
2
3
|
|
|
3
4
|
module Headsail
|
|
4
5
|
class Configure
|
|
@@ -6,10 +7,11 @@ module Headsail
|
|
|
6
7
|
attr_reader :apis
|
|
7
8
|
|
|
8
9
|
def load_apis(path)
|
|
9
|
-
@apis = YAML.
|
|
10
|
+
@apis = YAML.load(ERB.new(File.read(path)).result)
|
|
11
|
+
fail if @apis == false
|
|
10
12
|
Headsail.info('Loaded API YAML file.')
|
|
11
13
|
rescue
|
|
12
|
-
Headsail.
|
|
14
|
+
Headsail.err('Loading API YAML file.', :exit)
|
|
13
15
|
end
|
|
14
16
|
end
|
|
15
17
|
end
|
|
@@ -9,10 +9,13 @@ module Headsail
|
|
|
9
9
|
log.info("[ \e[32m#{'INFO'}\e[0m ] #{msg}")
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
def self.err(msg)
|
|
12
|
+
def self.err(msg, action)
|
|
13
13
|
log.info("[ \e[31m#{'ERROR'}\e[0m ] #{msg}")
|
|
14
|
+
exit 1 if action == :exit
|
|
14
15
|
end
|
|
15
16
|
|
|
17
|
+
private
|
|
18
|
+
|
|
16
19
|
def self.build_logger
|
|
17
20
|
logger = Logger.new(STDOUT)
|
|
18
21
|
logger.formatter = proc do |severity, datetime, progname, msg|
|
data/lib/headsail/redis.rb
CHANGED
|
@@ -7,47 +7,26 @@ module Headsail
|
|
|
7
7
|
def initialize(key_name)
|
|
8
8
|
@key_name = key_name
|
|
9
9
|
setup_connection
|
|
10
|
-
|
|
11
|
-
setup_next_id
|
|
10
|
+
setup_task
|
|
12
11
|
end
|
|
13
12
|
|
|
14
13
|
def add(data)
|
|
15
|
-
@connection.
|
|
16
|
-
@connection.set(new_key, data)
|
|
14
|
+
@connection.lpush(@key_name, data)
|
|
17
15
|
rescue
|
|
18
16
|
setup_connection
|
|
19
17
|
end
|
|
20
18
|
|
|
21
19
|
private
|
|
22
20
|
|
|
23
|
-
def new_key
|
|
24
|
-
"#{@key_name}:#{next_id}"
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def next_id
|
|
28
|
-
@connection.get(next_id_key)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def next_id_key
|
|
32
|
-
@next_id_key ||= "#{@key_name}:next_id"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
21
|
def setup_connection
|
|
36
22
|
@connection = ::Redis.new(url: ENV['REDIS_URL'])
|
|
37
23
|
@connection.ping
|
|
38
24
|
rescue
|
|
39
|
-
Headsail.err("Failed to connect to Redis server at ENV 'REDIS_URL'.")
|
|
40
|
-
exit 1
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def setup_service
|
|
44
|
-
return if @connection.exists(@key_name)
|
|
45
|
-
@connection.set(@key_name, true)
|
|
46
|
-
@connection.lpush('apis', @key_name)
|
|
25
|
+
Headsail.err("Failed to connect to Redis server at ENV 'REDIS_URL'.", :exit)
|
|
47
26
|
end
|
|
48
27
|
|
|
49
|
-
def
|
|
50
|
-
@connection.
|
|
28
|
+
def setup_task
|
|
29
|
+
@connection.sadd('apis', @key_name)
|
|
51
30
|
end
|
|
52
31
|
end
|
|
53
32
|
end
|
data/lib/headsail/task.rb
CHANGED
|
@@ -22,7 +22,11 @@ module Headsail
|
|
|
22
22
|
private
|
|
23
23
|
|
|
24
24
|
def request_message
|
|
25
|
-
@http.code_status == :SUCCESS
|
|
25
|
+
if @http.code_status == :SUCCESS
|
|
26
|
+
Headsail.info(msg)
|
|
27
|
+
else
|
|
28
|
+
Headsail.err(msg, :no_exit)
|
|
29
|
+
end
|
|
26
30
|
end
|
|
27
31
|
|
|
28
32
|
def msg
|
data/lib/headsail/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: headsail
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nicholas Sweeting
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-06-
|
|
11
|
+
date: 2016-06-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: redis
|
|
@@ -94,6 +94,34 @@ dependencies:
|
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '5.0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: sinatra
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '1.4'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '1.4'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: webmock
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '2.1'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '2.1'
|
|
97
125
|
- !ruby/object:Gem::Dependency
|
|
98
126
|
name: byebug
|
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -123,9 +151,8 @@ files:
|
|
|
123
151
|
- LICENSE.txt
|
|
124
152
|
- README.md
|
|
125
153
|
- Rakefile
|
|
126
|
-
- bin/console
|
|
127
154
|
- bin/headsail
|
|
128
|
-
-
|
|
155
|
+
- examples/apis.yml
|
|
129
156
|
- headsail.gemspec
|
|
130
157
|
- lib/headsail.rb
|
|
131
158
|
- lib/headsail/api.rb
|
|
@@ -134,12 +161,12 @@ files:
|
|
|
134
161
|
- lib/headsail/configure.rb
|
|
135
162
|
- lib/headsail/http.rb
|
|
136
163
|
- lib/headsail/launcher.rb
|
|
137
|
-
- lib/headsail/
|
|
164
|
+
- lib/headsail/log.rb
|
|
138
165
|
- lib/headsail/oauth.rb
|
|
139
166
|
- lib/headsail/redis.rb
|
|
140
167
|
- lib/headsail/task.rb
|
|
141
168
|
- lib/headsail/version.rb
|
|
142
|
-
homepage:
|
|
169
|
+
homepage: https://github.com/nsweeting/headsail
|
|
143
170
|
licenses:
|
|
144
171
|
- MIT
|
|
145
172
|
metadata: {}
|