shutterstock-ruby 0.2.0 → 0.3.0

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: 4d09af3d27a5e5c465d6943b85c75fd0329b6e8a
4
- data.tar.gz: cabd32f37b51ffd889868ada64ebbfbca0a14d34
3
+ metadata.gz: a16a3aea51b0797b15acdf0b796a4b1f318e5333
4
+ data.tar.gz: 6c60678b9f218c9f4c0129d8db4846b9ee238e9d
5
5
  SHA512:
6
- metadata.gz: 9c85a28f7bbbbeced0e23fdce5d45567f1f0bb494aca52b7e5e9b9ab76785651f388d104200ddeaee268eba40a0e0b4ec1cd05cc083a09ac9d06cb47bedcbcd8
7
- data.tar.gz: 5075271cad9a20cd0a0ea528988eeaa2fdb4d1bce9eb1b5bfb0e617faee356a716c843c61e58c592dbda73a7441d0145107fa7d4fbc748e3687a9d001f950a3b
6
+ metadata.gz: 9a868e0f76dcacb6b56b30858b588924596077ab071dd4be3e36851b55d86c220e97d3758cb650305df640174158473a2365736799e9d93d7c9734ddae67fdcd
7
+ data.tar.gz: 7c867d2f9b4f0c32ef84e723150edf76ba037bcf26988fba2ba03b198e506ab312488fcd037ecc324731a13986dfca4a54ebc94679a7746c692be2d790af20cd
data/README.md CHANGED
@@ -4,7 +4,7 @@ The Shutterstock Ruby API Wrapper
4
4
  A Ruby API wrapper for [Shutterstock](http://www.shutterstock.com/) [API's](http://developers.shutterstock.com)
5
5
 
6
6
  [![Gem Version](https://badge.fury.io/rb/shutterstock-ruby.svg)](http://badge.fury.io/rb/shutterstock-ruby)[![Dependency Status](https://gemnasium.com/TailorBrands/shutterstock-ruby.svg)](https://gemnasium.com/TailorBrands/shutterstock-ruby)
7
- [![Circle CI](https://circleci.com/gh/TailorBrands/shutterstock-ruby/tree/master.svg?style=svg)](https://circleci.com/gh/TailorBrands/shutterstock-ruby/tree/master) [![Code Climate](https://codeclimate.com/github/TailorBrands/shutterstock-ruby/badges/gpa.svg)](https://codeclimate.com/github/TailorBrands/shutterstock-ruby) [![Test Coverage](https://codeclimate.com/github/TailorBrands/shutterstock-ruby/badges/coverage.svg)](https://codeclimate.com/github/TailorBrands/shutterstock-ruby)
7
+ [![Circle CI](https://circleci.com/gh/TailorBrands/shutterstock-ruby/tree/master.svg?style=svg)](https://circleci.com/gh/TailorBrands/shutterstock-ruby/tree/master) [![Code Climate](https://codeclimate.com/github/TailorBrands/shutterstock-ruby/badges/gpa.svg)](https://codeclimate.com/github/TailorBrands/shutterstock-ruby)
8
8
 
9
9
  ```rb
10
10
  gem "shutterstock-ruby"
@@ -19,10 +19,12 @@ module ShutterstockRuby
19
19
 
20
20
  # Main configuration class.
21
21
  class Configuration
22
+ attr_accessor :access_token
22
23
  attr_accessor :api_client
23
24
  attr_accessor :api_secret
24
25
 
25
26
  def initialize
27
+ @access_token = nil
26
28
  @api_client = nil
27
29
  @api_secret = nil
28
30
  end
@@ -6,24 +6,36 @@ module ShutterstockRuby
6
6
  options = { accept: :json }.merge(options)
7
7
  options[:params] = params unless params.nil?
8
8
 
9
- RestClient.get(build_url(path), options)
9
+ RestClient.get(build_url(path), add_bearer(options))
10
10
  end
11
11
 
12
- def post(path, body, options = {})
12
+ def post(path, body, params = nil, options = {})
13
13
  ensure_credentials!
14
14
 
15
- RestClient.post(build_url(path), body, options)
15
+ options[:params] = params unless params.nil?
16
+ options[:content_type] = "application/json"
17
+
18
+ RestClient.post(build_url(path), body, add_bearer(options))
16
19
  end
17
20
 
18
21
  private
19
22
 
20
23
  def build_url(path)
21
- "https://#{ShutterstockRuby.configuration.api_client}:#{ShutterstockRuby.configuration.api_secret}@#{ShutterstockRuby::API_BASE}#{path}"
24
+ if ShutterstockRuby.configuration.access_token
25
+ "https://#{ShutterstockRuby::API_BASE}#{path}"
26
+ else
27
+ "https://#{ShutterstockRuby.configuration.api_client}:#{ShutterstockRuby.configuration.api_secret}@#{ShutterstockRuby::API_BASE}#{path}"
28
+ end
29
+ end
30
+
31
+ def add_bearer(options)
32
+ options[:authorization] = "Bearer #{ShutterstockRuby.configuration.access_token}" if ShutterstockRuby.configuration.access_token
33
+ options
22
34
  end
23
35
 
24
36
  def ensure_credentials!
25
37
  config = ShutterstockRuby.configuration
26
- fail(Exception, 'Missing credentials') if config.api_client.nil? || config.api_secret.nil?
38
+ fail(Exception, 'Missing credentials') if (config.api_client.nil? || config.api_secret.nil?) && config.access_token.nil?
27
39
  end
28
40
  end
29
41
  end
@@ -6,5 +6,15 @@ module ShutterstockRuby
6
6
  def self.search(query, options = {})
7
7
  JSON.parse(self.get('/videos/search', { query: query }.merge(options)))
8
8
  end
9
+
10
+ def self.details(id, options = {})
11
+ JSON.parse(self.get('/videos', { id: id }.merge(options)))
12
+ end
13
+
14
+ def self.purchase(id, subscription_id, size, options = {})
15
+ params = { subscription_id: subscription_id, size: size }
16
+ body = { videos: [ video_id: id ] }.to_json
17
+ JSON.parse(self.post("/videos/licenses", body, params, options))
18
+ end
9
19
  end
10
20
  end
@@ -2,26 +2,32 @@ require 'spec_helper'
2
2
 
3
3
  RSpec.describe ShutterstockRuby do
4
4
  after :each do
5
+ ShutterstockRuby.configuration.access_token = nil
5
6
  ShutterstockRuby.configuration.api_client = nil
6
7
  ShutterstockRuby.configuration.api_secret = nil
7
8
  end
8
9
 
9
10
  it 'has the correct default' do
11
+ expect(ShutterstockRuby.configuration.access_token).to be nil
10
12
  expect(ShutterstockRuby.configuration.api_client).to be nil
11
13
  expect(ShutterstockRuby.configuration.api_secret).to be nil
12
14
  end
13
15
 
14
16
  it 'sets the correct configuration' do
17
+ expect(ShutterstockRuby.configuration.access_token).to be nil
15
18
  expect(ShutterstockRuby.configuration.api_client).to be nil
16
19
  expect(ShutterstockRuby.configuration.api_secret).to be nil
17
20
 
21
+ token = SecureRandom.uuid
18
22
  key = SecureRandom.uuid
19
23
  secret = SecureRandom.uuid
20
24
  ShutterstockRuby.configure do |config|
25
+ config.access_token = token
21
26
  config.api_client = key
22
27
  config.api_secret = secret
23
28
  end
24
29
 
30
+ expect(ShutterstockRuby.configuration.access_token).to equal(token)
25
31
  expect(ShutterstockRuby.configuration.api_client).to equal(key)
26
32
  expect(ShutterstockRuby.configuration.api_secret).to equal(secret)
27
33
  end
@@ -1,6 +1,3 @@
1
- require 'codeclimate-test-reporter'
2
- CodeClimate::TestReporter.start
3
-
4
1
  require 'bundler/setup'
5
2
  require 'shutterstock-ruby'
6
3
  require 'pry'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shutterstock-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nadav Shatz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-24 00:00:00.000000000 Z
11
+ date: 2017-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1'
19
+ version: '2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.5.1
110
+ rubygems_version: 2.6.11
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: An API wrapper for the Shutterstock API's