unsplash 2.0.1 → 2.1.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
  SHA256:
3
- metadata.gz: a89f4db0c073875c05c83221e2ff912ff8b414c316b55e6166fb33fb552b84da
4
- data.tar.gz: cf552d1afd53ff88378bbdacdfc4ec58af9fb006587360c2f02e759408393660
3
+ metadata.gz: 02a138e4c3f28999bbac53d0c82eed72a938ead58fb95fb4ec86236f6a6aa8a3
4
+ data.tar.gz: a0dd3304cdb088fd8859dfde19a0bf7722fd6444eec0e4699aeb25ebfda41492
5
5
  SHA512:
6
- metadata.gz: dea3bf58a7a162fe55b1fb169da19c3efc365ca1f0eff1157589f0e3a63cf28c4240fb83ab2e0734d598c6d76abb2fd045bf6f65a9cd9b4d70391347d8432380
7
- data.tar.gz: 602969d85b3584fc6fc0b9422b8e7240665c71cd2cddeaaa566015a6faf13d2909d0070e6dc470ae1f17b22468d0ec3da776c350e60d95470fee81407c91b891
6
+ metadata.gz: 15db231f6a97b37af4d8448c02206245a9230ff5c1d7aaf52bf2140c010c94fd744cee4eb9ee9db09f65d72810f869053b906ef5e38ecba51d6523c4f268d4c7
7
+ data.tar.gz: fb1437ae056f0fb62ea7060c66a7abc66b0810904db29c9c886904b0aa4ef6ae6dfea434a9e58bbcac3a9210f2c607a605c1e8a914552967a8ffc8a04cd4386d
@@ -7,6 +7,7 @@ module Unsplash # :nodoc:
7
7
  # @param attrs [Hash]
8
8
  def initialize(attrs = {})
9
9
  @attributes = OpenStruct.new(attrs)
10
+ add_utm_to_links
10
11
  end
11
12
 
12
13
  # (Re)load full object details from Unsplash.
@@ -39,6 +40,25 @@ module Unsplash # :nodoc:
39
40
  self.class.connection
40
41
  end
41
42
 
43
+ # @private
44
+ def add_utm_params(url)
45
+ uri = URI.parse(url)
46
+
47
+ qs = Rack::Utils.parse_nested_query(uri.query)
48
+ qs.merge!(connection.utm_params)
49
+
50
+ uri.query = Rack::Utils.build_query(qs)
51
+
52
+ uri.to_s
53
+ end
54
+
55
+ # @private
56
+ def add_utm_to_links
57
+ (@attributes["links"] || {}).each do |key, url|
58
+ @attributes["links"][key] = add_utm_params(url)
59
+ end
60
+ end
61
+
42
62
  class << self
43
63
  # The connection object being used to communicate with Unsplash.
44
64
  # @return [Unsplash::Connection] the connection
@@ -94,6 +94,14 @@ module Unsplash #:nodoc:
94
94
  request :delete, path, params
95
95
  end
96
96
 
97
+ def utm_params
98
+ {
99
+ "utm_source" => Unsplash.configuration.utm_source || "api_app",
100
+ "utm_medium" => "referral",
101
+ "utm_campaign" => "api-credit"
102
+ }
103
+ end
104
+
97
105
  private
98
106
 
99
107
  def request(verb, path, params = {})
@@ -102,7 +110,7 @@ module Unsplash #:nodoc:
102
110
  params.merge!(utm_params)
103
111
 
104
112
  if !Unsplash.configuration.utm_source
105
- url = "https://community.unsplash.com/developersblog/unsplash-api-guidelines"
113
+ url = "https://help.unsplash.com/api-guidelines/unsplash-api-guidelines"
106
114
  Unsplash.configuration.logger.warn "utm_source is required as part of API Terms: #{url}"
107
115
  end
108
116
 
@@ -150,14 +158,6 @@ module Unsplash #:nodoc:
150
158
  { "Authorization" => "Client-ID #{@application_access_key}" }
151
159
  end
152
160
 
153
- def utm_params
154
- {
155
- utm_source: Unsplash.configuration.utm_source || "api_app",
156
- utm_medium: "referral",
157
- utm_campaign: "api-credit"
158
- }
159
- end
160
-
161
161
  def refresh_token!
162
162
  return if !@oauth_token.expired?
163
163
 
@@ -3,6 +3,11 @@ module Unsplash # :nodoc:
3
3
  # Unsplash Photo operations.
4
4
  class Photo < Client
5
5
 
6
+ def initialize(attrs)
7
+ super
8
+ add_utm_to_urls
9
+ end
10
+
6
11
  # Like a photo for the current user.
7
12
  # @return [Boolean] True if successful. Will raise on error.
8
13
  def like!
@@ -23,6 +28,12 @@ module Unsplash # :nodoc:
23
28
  connection.get(links.download_location)["url"]
24
29
  end
25
30
 
31
+ def add_utm_to_urls
32
+ (@attributes["urls"] || {}).each do |key, url|
33
+ @attributes["urls"][key] = add_utm_params(url)
34
+ end
35
+ end
36
+
26
37
  class << self
27
38
 
28
39
  # Get a photo. Can be cropped or resized using the optional parameters.
@@ -35,7 +46,7 @@ module Unsplash # :nodoc:
35
46
  end
36
47
 
37
48
  # Get a random photo or set of photos. The photo selection pool can be narrowed using
38
- # a combination of optional parameters. Can also optionally specify a custom image size.
49
+ # a combination of optional parameters.
39
50
  # @param count [Integer] Number of photos required. Default=1, Max=30
40
51
  # @param featured [Boolean] Limit selection to featured photos.
41
52
  # @param user [String] Limit selection to given User's ID.
@@ -44,6 +55,8 @@ module Unsplash # :nodoc:
44
55
  # @return [Unsplash::Photo] An Unsplash Photo if count parameter is omitted
45
56
  # @return [Array] An array of Unsplash Photos if the count parameter is specified. An array is returned even if count is 1
46
57
  def random(count: nil, collections: nil, featured: nil, user: nil, query: nil, orientation: nil)
58
+ Unsplash.configuration.logger.warn "You cannot combine 'collections' and 'query' parameters. 'query' will be ignored." if collections && query
59
+
47
60
  params = {
48
61
  collections: (collections && collections.join(",")),
49
62
  featured: featured,
@@ -100,7 +113,6 @@ module Unsplash # :nodoc:
100
113
  def parse_list(json)
101
114
  JSON.parse(json).map { |photo| new photo }
102
115
  end
103
-
104
116
  end
105
117
  end
106
118
  end
@@ -88,6 +88,5 @@ module Unsplash # :nodoc:
88
88
  Unsplash::Collection.new collection.to_hash
89
89
  end
90
90
  end
91
-
92
91
  end
93
92
  end
@@ -1,4 +1,4 @@
1
1
  module Unsplash # :nodoc:
2
2
  # :nodoc:
3
- VERSION = "2.0.1"
3
+ VERSION = "2.1.0"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unsplash
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Klaassen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-16 00:00:00.000000000 Z
11
+ date: 2019-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty