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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ace0f3b54772bdd03760cd0474f75ba198a6114
4
- data.tar.gz: 33b1a7bdb77a95c0db3488dc1c400de5d6cb61ef
3
+ metadata.gz: d05989713cd84dd29b624623e2d7451ad3f79339
4
+ data.tar.gz: a5a110f049d8c1fa0f6d5b2097e14bc06620edc3
5
5
  SHA512:
6
- metadata.gz: c70e330418ec1a6887ad6d3174007e237c8248fdbddcb1189023f336a1341d937f3931b99fc703a17f101e578cfb02240c191bb0f482052435e476869da313c3
7
- data.tar.gz: aa9633fa61a0e43a8a2690c0173cbb2bda3063604b7b7c769ad303c26f445be0847d939211f156e34d65a74b3878f173976d10dceb2fe6115bd1a56ca2fb2e06
6
+ metadata.gz: 7c56d0dda0ebed50cd7a47008f5e8d1eb7d4db9537cd723cbdff1f23faaaaf9e5dc1d27a7960d03230c22957b993ebe11b2b098c074b565e7b2e027831486801
7
+ data.tar.gz: 8bc826cb18b1f5cf7dff5cb6ef5884fd7e7c33238eb429fc49aa8abb898980438d3e7be73224dd2b3017340ffe5a0599c7114c05cb116450abe7c98ff36b1c1c
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
+ /.byebug_history
3
4
  /Gemfile.lock
4
5
  /bin/console
5
6
  /bin/setup
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Headsail
2
2
 
3
- Headsail automates 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.
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
@@ -4,6 +4,7 @@ require "rake/testtask"
4
4
  Rake::TestTask.new(:test) do |t|
5
5
  t.libs << "test"
6
6
  t.libs << "lib"
7
+ t.warning = false
7
8
  t.test_files = FileList['test/**/*_test.rb']
8
9
  end
9
10
 
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 = ['headsail']
16
- spec.require_paths = ["lib"]
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
@@ -1,3 +1,3 @@
1
1
  require 'headsail/cli'
2
- require 'headsail/logs'
2
+ require 'headsail/log'
3
3
  require 'headsail/version'
data/lib/headsail/api.rb CHANGED
@@ -9,8 +9,7 @@ module Headsail
9
9
  @method = config['request']['method']
10
10
  @uri = build_uri(config['request'])
11
11
  rescue
12
- Headsail.err('Improper API YAML format.')
13
- exit 1
12
+ Headsail.err('Improper API YAML format.', :exit)
14
13
  end
15
14
 
16
15
  private
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
@@ -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.load_file(path)
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.error('Loaded API YAML file.')
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|
@@ -7,47 +7,26 @@ module Headsail
7
7
  def initialize(key_name)
8
8
  @key_name = key_name
9
9
  setup_connection
10
- setup_service
11
- setup_next_id
10
+ setup_task
12
11
  end
13
12
 
14
13
  def add(data)
15
- @connection.incr(next_id_key)
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 setup_next_id
50
- @connection.set(next_id_key, 0) unless @connection.exists(next_id_key)
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 ? Headsail.info(msg) : Headsail.err(msg)
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
@@ -1,3 +1,3 @@
1
1
  module Headsail
2
- VERSION = "0.1.15"
2
+ VERSION = "0.1.16"
3
3
  end
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.15
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-08 00:00:00.000000000 Z
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
- - bin/setup
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/logs.rb
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: {}