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 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: {}