filepreviews 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a7408ac21741d8efb17755f77472468bd6d13e6
4
- data.tar.gz: ce60521dd1b76641a7a723133abb4b90756b3eec
3
+ metadata.gz: 6eb1b65fbd4cf5f20021e4950f0d4df73d015591
4
+ data.tar.gz: 227b55edc016cbbf490beb865ac33268acfbbaf0
5
5
  SHA512:
6
- metadata.gz: 6bdd911b96642df03ec18e1959c91375cf93be015c4d319bba1fb1036cf3a09877d88ba20dbe6860fbe88d70ea6d2f9b2e8b8dfe93fe4e3945c3ed51da2bc565
7
- data.tar.gz: 94e34f9354e4fe1c0ec9ec22a0061fbd820a4e37aef5d2a0e1f312fbb820eb6ca6bd6fd3caaabe8f22a87f689b3ebed28795ef45095c59286235d9142bfa0353
6
+ metadata.gz: 1a30644834d46ef94d4f769202cf466442c8e7089fba78407836ae791c7ee14ac9b875d2396b510639d14ffb28d81bb3a59b1f2ef32a45f5ff8d90da1cb66052
7
+ data.tar.gz: 74645e901e21768c4f4f9c060e86cb1220d356896fe3828d97d0f667eed7a55c3395cb9902cbd302587eca225027fe0f07d596a1cfdc12a7fbca45fcae03d7b6
data/.travis.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.1
4
- - 2.0.0
3
+ - 2.1.1
4
+ - 2.0.0
5
5
  script: bundle exec rake test
6
6
  notifications:
7
7
  email: false
@@ -10,3 +10,6 @@ notifications:
10
10
  on_failure: always
11
11
  channels:
12
12
  - irc.freenode.org#rubyonadhd
13
+ env:
14
+ global:
15
+ secure: ifm8+ChcdXB9BkuzordGulaZbkhhJzZpiqh8JnzgAg+KRPr/riEMQOi+wKAaJMyHobmQjPWbkUoeTaR4vMi/Sdf1sH2rc4NZHHInrfq6fjhNPI8cpykInhTb7hymBCZCQgXHzJKlnULWwJat7JNXrftq/PXQgWRVGiWmFbbNTw8=
data/Changelog.md CHANGED
@@ -1,7 +1,17 @@
1
1
  # Filepreviews Changelog
2
2
 
3
+ ## 1.1.0
4
+
5
+ Released Jun 16, 2014 ([1.1.0](https://github.com/jonahoffline/filepreviews-ruby/tree/v1.1.0)).
6
+
7
+ * Update API url to use new endpoint
8
+ * Add `Filepreviews::Config` module for passing `api_key` and other future options
9
+ * Add `-k, --api-key` arguments and description for setting `api_key` in the `CLI`
10
+ * Update README with documentation for API key configuration, usage and CLI examples
11
+ * Update version to 1.1.0
12
+
3
13
  ## 1.0.0
4
14
 
5
15
  Released May 17, 2014 ([1.0.0](https://github.com/jonahoffline/filepreviews-ruby/tree/v1.0.0)).
6
16
 
7
- * Initial Release.
17
+ * Initial Release
data/README.md CHANGED
@@ -1,7 +1,12 @@
1
1
  # FilePreviews.io (Ruby client)
2
- This is the ruby client library for the **Demo API** of [FilePreviews.io](http://filepreviews.io) service. A lot more to come very soon.
2
+ [![Build Status](https://travis-ci.org/jonahoffline/filepreviews-ruby.svg)](https://travis-ci.org/jonahoffline/filepreviews-ruby)
3
+ [![Gem Version](https://badge.fury.io/rb/filepreviews.svg)](http://badge.fury.io/rb/filepreviews)
4
+ [![Dependency Status](https://gemnasium.com/jonahoffline/filepreviews-ruby.svg)](https://gemnasium.com/jonahoffline/filepreviews-ruby)
5
+ [![Code Climate](https://codeclimate.com/github/jonahoffline/filepreviews-ruby.png)](https://codeclimate.com/github/jonahoffline/filepreviews-ruby)
6
+ [![Inline docs](http://inch-pages.github.io/github/jonahoffline/filepreviews-ruby.png)](http://inch-pages.github.io/github/jonahoffline/filepreviews-ruby)
7
+ [![Gitter chat](https://badges.gitter.im/jonahoffline/filepreviews-ruby.png)](https://gitter.im/jonahoffline/filepreviews-ruby)
3
8
 
4
- [Sign up to beta](http://eepurl.com/To0U1)
9
+ This is the ruby client library for the **Demo API** of [FilePreviews.io](http://filepreviews.io) service. A lot more to come very soon.
5
10
 
6
11
  ## Installation
7
12
 
@@ -18,10 +23,31 @@ Or install it yourself as:
18
23
  $ gem install filepreviews
19
24
 
20
25
  ## Usage
26
+ You can currently use the Filepreviews.io API through this gem without registering your application. However, this may change anytime in the future.
27
+
28
+ For additional features and greater customization, register your application for an API key at [Filepreviews.io](http://bit.ly/filepreviews-signup)
21
29
 
22
- ### Example code
30
+ ### Configuration
31
+ To configure the gem to use your newly-registered `api_key`, you can use one of the two configuration styles:
32
+
33
+ Block style:
23
34
  ```ruby
35
+ require 'filepreviews'
24
36
 
37
+ Filepreviews.configure do |config|
38
+ config.api_key = 'YOUR_API_KEY'
39
+ end
40
+ ```
41
+
42
+ Simpler style:
43
+ ```ruby
44
+ require 'filepreviews'
45
+
46
+ Filepreviews.api_key = 'YOUR_API_KEY'
47
+ ```
48
+
49
+ ### Basic Example Code
50
+ ```ruby
25
51
  require 'filepreviews'
26
52
 
27
53
  url = 'http://pixelhipsters.com/images/pixelhipster_cat.png'
@@ -32,13 +58,21 @@ result.metadata_url
32
58
  result.metadata
33
59
  ```
34
60
 
35
- #### Options
36
- You can optinally send an options object.
37
-
61
+ #### Web Page Screencaptures
38
62
  ```ruby
63
+ url = 'http://pixelhipsters.com'
64
+ result = Filepreviews.generate(url)
39
65
 
40
- require 'filepreviews'
66
+ result.preview_url
67
+ result.metadata_url
68
+ result.metadata
69
+ ```
41
70
 
71
+
72
+ #### Options
73
+ You can optionally send an options object (per request).
74
+
75
+ ```ruby
42
76
  options = {
43
77
  size: {
44
78
  width: 100,
@@ -57,13 +91,33 @@ result.metadata
57
91
  ### Command-Line Application
58
92
  Options:
59
93
 
60
- * -m, --metadata - load metadata response
61
- * -v, --version - display the version
62
- * -h, --help - print help
94
+ * -k, --api_key [key] - use API key from Filepreviews.io
95
+ * -m, --metadata - load metadata response
96
+ * -v, --version - display the version
97
+ * -h, --help - print help
98
+
99
+ ### Command-Line usage examples
100
+
101
+ #### Basic use
102
+ $ filepreviews http://www.pixelhipsters.com
103
+
104
+ #### With an API Key
105
+ $ filepreviews --api_key YOUR_API_KEY_HERE http://www.pixelhipsters.com
106
+
107
+ #### Autoload Full (metadata) Response
108
+ $ filepreviews -m http://pixelhipsters.com/images/pixelhipster_cat.png
109
+
110
+ **Note**: This will return a full metadata response, instead of the API's original one that returns the `metadata_url` and `preview_url` urls.
111
+
63
112
 
64
113
  ## Author
65
114
  * [Jonah Ruiz](http://www.pixelhipsters.com)
66
115
 
116
+ ## Discussion
117
+ If you have any questions, ideas or jokes:
118
+
119
+ [![Gitter chat](https://badges.gitter.im/jonahoffline/filepreviews-ruby.png)](https://gitter.im/jonahoffline/filepreviews-ruby)
120
+
67
121
  ## Contributing
68
122
 
69
123
  Is it worth it? let me fork it
data/lib/filepreviews.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'filepreviews/version'
3
+ require 'filepreviews/config'
3
4
  require 'filepreviews/utils'
4
5
  require 'filepreviews/http'
5
6
  require 'filepreviews/response'
@@ -8,6 +9,8 @@ require 'ostruct'
8
9
  # @author Jonah Ruiz <jonah@pixelhipsters.com>
9
10
  # Main module for FilePreviews.io library
10
11
  module Filepreviews
12
+ include Filepreviews::Config
13
+
11
14
  # Facade method to call API response
12
15
  # @param url [String] image url to convert
13
16
  # @param options [Hash<Symbol>] :metada and :image options
@@ -33,7 +36,7 @@ module Filepreviews
33
36
  # Default options to be used in API request
34
37
  # @return [Hash<symbol>] default options
35
38
  def self.default_options
36
- { debug: true, metadata: ['all'] }
39
+ { debug: false, metadata: ['all'] }
37
40
  end
38
41
 
39
42
  # Merges metadata options with supported formats
@@ -24,6 +24,11 @@ MSG
24
24
  opts.banner = BANNER
25
25
  opts.set_program_name 'Filepreviews.io'
26
26
 
27
+ opts.on('-k', '--api_key [key]', String,
28
+ 'use API key from Filepreviews.io') do |key|
29
+ Filepreviews.api_key = key
30
+ end
31
+
27
32
  opts.on('-m', '--metadata', 'load metadata response') do
28
33
  @metadata = true
29
34
  end
@@ -0,0 +1,27 @@
1
+ module Filepreviews
2
+ # @author Jonah Ruiz <jonah@pixelhipsters.com>
3
+ # Configurable module for API key and options
4
+ module Config
5
+ def self.included(base)
6
+ base.extend(self)
7
+ end
8
+
9
+ # @!attribute api_key
10
+ # @return [String] API key to be used
11
+ attr_accessor :api_key
12
+
13
+ # Configures api_key and options
14
+ # Usage example:
15
+ # Filepreviews.configure do |config|
16
+ # config.api_key = 'your_api_key_here'
17
+ # end
18
+ #
19
+ # Alternate way:
20
+ # Filepreviews.api_key = ENV['YOUR_API_KEY']
21
+ #
22
+ # @param <api_key> [String] api key to use
23
+ def configure
24
+ yield self if block_given?
25
+ end
26
+ end
27
+ end
@@ -7,28 +7,41 @@ module Filepreviews
7
7
  # @author Jonah Ruiz <jonah@pixelhipsters.com>
8
8
  # Contains http helper module
9
9
  module HTTP
10
- API_URL = 'https://blimp-previews.herokuapp.com/'
10
+ API_URL = 'https://api.filepreviews.io/v1/'
11
11
  USER_AGENT = "Filepreviews-Rubygem/#{Filepreviews::VERSION}"
12
12
 
13
13
  include Filepreviews::Utils
14
14
 
15
15
  module_function
16
16
 
17
- # TODO: Fix logger
18
17
  # Returns custom Typhoeus connection configuration
19
18
  # @param url [String] API url to be used as base
20
- # @param _debug [Boolean] flag to log responses into STDOUT
21
- # @return [Typhoeus::Connection] http client for requests to API
22
- def default_connection(url = API_URL, _debug = true)
23
- # _logger = debug ? :logger : false
24
-
19
+ # @param debug [Boolean] flag to log responses into STDOUT
20
+ # @return [Typhoeus::Connection] configured http client for requests to API
21
+ def default_connection(url = API_URL, debug = false)
25
22
  Faraday.new(url: url) do |conn|
26
23
  conn.adapter :typhoeus
27
- # conn.response _logger
28
24
  conn.headers[:user_agent] = USER_AGENT
25
+ configure_api_auth_header(conn.headers)
26
+ configure_logger(conn) if debug
27
+ end
28
+ end
29
+
30
+ # Configures API Authentication header
31
+ # @param connection_headers [Faraday::Connection] header block
32
+ # @return [Faraday::Connection] 'X-API-KEY' header
33
+ def configure_api_auth_header(connection_headers)
34
+ if (api_key = Filepreviews.api_key)
35
+ connection_headers['X-API-KEY'] = api_key
29
36
  end
30
37
  end
31
38
 
39
+ # Configures logger
40
+ # @param connection [Faraday::Connection] connection block
41
+ def configure_logger(connection)
42
+ connection.response :logger
43
+ end
44
+
32
45
  # Returns processed metadata, and image attributes params
33
46
  # @param params [Hash<Symbol>] metadata and image attributes
34
47
  # @return [Hash<Symbol>] processed parameters
@@ -1,5 +1,5 @@
1
1
  # @author Jonah Ruiz <jonah@pixelhipsters.com>
2
2
  # Contains the version namespaced
3
3
  module Filepreviews
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
data/rubocop.yml CHANGED
@@ -1,5 +1,8 @@
1
1
  MethodLength:
2
- Max: 15
2
+ Max: 20
3
3
 
4
4
  RegexpLiteral:
5
5
  MaxSlashes: 0
6
+
7
+ LineLength:
8
+ Max: 80
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ # Dummy class for testing ::Config module
4
+ class Kawaii
5
+ extend Filepreviews::Config
6
+ end
7
+
8
+ describe Filepreviews::Config do
9
+ let(:config) { Kawaii }
10
+
11
+ describe '.api_key' do
12
+ it 'sets api key' do
13
+ config.api_key = '666'
14
+ expect(config.api_key).to eq('666')
15
+ end
16
+ end
17
+
18
+ describe '.configure' do
19
+ it 'sets the api_key when used with a block' do
20
+ config.configure { |conf| conf.api_key = 'kawaii!' }
21
+ expect(config.api_key).to eq('kawaii!')
22
+ end
23
+ end
24
+ end
@@ -4,18 +4,48 @@ describe Filepreviews do
4
4
  let(:file_previews) { Filepreviews }
5
5
  let(:sample_img) { 'http://pixelhipsters.com/images/pixelhipster_cat.png' }
6
6
 
7
- describe '.generate' do
8
- it 'returns a Filepreviews::Response instance' do
9
- expect(file_previews.generate(sample_img))
10
- .to be_an_instance_of(Filepreviews::Response)
11
- end
7
+ it 'keeps it real, you feels me dawg?' do
8
+ expect(true).to eq(true)
12
9
  end
13
10
 
14
11
  it 'has a version number' do
15
12
  expect(Filepreviews::VERSION).not_to be nil
16
13
  end
17
14
 
18
- it 'keeps it real, you feels me dawg?' do
19
- expect(true).to eq(true)
15
+ it 'includes configurable methods from Filepreviews::Config' do
16
+ expect(file_previews.methods).to include(:api_key, :configure)
17
+ end
18
+
19
+ describe '.generate' do
20
+ before(:each) { Filepreviews.api_key = nil }
21
+
22
+ context 'when used without an api key' do
23
+ it 'returns a Filepreviews::Response instance' do
24
+ expect(file_previews.generate(sample_img))
25
+ .to be_an_instance_of(Filepreviews::Response)
26
+ end
27
+ end
28
+
29
+ context 'when used with an api key' do
30
+ it 'returns a Filepreviews::Response instance' do
31
+ Filepreviews.api_key = ENV['FILEPREVIEWS_API_KEY']
32
+ response = file_previews.generate(sample_img)
33
+
34
+ expect(response.metadata_url).to_not be_nil
35
+ expect(response.preview_url).to_not be_nil
36
+ expect(response).to be_an_instance_of(Filepreviews::Response)
37
+ end
38
+ end
39
+
40
+ context 'when used with an incorrect api key' do
41
+ it 'returns a Filepreviews::Response instance with an error msg' do
42
+ Filepreviews.api_key = '666'
43
+ response = file_previews.generate(sample_img)
44
+
45
+ expect(response).to respond_to(:error)
46
+ expect(response.error).to respond_to(:api_key)
47
+ expect(response.error.api_key).to include('Invalid API Key.')
48
+ end
49
+ end
20
50
  end
21
51
  end
@@ -20,4 +20,23 @@ describe Filepreviews::HTTP do
20
20
  end
21
21
  end
22
22
  end
23
+
24
+ describe 'configure_api_auth_header' do
25
+ before(:each) { Filepreviews.api_key = nil }
26
+ header = { 'User-Agent' => "Filepreviews-Rubygem/#{Filepreviews::VERSION}" }
27
+
28
+ context 'when api_key is set' do
29
+ it 'configures the X-API-KEY header' do
30
+ Filepreviews.api_key = '666'
31
+ expect(http.default_connection.headers['X-API-KEY']).to eq('666')
32
+ end
33
+ end
34
+
35
+ context 'when api_key is not present' do
36
+ it 'does not add the X-API-KEY header' do
37
+ expect(http.default_connection.headers['X-API-KEY']).to be_nil
38
+ expect(http.default_connection.headers).to eq(header)
39
+ end
40
+ end
41
+ end
23
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filepreviews
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonah Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-18 00:00:00.000000000 Z
11
+ date: 2014-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -102,11 +102,13 @@ files:
102
102
  - filepreviews.gemspec
103
103
  - lib/filepreviews.rb
104
104
  - lib/filepreviews/cli.rb
105
+ - lib/filepreviews/config.rb
105
106
  - lib/filepreviews/http.rb
106
107
  - lib/filepreviews/response.rb
107
108
  - lib/filepreviews/utils.rb
108
109
  - lib/filepreviews/version.rb
109
110
  - rubocop.yml
111
+ - spec/filepreviews/config_spec.rb
110
112
  - spec/filepreviews/filepreviews_spec.rb
111
113
  - spec/filepreviews/http_spec.rb
112
114
  - spec/filepreviews/utils_spec.rb
@@ -136,6 +138,7 @@ signing_key:
136
138
  specification_version: 4
137
139
  summary: FilePreviews.io Ruby library and CLI for the service
138
140
  test_files:
141
+ - spec/filepreviews/config_spec.rb
139
142
  - spec/filepreviews/filepreviews_spec.rb
140
143
  - spec/filepreviews/http_spec.rb
141
144
  - spec/filepreviews/utils_spec.rb