headsail 0.1.15 → 0.1.16
Sign up to get free protection for your applications and to get access to all the features.
- 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: {}
|