shutterstock-v2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +27 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +6 -0
  5. data/.travis.yml +6 -0
  6. data/Dockerfile +17 -0
  7. data/Gemfile +3 -0
  8. data/Guardfile +9 -0
  9. data/README.md +377 -0
  10. data/Rakefile +19 -0
  11. data/lib/client/auth.rb +48 -0
  12. data/lib/client/categories.rb +11 -0
  13. data/lib/client/category.rb +16 -0
  14. data/lib/client/client.rb +72 -0
  15. data/lib/client/collection.rb +151 -0
  16. data/lib/client/collections.rb +16 -0
  17. data/lib/client/configuration.rb +20 -0
  18. data/lib/client/contributor.rb +15 -0
  19. data/lib/client/driver.rb +38 -0
  20. data/lib/client/error.rb +20 -0
  21. data/lib/client/image.rb +139 -0
  22. data/lib/client/image_assets.rb +56 -0
  23. data/lib/client/image_size_details.rb +26 -0
  24. data/lib/client/images.rb +27 -0
  25. data/lib/client/license.rb +67 -0
  26. data/lib/client/licenses.rb +23 -0
  27. data/lib/client/model.rb +15 -0
  28. data/lib/client/models.rb +11 -0
  29. data/lib/client/request.rb +41 -0
  30. data/lib/client/subscription.rb +35 -0
  31. data/lib/client/subscription_allotment.rb +19 -0
  32. data/lib/client/subscription_license_format.rb +16 -0
  33. data/lib/client/subscription_license_formats.rb +12 -0
  34. data/lib/client/subscription_price.rb +13 -0
  35. data/lib/client/subscriptions.rb +37 -0
  36. data/lib/client/thumbnail.rb +17 -0
  37. data/lib/client/user.rb +68 -0
  38. data/lib/client/version.rb +3 -0
  39. data/lib/shutterstock-v2.rb +31 -0
  40. data/shutterstock-v2.gemspec +30 -0
  41. data/spec/cassettes/Shutterstock_Auth_get_access_token/returns_hash_with_access_token.yml +86 -0
  42. data/spec/cassettes/Shutterstock_Auth_get_authorize_url/returns_URL_to_redirect_user_to_passing_redirect_url_an.yml +48 -0
  43. data/spec/cassettes/Shutterstock_Categories/parses_params_correctly.yml +53 -0
  44. data/spec/cassettes/Shutterstock_Categories/returns_all_cats_for_an_image.yml +53 -0
  45. data/spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_Image_new.yml +48 -0
  46. data/spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_id.yml +48 -0
  47. data/spec/cassettes/Shutterstock_Collection/add_image_error_raises_error_if_collection_does_not_exist.yml +52 -0
  48. data/spec/cassettes/Shutterstock_Collection/create_creates_a_collection.yml +52 -0
  49. data/spec/cassettes/Shutterstock_Collection/destroy_destroys_a_collection.yml +93 -0
  50. data/spec/cassettes/Shutterstock_Collection/find_adds_an_image.yml +97 -0
  51. data/spec/cassettes/Shutterstock_Collection/find_converts_list_to_images.yml +101 -0
  52. data/spec/cassettes/Shutterstock_Collection/find_finds_a_collection_given_an_id.yml +52 -0
  53. data/spec/cassettes/Shutterstock_Collection/find_raises_error_for_invalid_collection_id.yml +50 -0
  54. data/spec/cassettes/Shutterstock_Collection/find_removes_an_image.yml +95 -0
  55. data/spec/cassettes/Shutterstock_Collection/list_returns_all_collections_for_the_current_user.yml +53 -0
  56. data/spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_Image_new.yml +46 -0
  57. data/spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_id.yml +46 -0
  58. data/spec/cassettes/Shutterstock_Collection/update_changes_the_name_of_a_collection.yml +97 -0
  59. data/spec/cassettes/Shutterstock_Collections/returns_all_collections_for_current_user.yml +53 -0
  60. data/spec/cassettes/Shutterstock_Image/fill_fills_all_details_of_current_image.yml +109 -0
  61. data/spec/cassettes/Shutterstock_Image/fills_all_details_of_current_image.yml +109 -0
  62. data/spec/cassettes/Shutterstock_Image/find_places_image_data_into_correct_fields.yml +56 -0
  63. data/spec/cassettes/Shutterstock_Image/find_places_more_image_data_into_correct_fields.yml +53 -0
  64. data/spec/cassettes/Shutterstock_Image/find_returns_an_Image_object.yml +56 -0
  65. data/spec/cassettes/Shutterstock_Image/finds_similar_images_given_an_image.yml +125 -0
  66. data/spec/cassettes/Shutterstock_Image/returns_an_Image_object.yml +56 -0
  67. data/spec/cassettes/Shutterstock_Image/returns_similar_images.yml +72 -0
  68. data/spec/cassettes/Shutterstock_Image/search_searches_for_images_based_on_searchterm.yml +73 -0
  69. data/spec/cassettes/Shutterstock_Image/search_searches_using_more_than_one_parameter.yml +77 -0
  70. data/spec/cassettes/Shutterstock_Image/searches_for_images_based_on_searchterm.yml +73 -0
  71. data/spec/cassettes/Shutterstock_Image/searches_using_more_than_one_parameter.yml +77 -0
  72. data/spec/cassettes/Shutterstock_Image/similar_finds_similar_images_given_an_image.yml +125 -0
  73. data/spec/cassettes/Shutterstock_Image/similar_returns_similar_images.yml +72 -0
  74. data/spec/cassettes/Shutterstock_ImageAssets/find_calculates_fields_correctly.yml +53 -0
  75. data/spec/cassettes/Shutterstock_ImageAssets/find_places_image_data_into_correct_fields.yml +53 -0
  76. data/spec/cassettes/Shutterstock_Images/fill_fills_details_of_all_images_in_list_all_images_now_have_keywords.yml +1144 -0
  77. data/spec/cassettes/Shutterstock_Images/returns_similar_images.yml +126 -0
  78. data/spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_error_if_requesting_an_image.yml +53 -0
  79. data/spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_licenced_image_if_ed_ack_is_.yml +52 -0
  80. data/spec/cassettes/Shutterstock_License/license_license_from_image_object_sends_editorial_acknowledgement_when.yml +160 -0
  81. data/spec/cassettes/Shutterstock_License/license_license_from_image_object_using_found_subscription.yml +108 -0
  82. data/spec/cassettes/Shutterstock_License/license_license_from_image_object_vector_image.yml +108 -0
  83. data/spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images.yml +52 -0
  84. data/spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images_from_Image_new.yml +52 -0
  85. data/spec/cassettes/Shutterstock_License/license_multiple_returns_error_in_Licenses_when_incorrect_image_used.yml +53 -0
  86. data/spec/cassettes/Shutterstock_License/license_single_licencing_same_image_twice_does_not_give_error.yml +101 -0
  87. data/spec/cassettes/Shutterstock_License/license_single_license_fails_when_subscription_doesn_t_allow.yml +49 -0
  88. data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image.yml +52 -0
  89. data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_Image_new.yml +52 -0
  90. data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_hash.yml +52 -0
  91. data/spec/cassettes/Shutterstock_License/license_single_licenses_single_image_with_smaller_size.yml +52 -0
  92. data/spec/cassettes/Shutterstock_License/license_single_licenses_vector_image.yml +52 -0
  93. data/spec/cassettes/Shutterstock_License/license_single_licensing_same_image_twice_does_not_give_error.yml +101 -0
  94. data/spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_image_used.yml +103 -0
  95. data/spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_subscription_used.yml +53 -0
  96. data/spec/cassettes/Shutterstock_Models/parses_params_correctly.yml +53 -0
  97. data/spec/cassettes/Shutterstock_Models/returns_all_models_for_an_image.yml +53 -0
  98. data/spec/cassettes/Shutterstock_Subscription/allows_image_size_download_correctly_finds_if_image_size_is_possi.yml +59 -0
  99. data/spec/cassettes/Shutterstock_Subscription/new_parses_info_on_user_correctly.yml +59 -0
  100. data/spec/cassettes/Shutterstock_Subscription/new_returns_a_subscription_for_current_user.yml +59 -0
  101. data/spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_parses_info_correctly.yml +59 -0
  102. data/spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_returns_a_subscription_license_format_for_curren.yml +59 -0
  103. data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_expired_total_subscriptions.yml +59 -0
  104. data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_returns_only_active_subscriptions.yml +59 -0
  105. data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_downloads_left_only_subscriptions_with_downloads_l.yml +59 -0
  106. data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_expired_returns_only_expired_subscriptions.yml +59 -0
  107. data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_find_subscription_for_image_size_finds_subs_to_use.yml +59 -0
  108. data/spec/cassettes/Shutterstock_Subscriptions/subscriptions_returns_all_subscriptions_for_current_user.yml +59 -0
  109. data/spec/cassettes/Shutterstock_User/find_parses_info_on_user_correctly.yml +52 -0
  110. data/spec/cassettes/Shutterstock_User/find_returns_object_for_current_user.yml +52 -0
  111. data/spec/client/auth_spec.rb +36 -0
  112. data/spec/client/categories_spec.rb +26 -0
  113. data/spec/client/category_spec.rb +16 -0
  114. data/spec/client/client_spec.rb +32 -0
  115. data/spec/client/collection_spec.rb +159 -0
  116. data/spec/client/collections_spec.rb +18 -0
  117. data/spec/client/configuration_spec.rb +10 -0
  118. data/spec/client/contributor_spec.rb +14 -0
  119. data/spec/client/driver_spec.rb +20 -0
  120. data/spec/client/image_assets_spec.rb +51 -0
  121. data/spec/client/image_size_details_spec.rb +33 -0
  122. data/spec/client/image_spec.rb +102 -0
  123. data/spec/client/images_spec.rb +31 -0
  124. data/spec/client/license_spec.rb +234 -0
  125. data/spec/client/model_spec.rb +14 -0
  126. data/spec/client/models_spec.rb +23 -0
  127. data/spec/client/request_spec.rb +79 -0
  128. data/spec/client/subscription_allotment_spec.rb +25 -0
  129. data/spec/client/subscription_license_format_spec.rb +29 -0
  130. data/spec/client/subscription_price_spec.rb +17 -0
  131. data/spec/client/subscription_spec.rb +60 -0
  132. data/spec/client/subscriptions_spec.rb +54 -0
  133. data/spec/client/thumbnail_spec.rb +21 -0
  134. data/spec/client/user_spec.rb +37 -0
  135. data/spec/spec_helper.rb +88 -0
  136. metadata +467 -0
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe Subscription do
4
+ before do
5
+ client
6
+ end
7
+
8
+ context 'new' do
9
+
10
+ subject { User.subscriptions.first }
11
+
12
+ it 'returns a subscription for current user' do
13
+ expect(subject).to_not be_nil
14
+ expect(subject).to be_a Subscription
15
+ end
16
+
17
+ it 'parses info on user correctly' do
18
+ # Test variables from this specific API call.
19
+ # Might break if vcr recording is deleted. If so, use new values
20
+ expect(subject.id).to eq "s29729296"
21
+ expect(subject.description).to eq "Monthly Subscription"
22
+ expect(subject.expiration_time).to eq DateTime.parse("2016-12-28T09:36:49-05:00")
23
+ expect(subject.price_per_download).to be nil
24
+ expect(subject.license).to eq "standard"
25
+ expect(subject.allotment).to be nil
26
+ expect(subject.formats).to be_a Array
27
+ expect(subject.formats.first).to be_a SubscriptionLicenseFormat
28
+ expect(subject.metadata).to eq nil
29
+ end
30
+ end
31
+
32
+ context 'allows_image_size_download?' do
33
+
34
+ subject { User.subscriptions.active.first }
35
+
36
+ it "correctly finds if image size is possible by this subscription" do
37
+ expect(subject.allows_image_size_download?("small")).to be true
38
+ expect(subject.allows_image_size_download?("made_up_size")).to be false
39
+ end
40
+
41
+ end
42
+
43
+ context 'expired?' do
44
+
45
+ subject { Subscription.new("id" => "s1", "expiration_time" => "2016-12-28T09:36:49-05:00") }
46
+
47
+ it "correctly calculates not expired plan" do
48
+ allow(DateTime).to receive(:now).and_return(DateTime.parse("2015-12-28T09:36:49-05:00"))
49
+
50
+ expect(subject.expired?).to be false
51
+ end
52
+
53
+ it "correctly calculates not expired plan" do
54
+ allow(DateTime).to receive(:now).and_return(DateTime.parse("2017-12-28T09:36:49-05:00"))
55
+
56
+ expect(subject.expired?).to be true
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe Subscriptions do
4
+ before do
5
+ client
6
+ end
7
+
8
+ context 'subscriptions' do
9
+
10
+ subject { User.subscriptions }
11
+
12
+ it 'returns all subscriptions for current user' do
13
+ expect(subject).to_not be_nil
14
+ expect(subject).to be_a Array
15
+ expect(subject.first).to be_a Subscription
16
+ end
17
+
18
+ it '.expired returns only expired subscriptions' do
19
+ expect(subject.expired).to be_a Array
20
+ expect(subject.expired.first).to be_a Subscription
21
+ expect(subject.expired.count).to be <= subject.count
22
+ end
23
+
24
+ it '.active returns only active subscriptions' do
25
+ expect(subject.active).to be_a Array
26
+ expect(subject.active.first).to be_a Subscription
27
+ expect(subject.active.count).to be <= subject.count
28
+ end
29
+
30
+ it '.active + .expired = total subscriptions' do
31
+ expect(subject.active.count + subject.expired.count).to eq subject.count
32
+ end
33
+
34
+ it '.downloads_left only subscriptions with downloads left' do
35
+ expect(subject.downloads_left).to be_a Array
36
+ expect(subject.downloads_left).to eq subject.select{|sub| sub.has_downloads_left? }
37
+ end
38
+
39
+ it '.find_subscription_for_image_size finds subs to use for download of image size' do
40
+ sub = subject.find_subscription_for_image_size("huge")
41
+ expect(sub.id).to eq "s30187600"
42
+ expect(sub.has_downloads_left?).to be true
43
+ expect(sub.allows_image_size_download?("huge")).to be true
44
+
45
+ # Defaults to huge when no param
46
+ sub = subject.find_subscription_for_image_size()
47
+ expect(sub.id).to eq "s30187600"
48
+
49
+ expect(subject.find_subscription_for_image_size("invalid_size")).to be nil
50
+ end
51
+
52
+ end
53
+
54
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Thumbnail do
4
+ # before do
5
+ # client
6
+ # end
7
+
8
+ context 'initialize' do
9
+ it 'initializes params correctly' do
10
+ isd = Thumbnail.new({"height" => 299,
11
+ "url" => "https://image.shutterstock.com/xxx.jpg",
12
+ "width" => 450})
13
+
14
+ expect(isd.height).to eq 299
15
+ expect(isd.url).to eq "https://image.shutterstock.com/xxx.jpg"
16
+ expect(isd.width).to eq 450
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe User do
4
+ before do
5
+ client
6
+ end
7
+
8
+ context 'find' do
9
+
10
+ subject { User.find }
11
+
12
+ it 'returns object for current user' do
13
+ expect(subject).to_not be_nil
14
+ expect(subject).to be_a User
15
+ end
16
+
17
+ it 'parses info on user correctly' do
18
+ expect(subject.contributor_id).to be nil
19
+ expect(subject.customer_id).to eq ENV["SSTK_CUSTOMER_ID"]
20
+ expect(subject.email).to be nil
21
+ expect(subject.first_name).to eq ENV["SSTK_FIRST_NAME"]
22
+ expect(subject.full_name).to eq ENV["SSTK_FULL_NAME"]
23
+ expect(subject.id).to eq ENV["SSTK_USER_ID"]
24
+ expect(subject.last_name).to eq ENV["SSTK_LAST_NAME"]
25
+ expect(subject.language).to eq "en"
26
+ expect(subject.organization_id).to eq nil
27
+ expect(subject.username).to eq ENV["SSTK_USERNAME"]
28
+ expect(subject.is_premier).to eq nil
29
+ expect(subject.is_premier_parent).to eq nil
30
+ expect(subject.premier_permissions).to eq nil
31
+ expect(subject.only_sensitive_use).to eq nil
32
+ expect(subject.only_enhanced_license).to eq nil
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,88 @@
1
+ require 'webmock'
2
+ require 'vcr'
3
+ require 'rspec'
4
+ require 'pry'
5
+
6
+ require 'shutterstock'
7
+ include Shutterstock
8
+
9
+ DEFAULTS = {
10
+ SSTK_CLIENT_ID: 'client_id',
11
+ SSTK_CLIENT_SECRET: 'client_secret',
12
+ SSTK_ACCESS_TOKEN: 'access_token',
13
+ SSTK_BASE_API_URI: 'https://api.shutterstock.com/v2'
14
+ }
15
+
16
+ def sensitive_data(c, env_key)
17
+ c.filter_sensitive_data("<#{env_key}>") do
18
+ ENV[env_key.to_s] || DEFAULTS[env_key]
19
+ end
20
+ end
21
+
22
+ VCR.configure do |c|
23
+ c.cassette_library_dir = 'spec/cassettes'
24
+ c.hook_into :webmock
25
+ c.configure_rspec_metadata!
26
+ c.allow_http_connections_when_no_cassette = true
27
+
28
+ # Errors for any requests with '99999' in them
29
+ c.before_http_request do |request|
30
+ raise FailedResponse.new("uri forced failure") if request.uri =~ /99999/
31
+ end
32
+ sensitive_data(c, :SSTK_CLIENT_ID)
33
+ sensitive_data(c, :SSTK_CLIENT_SECRET)
34
+ sensitive_data(c, :SSTK_ACCESS_TOKEN)
35
+
36
+ # returned by shutterstock in cassettes, but is private
37
+ sensitive_data(c, :SSTK_USER_ID)
38
+ sensitive_data(c, :SSTK_USERNAME)
39
+ sensitive_data(c, :SSTK_FULL_NAME)
40
+ sensitive_data(c, :SSTK_FIRST_NAME)
41
+ sensitive_data(c, :SSTK_LAST_NAME)
42
+ sensitive_data(c, :SSTK_CUSTOMER_ID)
43
+
44
+ end
45
+
46
+ if ENV['VCR_OFF']
47
+ WebMock.allow_net_connect!
48
+ VCR.turn_off!(ignore_cassettes: true)
49
+ end
50
+
51
+ uri_without_access_token = VCR.request_matchers.uri_without_param(:access_token)
52
+
53
+ RSpec.configure do |config|
54
+ # Add VCR to all tests
55
+ config.around(:each) do |example|
56
+ options = example.metadata[:vcr] || {}
57
+ options[:match_requests_on] = [:method, uri_without_access_token]
58
+ #options[:record] = :new_episodes # uncomment when updating existing tests
59
+ if options[:record] == :skip
60
+ VCR.turned_off(&example)
61
+ else
62
+ name = example.metadata[:full_description]
63
+ .split(/\s+/, 2).join('/')
64
+ .gsub(/[^\w\/]+/, '_')[0..90]
65
+ VCR.use_cassette(name, options, &example)
66
+ end
67
+ end
68
+ end
69
+
70
+ def client
71
+ Client.instance.configure do |config|
72
+ config.client_id = ENV['SSTK_CLIENT_ID'] || "client_id"
73
+ config.client_secret = ENV['SSTK_CLIENT_SECRET'] || "client_secret"
74
+ config.access_token = ENV['SSTK_ACCESS_TOKEN'] || "access_token"
75
+ end
76
+ Client.instance
77
+ end
78
+
79
+
80
+ def client_no_token
81
+ Client.instance.configure do |config|
82
+ config.client_id = ENV['SSTK_CLIENT_ID'] || "client_id"
83
+ config.client_secret = ENV['SSTK_CLIENT_SECRET'] || "client_secret"
84
+ end
85
+ Client.instance
86
+ end
87
+
88
+
metadata ADDED
@@ -0,0 +1,467 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shutterstock-v2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - David Peterson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-01-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: equalizer
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday_middleware
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-rescue
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-stack_explorer
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-nav
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: vcr
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: webmock
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: guard-rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ description: see summary
210
+ email: dp@vivitec.com.au
211
+ executables: []
212
+ extensions: []
213
+ extra_rdoc_files: []
214
+ files:
215
+ - ".gitignore"
216
+ - ".rspec"
217
+ - ".rubocop.yml"
218
+ - ".travis.yml"
219
+ - Dockerfile
220
+ - Gemfile
221
+ - Guardfile
222
+ - README.md
223
+ - Rakefile
224
+ - lib/client/auth.rb
225
+ - lib/client/categories.rb
226
+ - lib/client/category.rb
227
+ - lib/client/client.rb
228
+ - lib/client/collection.rb
229
+ - lib/client/collections.rb
230
+ - lib/client/configuration.rb
231
+ - lib/client/contributor.rb
232
+ - lib/client/driver.rb
233
+ - lib/client/error.rb
234
+ - lib/client/image.rb
235
+ - lib/client/image_assets.rb
236
+ - lib/client/image_size_details.rb
237
+ - lib/client/images.rb
238
+ - lib/client/license.rb
239
+ - lib/client/licenses.rb
240
+ - lib/client/model.rb
241
+ - lib/client/models.rb
242
+ - lib/client/request.rb
243
+ - lib/client/subscription.rb
244
+ - lib/client/subscription_allotment.rb
245
+ - lib/client/subscription_license_format.rb
246
+ - lib/client/subscription_license_formats.rb
247
+ - lib/client/subscription_price.rb
248
+ - lib/client/subscriptions.rb
249
+ - lib/client/thumbnail.rb
250
+ - lib/client/user.rb
251
+ - lib/client/version.rb
252
+ - lib/shutterstock-v2.rb
253
+ - shutterstock-v2.gemspec
254
+ - spec/cassettes/Shutterstock_Auth_get_access_token/returns_hash_with_access_token.yml
255
+ - spec/cassettes/Shutterstock_Auth_get_authorize_url/returns_URL_to_redirect_user_to_passing_redirect_url_an.yml
256
+ - spec/cassettes/Shutterstock_Categories/parses_params_correctly.yml
257
+ - spec/cassettes/Shutterstock_Categories/returns_all_cats_for_an_image.yml
258
+ - spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_Image_new.yml
259
+ - spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_id.yml
260
+ - spec/cassettes/Shutterstock_Collection/add_image_error_raises_error_if_collection_does_not_exist.yml
261
+ - spec/cassettes/Shutterstock_Collection/create_creates_a_collection.yml
262
+ - spec/cassettes/Shutterstock_Collection/destroy_destroys_a_collection.yml
263
+ - spec/cassettes/Shutterstock_Collection/find_adds_an_image.yml
264
+ - spec/cassettes/Shutterstock_Collection/find_converts_list_to_images.yml
265
+ - spec/cassettes/Shutterstock_Collection/find_finds_a_collection_given_an_id.yml
266
+ - spec/cassettes/Shutterstock_Collection/find_raises_error_for_invalid_collection_id.yml
267
+ - spec/cassettes/Shutterstock_Collection/find_removes_an_image.yml
268
+ - spec/cassettes/Shutterstock_Collection/list_returns_all_collections_for_the_current_user.yml
269
+ - spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_Image_new.yml
270
+ - spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_id.yml
271
+ - spec/cassettes/Shutterstock_Collection/update_changes_the_name_of_a_collection.yml
272
+ - spec/cassettes/Shutterstock_Collections/returns_all_collections_for_current_user.yml
273
+ - spec/cassettes/Shutterstock_Image/fill_fills_all_details_of_current_image.yml
274
+ - spec/cassettes/Shutterstock_Image/fills_all_details_of_current_image.yml
275
+ - spec/cassettes/Shutterstock_Image/find_places_image_data_into_correct_fields.yml
276
+ - spec/cassettes/Shutterstock_Image/find_places_more_image_data_into_correct_fields.yml
277
+ - spec/cassettes/Shutterstock_Image/find_returns_an_Image_object.yml
278
+ - spec/cassettes/Shutterstock_Image/finds_similar_images_given_an_image.yml
279
+ - spec/cassettes/Shutterstock_Image/returns_an_Image_object.yml
280
+ - spec/cassettes/Shutterstock_Image/returns_similar_images.yml
281
+ - spec/cassettes/Shutterstock_Image/search_searches_for_images_based_on_searchterm.yml
282
+ - spec/cassettes/Shutterstock_Image/search_searches_using_more_than_one_parameter.yml
283
+ - spec/cassettes/Shutterstock_Image/searches_for_images_based_on_searchterm.yml
284
+ - spec/cassettes/Shutterstock_Image/searches_using_more_than_one_parameter.yml
285
+ - spec/cassettes/Shutterstock_Image/similar_finds_similar_images_given_an_image.yml
286
+ - spec/cassettes/Shutterstock_Image/similar_returns_similar_images.yml
287
+ - spec/cassettes/Shutterstock_ImageAssets/find_calculates_fields_correctly.yml
288
+ - spec/cassettes/Shutterstock_ImageAssets/find_places_image_data_into_correct_fields.yml
289
+ - spec/cassettes/Shutterstock_Images/fill_fills_details_of_all_images_in_list_all_images_now_have_keywords.yml
290
+ - spec/cassettes/Shutterstock_Images/returns_similar_images.yml
291
+ - spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_error_if_requesting_an_image.yml
292
+ - spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_licenced_image_if_ed_ack_is_.yml
293
+ - spec/cassettes/Shutterstock_License/license_license_from_image_object_sends_editorial_acknowledgement_when.yml
294
+ - spec/cassettes/Shutterstock_License/license_license_from_image_object_using_found_subscription.yml
295
+ - spec/cassettes/Shutterstock_License/license_license_from_image_object_vector_image.yml
296
+ - spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images.yml
297
+ - spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images_from_Image_new.yml
298
+ - spec/cassettes/Shutterstock_License/license_multiple_returns_error_in_Licenses_when_incorrect_image_used.yml
299
+ - spec/cassettes/Shutterstock_License/license_single_licencing_same_image_twice_does_not_give_error.yml
300
+ - spec/cassettes/Shutterstock_License/license_single_license_fails_when_subscription_doesn_t_allow.yml
301
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image.yml
302
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_Image_new.yml
303
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_hash.yml
304
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image_with_smaller_size.yml
305
+ - spec/cassettes/Shutterstock_License/license_single_licenses_vector_image.yml
306
+ - spec/cassettes/Shutterstock_License/license_single_licensing_same_image_twice_does_not_give_error.yml
307
+ - spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_image_used.yml
308
+ - spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_subscription_used.yml
309
+ - spec/cassettes/Shutterstock_Models/parses_params_correctly.yml
310
+ - spec/cassettes/Shutterstock_Models/returns_all_models_for_an_image.yml
311
+ - spec/cassettes/Shutterstock_Subscription/allows_image_size_download_correctly_finds_if_image_size_is_possi.yml
312
+ - spec/cassettes/Shutterstock_Subscription/new_parses_info_on_user_correctly.yml
313
+ - spec/cassettes/Shutterstock_Subscription/new_returns_a_subscription_for_current_user.yml
314
+ - spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_parses_info_correctly.yml
315
+ - spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_returns_a_subscription_license_format_for_curren.yml
316
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_expired_total_subscriptions.yml
317
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_returns_only_active_subscriptions.yml
318
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_downloads_left_only_subscriptions_with_downloads_l.yml
319
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_expired_returns_only_expired_subscriptions.yml
320
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_find_subscription_for_image_size_finds_subs_to_use.yml
321
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_returns_all_subscriptions_for_current_user.yml
322
+ - spec/cassettes/Shutterstock_User/find_parses_info_on_user_correctly.yml
323
+ - spec/cassettes/Shutterstock_User/find_returns_object_for_current_user.yml
324
+ - spec/client/auth_spec.rb
325
+ - spec/client/categories_spec.rb
326
+ - spec/client/category_spec.rb
327
+ - spec/client/client_spec.rb
328
+ - spec/client/collection_spec.rb
329
+ - spec/client/collections_spec.rb
330
+ - spec/client/configuration_spec.rb
331
+ - spec/client/contributor_spec.rb
332
+ - spec/client/driver_spec.rb
333
+ - spec/client/image_assets_spec.rb
334
+ - spec/client/image_size_details_spec.rb
335
+ - spec/client/image_spec.rb
336
+ - spec/client/images_spec.rb
337
+ - spec/client/license_spec.rb
338
+ - spec/client/model_spec.rb
339
+ - spec/client/models_spec.rb
340
+ - spec/client/request_spec.rb
341
+ - spec/client/subscription_allotment_spec.rb
342
+ - spec/client/subscription_license_format_spec.rb
343
+ - spec/client/subscription_price_spec.rb
344
+ - spec/client/subscription_spec.rb
345
+ - spec/client/subscriptions_spec.rb
346
+ - spec/client/thumbnail_spec.rb
347
+ - spec/client/user_spec.rb
348
+ - spec/spec_helper.rb
349
+ homepage: https://github.com/dippysan/shutterstock
350
+ licenses: []
351
+ metadata: {}
352
+ post_install_message:
353
+ rdoc_options: []
354
+ require_paths:
355
+ - lib
356
+ required_ruby_version: !ruby/object:Gem::Requirement
357
+ requirements:
358
+ - - ">="
359
+ - !ruby/object:Gem::Version
360
+ version: '0'
361
+ required_rubygems_version: !ruby/object:Gem::Requirement
362
+ requirements:
363
+ - - ">="
364
+ - !ruby/object:Gem::Version
365
+ version: '0'
366
+ requirements: []
367
+ rubyforge_project:
368
+ rubygems_version: 2.5.1
369
+ signing_key:
370
+ specification_version: 4
371
+ summary: A ruby client to work with shutterstock API v2
372
+ test_files:
373
+ - spec/cassettes/Shutterstock_Auth_get_access_token/returns_hash_with_access_token.yml
374
+ - spec/cassettes/Shutterstock_Auth_get_authorize_url/returns_URL_to_redirect_user_to_passing_redirect_url_an.yml
375
+ - spec/cassettes/Shutterstock_Categories/parses_params_correctly.yml
376
+ - spec/cassettes/Shutterstock_Categories/returns_all_cats_for_an_image.yml
377
+ - spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_Image_new.yml
378
+ - spec/cassettes/Shutterstock_Collection/add_image_adds_image_using_id.yml
379
+ - spec/cassettes/Shutterstock_Collection/add_image_error_raises_error_if_collection_does_not_exist.yml
380
+ - spec/cassettes/Shutterstock_Collection/create_creates_a_collection.yml
381
+ - spec/cassettes/Shutterstock_Collection/destroy_destroys_a_collection.yml
382
+ - spec/cassettes/Shutterstock_Collection/find_adds_an_image.yml
383
+ - spec/cassettes/Shutterstock_Collection/find_converts_list_to_images.yml
384
+ - spec/cassettes/Shutterstock_Collection/find_finds_a_collection_given_an_id.yml
385
+ - spec/cassettes/Shutterstock_Collection/find_raises_error_for_invalid_collection_id.yml
386
+ - spec/cassettes/Shutterstock_Collection/find_removes_an_image.yml
387
+ - spec/cassettes/Shutterstock_Collection/list_returns_all_collections_for_the_current_user.yml
388
+ - spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_Image_new.yml
389
+ - spec/cassettes/Shutterstock_Collection/remove_image_removes_image_using_id.yml
390
+ - spec/cassettes/Shutterstock_Collection/update_changes_the_name_of_a_collection.yml
391
+ - spec/cassettes/Shutterstock_Collections/returns_all_collections_for_current_user.yml
392
+ - spec/cassettes/Shutterstock_Image/fill_fills_all_details_of_current_image.yml
393
+ - spec/cassettes/Shutterstock_Image/fills_all_details_of_current_image.yml
394
+ - spec/cassettes/Shutterstock_Image/find_places_image_data_into_correct_fields.yml
395
+ - spec/cassettes/Shutterstock_Image/find_places_more_image_data_into_correct_fields.yml
396
+ - spec/cassettes/Shutterstock_Image/find_returns_an_Image_object.yml
397
+ - spec/cassettes/Shutterstock_Image/finds_similar_images_given_an_image.yml
398
+ - spec/cassettes/Shutterstock_Image/returns_an_Image_object.yml
399
+ - spec/cassettes/Shutterstock_Image/returns_similar_images.yml
400
+ - spec/cassettes/Shutterstock_Image/search_searches_for_images_based_on_searchterm.yml
401
+ - spec/cassettes/Shutterstock_Image/search_searches_using_more_than_one_parameter.yml
402
+ - spec/cassettes/Shutterstock_Image/searches_for_images_based_on_searchterm.yml
403
+ - spec/cassettes/Shutterstock_Image/searches_using_more_than_one_parameter.yml
404
+ - spec/cassettes/Shutterstock_Image/similar_finds_similar_images_given_an_image.yml
405
+ - spec/cassettes/Shutterstock_Image/similar_returns_similar_images.yml
406
+ - spec/cassettes/Shutterstock_ImageAssets/find_calculates_fields_correctly.yml
407
+ - spec/cassettes/Shutterstock_ImageAssets/find_places_image_data_into_correct_fields.yml
408
+ - spec/cassettes/Shutterstock_Images/fill_fills_details_of_all_images_in_list_all_images_now_have_keywords.yml
409
+ - spec/cassettes/Shutterstock_Images/returns_similar_images.yml
410
+ - spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_error_if_requesting_an_image.yml
411
+ - spec/cassettes/Shutterstock_License/license_editorial_acknowledgement_returns_licenced_image_if_ed_ack_is_.yml
412
+ - spec/cassettes/Shutterstock_License/license_license_from_image_object_sends_editorial_acknowledgement_when.yml
413
+ - spec/cassettes/Shutterstock_License/license_license_from_image_object_using_found_subscription.yml
414
+ - spec/cassettes/Shutterstock_License/license_license_from_image_object_vector_image.yml
415
+ - spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images.yml
416
+ - spec/cassettes/Shutterstock_License/license_multiple_licenses_multiple_images_from_Image_new.yml
417
+ - spec/cassettes/Shutterstock_License/license_multiple_returns_error_in_Licenses_when_incorrect_image_used.yml
418
+ - spec/cassettes/Shutterstock_License/license_single_licencing_same_image_twice_does_not_give_error.yml
419
+ - spec/cassettes/Shutterstock_License/license_single_license_fails_when_subscription_doesn_t_allow.yml
420
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image.yml
421
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_Image_new.yml
422
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image_from_hash.yml
423
+ - spec/cassettes/Shutterstock_License/license_single_licenses_single_image_with_smaller_size.yml
424
+ - spec/cassettes/Shutterstock_License/license_single_licenses_vector_image.yml
425
+ - spec/cassettes/Shutterstock_License/license_single_licensing_same_image_twice_does_not_give_error.yml
426
+ - spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_image_used.yml
427
+ - spec/cassettes/Shutterstock_License/license_single_returns_error_when_incorrect_subscription_used.yml
428
+ - spec/cassettes/Shutterstock_Models/parses_params_correctly.yml
429
+ - spec/cassettes/Shutterstock_Models/returns_all_models_for_an_image.yml
430
+ - spec/cassettes/Shutterstock_Subscription/allows_image_size_download_correctly_finds_if_image_size_is_possi.yml
431
+ - spec/cassettes/Shutterstock_Subscription/new_parses_info_on_user_correctly.yml
432
+ - spec/cassettes/Shutterstock_Subscription/new_returns_a_subscription_for_current_user.yml
433
+ - spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_parses_info_correctly.yml
434
+ - spec/cassettes/Shutterstock_SubscriptionLicenseFormat/new_returns_a_subscription_license_format_for_curren.yml
435
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_expired_total_subscriptions.yml
436
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_active_returns_only_active_subscriptions.yml
437
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_downloads_left_only_subscriptions_with_downloads_l.yml
438
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_expired_returns_only_expired_subscriptions.yml
439
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_find_subscription_for_image_size_finds_subs_to_use.yml
440
+ - spec/cassettes/Shutterstock_Subscriptions/subscriptions_returns_all_subscriptions_for_current_user.yml
441
+ - spec/cassettes/Shutterstock_User/find_parses_info_on_user_correctly.yml
442
+ - spec/cassettes/Shutterstock_User/find_returns_object_for_current_user.yml
443
+ - spec/client/auth_spec.rb
444
+ - spec/client/categories_spec.rb
445
+ - spec/client/category_spec.rb
446
+ - spec/client/client_spec.rb
447
+ - spec/client/collection_spec.rb
448
+ - spec/client/collections_spec.rb
449
+ - spec/client/configuration_spec.rb
450
+ - spec/client/contributor_spec.rb
451
+ - spec/client/driver_spec.rb
452
+ - spec/client/image_assets_spec.rb
453
+ - spec/client/image_size_details_spec.rb
454
+ - spec/client/image_spec.rb
455
+ - spec/client/images_spec.rb
456
+ - spec/client/license_spec.rb
457
+ - spec/client/model_spec.rb
458
+ - spec/client/models_spec.rb
459
+ - spec/client/request_spec.rb
460
+ - spec/client/subscription_allotment_spec.rb
461
+ - spec/client/subscription_license_format_spec.rb
462
+ - spec/client/subscription_price_spec.rb
463
+ - spec/client/subscription_spec.rb
464
+ - spec/client/subscriptions_spec.rb
465
+ - spec/client/thumbnail_spec.rb
466
+ - spec/client/user_spec.rb
467
+ - spec/spec_helper.rb