unsplash 1.3.1 → 1.4.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 +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +2 -1
- data/README.md +5 -5
- data/lib/unsplash/client.rb +4 -3
- data/lib/unsplash/collection.rb +13 -1
- data/lib/unsplash/configuration.rb +2 -0
- data/lib/unsplash/connection.rb +5 -1
- data/lib/unsplash/photo.rb +41 -19
- data/lib/unsplash/search.rb +19 -0
- data/lib/unsplash/user.rb +44 -11
- data/lib/unsplash/version.rb +1 -1
- data/lib/unsplash.rb +1 -0
- data/unsplash.gemspec +2 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e502e452a28e94ceccf4bdcb5adc9d9bef9e630
|
4
|
+
data.tar.gz: 8fe977a313d140877a63ac23fdedeeff0b839be0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 446d3c4363e234c11d7c6758b050df3363ed33a42dd5b7cc44116550d3d34adc43a4d75178be0295f1517e9675e88bd0d127d7a17005b8f7b2919a2fa233d31d
|
7
|
+
data.tar.gz: c1ae6a56978d8d4c0a7fad854522cf4dbbb944d379a1e5b4209eadec0f12d07c776dc51fa7d715cda938cb0ef1ff0c67b62b70821885fac24610eb22f66a7063
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.3.0
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# unsplash_rb
|
2
2
|
|
3
|
-
[
|
3
|
+
[](https://travis-ci.org/unsplash/unsplash_rb)
|
4
|
+
[](https://coveralls.io/github/unsplash/unsplash_rb?branch=master)
|
4
5
|
|
5
6
|
A ruby client for [the Unsplash API](https://unsplash.com/documentation).
|
6
7
|
|
@@ -37,8 +38,7 @@ end
|
|
37
38
|
|
38
39
|
### Public-scope actions
|
39
40
|
|
40
|
-
If you are *only* making public requests (i.e. nothing requiring a specific logged-in user,
|
41
|
-
for example photo uploads or private user details), then you're ready to go!
|
41
|
+
If you are *only* making public requests (i.e. nothing requiring a specific logged-in user, for example liking photos or accessing private user details), then you're ready to go!
|
42
42
|
|
43
43
|
Looking for details of a specific photo? Find it by ID:
|
44
44
|
|
@@ -52,7 +52,7 @@ Want a bunch of pictures of cats? You're on the internet; of course you do.
|
|
52
52
|
search_results = Unsplash::Photo.search("cats")
|
53
53
|
```
|
54
54
|
|
55
|
-
For a complete list of available actions, see our [documentation details](http://www.rubydoc.info/github/
|
55
|
+
For a complete list of available actions, see our [documentation details](http://www.rubydoc.info/github/unsplash/unsplash_rb/).
|
56
56
|
|
57
57
|
### User Authorization
|
58
58
|
|
@@ -88,7 +88,7 @@ To install this gem onto your local machine, run `bundle exec rake install`.
|
|
88
88
|
|
89
89
|
## Contributing
|
90
90
|
|
91
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
91
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/unsplash/unsplash_rb. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
92
92
|
|
93
93
|
|
94
94
|
## License
|
data/lib/unsplash/client.rb
CHANGED
@@ -4,7 +4,7 @@ module Unsplash # :nodoc:
|
|
4
4
|
class Client
|
5
5
|
|
6
6
|
# Build an Unsplash object with the given attributes.
|
7
|
-
# @param attrs [Hash]
|
7
|
+
# @param attrs [Hash]
|
8
8
|
def initialize(attrs = {})
|
9
9
|
@attributes = OpenStruct.new(attrs)
|
10
10
|
end
|
@@ -23,7 +23,8 @@ module Unsplash # :nodoc:
|
|
23
23
|
|
24
24
|
# @private
|
25
25
|
def method_missing(method, *args, &block)
|
26
|
-
@attributes.send(method, *args, &block)
|
26
|
+
attribute = @attributes.send(method, *args, &block)
|
27
|
+
attribute.is_a?(Hash) ? Client.new(attribute) : attribute
|
27
28
|
end
|
28
29
|
|
29
30
|
# The connection object being used to communicate with Unsplash.
|
@@ -32,7 +33,7 @@ module Unsplash # :nodoc:
|
|
32
33
|
self.class.connection
|
33
34
|
end
|
34
35
|
|
35
|
-
class << self
|
36
|
+
class << self
|
36
37
|
# The connection object being used to communicate with Unsplash.
|
37
38
|
# @return [Unsplash::Connection] the connection
|
38
39
|
def connection
|
data/lib/unsplash/collection.rb
CHANGED
@@ -52,6 +52,18 @@ module Unsplash # :nodoc:
|
|
52
52
|
Unsplash::Collection.new JSON.parse(connection.post("/collections", params).body)
|
53
53
|
end
|
54
54
|
|
55
|
+
# Get a single page of collection results for a query.
|
56
|
+
# @param query [String] Keywords to search for.
|
57
|
+
# @param page [Integer] Which page of search results to return.
|
58
|
+
# @return [Array] a list of +Unsplash::Collection+ objects.
|
59
|
+
def search(query, page = 1)
|
60
|
+
params = {
|
61
|
+
query: query,
|
62
|
+
page: page
|
63
|
+
}
|
64
|
+
Unsplash::Search.search("/search/collections", self, params)
|
65
|
+
end
|
66
|
+
|
55
67
|
end
|
56
68
|
|
57
69
|
def initialize(options = {})
|
@@ -114,4 +126,4 @@ module Unsplash # :nodoc:
|
|
114
126
|
end
|
115
127
|
|
116
128
|
end
|
117
|
-
end
|
129
|
+
end
|
@@ -3,10 +3,12 @@ module Unsplash # :nodoc:
|
|
3
3
|
attr_accessor :application_id
|
4
4
|
attr_accessor :application_secret
|
5
5
|
attr_accessor :application_redirect_uri
|
6
|
+
attr_accessor :logger
|
6
7
|
attr_writer :test
|
7
8
|
|
8
9
|
def initialize
|
9
10
|
@test = true
|
11
|
+
@logger = Logger.new(STDOUT)
|
10
12
|
end
|
11
13
|
|
12
14
|
def test?
|
data/lib/unsplash/connection.rb
CHANGED
@@ -93,10 +93,14 @@ module Unsplash #:nodoc:
|
|
93
93
|
param_key = verb == :post ? :body : :params
|
94
94
|
@oauth_token.public_send(verb, @api_base_uri + path, param_key => params, headers: headers)
|
95
95
|
|
96
|
-
else
|
96
|
+
else
|
97
97
|
self.class.public_send verb, path, query: params, headers: public_auth_header
|
98
98
|
end
|
99
99
|
|
100
|
+
if response.headers["Warning"]
|
101
|
+
Unsplash.configuration.logger.warn response.headers["Warning"]
|
102
|
+
end
|
103
|
+
|
100
104
|
status_code = response.respond_to?(:status) ? response.status : response.code
|
101
105
|
|
102
106
|
if !(200..299).include?(status_code)
|
data/lib/unsplash/photo.rb
CHANGED
@@ -36,16 +36,19 @@ module Unsplash # :nodoc:
|
|
36
36
|
photo
|
37
37
|
end
|
38
38
|
|
39
|
-
# Get a random photo. The photo selection pool can be narrowed using
|
39
|
+
# Get a random photo or set of photos. The photo selection pool can be narrowed using
|
40
40
|
# a combination of optional parameters. Can also optionally specify a custom image size.
|
41
|
+
# @param count [Integer] Number of photos required. Default=1, Max=30
|
41
42
|
# @param categories [Array] Limit selection to given category ID's.
|
42
43
|
# @param featured [Boolean] Limit selection to featured photos.
|
43
44
|
# @param user [String] Limit selection to given User's ID.
|
44
45
|
# @param query [String] Limit selection to given search query.
|
45
46
|
# @param width [Integer] Width of customized version of the photo.
|
46
47
|
# @param height [Integer] Height of the customized version of the photo.
|
47
|
-
# @
|
48
|
-
|
48
|
+
# @param orientation [String] Filter by orientation of the photo. Valid values are landscape, portrait, and squarish.
|
49
|
+
# @return [Unsplash::Photo] An Unsplash Photo if count parameter is omitted
|
50
|
+
# @return [Array] An array of Unsplash Photos if the count parameter is specified. An array is returned even if count is 1
|
51
|
+
def random(count: nil,categories: nil, collections: nil, featured: nil, user: nil, query: nil, width: nil, height: nil, orientation: nil)
|
49
52
|
params = {
|
50
53
|
category: (categories && categories.join(",")),
|
51
54
|
collections: (collections && collections.join(",")),
|
@@ -53,30 +56,37 @@ module Unsplash # :nodoc:
|
|
53
56
|
username: user,
|
54
57
|
query: query,
|
55
58
|
w: width,
|
56
|
-
h: height
|
59
|
+
h: height,
|
60
|
+
orientation: orientation
|
57
61
|
}.select { |k,v| v }
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
if count
|
63
|
+
params[:count] = count
|
64
|
+
photos = parse_list connection.get("/photos/random/", params).body
|
65
|
+
photos.map { |photo|
|
66
|
+
photo.user = Unsplash::User.new photo[:user]
|
67
|
+
photo
|
68
|
+
}
|
69
|
+
else
|
70
|
+
photo = Unsplash::Photo.new JSON.parse(connection.get("/photos/random", params).body)
|
71
|
+
photo.user = Unsplash::User.new photo.user
|
72
|
+
photo
|
73
|
+
end
|
62
74
|
end
|
63
75
|
|
64
76
|
# Search for photos by keyword.
|
65
77
|
# @param query [String] Keywords to search for.
|
66
78
|
# @param page [Integer] Which page of search results to return.
|
67
|
-
|
68
|
-
def search(query, page = 1, per_page = 10)
|
79
|
+
def search(query, page = 1)
|
69
80
|
params = {
|
70
81
|
query: query,
|
71
|
-
page: page
|
72
|
-
per_page: per_page
|
82
|
+
page: page
|
73
83
|
}
|
74
|
-
|
84
|
+
Unsplash::Search.search("/search/photos", self, params)
|
75
85
|
end
|
76
86
|
|
77
87
|
# Get a list of all photos.
|
78
88
|
# @param page [Integer] Which page of search results to return.
|
79
|
-
# @param per_page [Integer] The number of search results per page.
|
89
|
+
# @param per_page [Integer] The number of search results per page.
|
80
90
|
# @return [Array] A single page of +Unsplash::Photo+ search results.
|
81
91
|
def all(page = 1, per_page = 10)
|
82
92
|
params = {
|
@@ -86,14 +96,26 @@ module Unsplash # :nodoc:
|
|
86
96
|
parse_list connection.get("/photos/", params).body
|
87
97
|
end
|
88
98
|
|
99
|
+
# Get a single page from the list of the curated photos (front-page’s photos).
|
100
|
+
# @param page [Integer] Which page of search results to return.
|
101
|
+
# @param per_page [Integer] The number of search results per page.
|
102
|
+
# @param order_by [String] How to sort the photos.
|
103
|
+
# @return [Array] A single page of +Unsplash::Photo+ search results.
|
104
|
+
def curated(page = 1, per_page = 10, order_by = "popular")
|
105
|
+
params = {
|
106
|
+
page: page,
|
107
|
+
per_page: per_page,
|
108
|
+
order_by: order_by
|
109
|
+
}
|
110
|
+
parse_list connection.get("/photos/curated", params).body
|
111
|
+
end
|
112
|
+
|
89
113
|
# Upload a photo on behalf of the current user.
|
90
114
|
# @param filepath [String] The local path of the image file to upload.
|
91
115
|
# @return [Unsplash::Photo] The uploaded photo.
|
116
|
+
# <b>DEPRECATED</b>
|
92
117
|
def create(filepath)
|
93
|
-
|
94
|
-
photo = Unsplash::Photo.new JSON.parse(connection.post("/photos", photo: file).body)
|
95
|
-
photo.user = Unsplash::User.new photo.user
|
96
|
-
photo
|
118
|
+
raise Unsplash::Error.new "API photo-upload endpoint has been deprecated and removed."
|
97
119
|
end
|
98
120
|
|
99
121
|
private
|
@@ -104,4 +126,4 @@ module Unsplash # :nodoc:
|
|
104
126
|
|
105
127
|
end
|
106
128
|
end
|
107
|
-
end
|
129
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Unsplash # :nodoc:
|
2
|
+
|
3
|
+
# Unsplash Search operations
|
4
|
+
class Search < Client
|
5
|
+
class << self
|
6
|
+
# Helper class to facilitate search on multiple classes
|
7
|
+
# @param url [String] Url to be searched into
|
8
|
+
# @param klass [Class] Class to instantiate the contents with
|
9
|
+
# @param params [Hash] Params for the search
|
10
|
+
def search(url, klass, params)
|
11
|
+
list = JSON.parse(connection.get(url, params).body)
|
12
|
+
|
13
|
+
list["results"].map do |content|
|
14
|
+
klass.new content.to_hash
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/unsplash/user.rb
CHANGED
@@ -25,30 +25,63 @@ module Unsplash # nodoc:
|
|
25
25
|
Unsplash::User.new JSON.parse(connection.put("/me", params).body)
|
26
26
|
end
|
27
27
|
|
28
|
+
# Get a single page of user results for a query.
|
29
|
+
# @param query [String] Keywords to search for.
|
30
|
+
# @param page [Integer] Which page of search results to return.
|
31
|
+
# @return [Array] a list of +Unsplash::User+ objects.
|
32
|
+
def search(query, page = 1)
|
33
|
+
params = {
|
34
|
+
query: query,
|
35
|
+
page: page
|
36
|
+
}
|
37
|
+
Unsplash::Search.search("/search/users", self, params)
|
38
|
+
end
|
39
|
+
|
28
40
|
end
|
29
41
|
|
30
42
|
# Get a list of photos uploaded by the user.
|
31
|
-
# @
|
32
|
-
|
33
|
-
|
43
|
+
# @param page [Integer] Which page of results to return.
|
44
|
+
# @param per_page [Integer] The number of results per page.
|
45
|
+
# @return [Array] a list of +Unsplash::Photo+ objects.
|
46
|
+
def photos(page = 1, per_page = 10)
|
47
|
+
params = {
|
48
|
+
page: page,
|
49
|
+
per_page: per_page
|
50
|
+
}
|
51
|
+
|
52
|
+
list = JSON.parse(connection.get("/users/#{username}/photos", params).body)
|
34
53
|
list.map do |photo|
|
35
54
|
Unsplash::Photo.new photo.to_hash
|
36
55
|
end
|
37
56
|
end
|
38
57
|
|
39
58
|
# Get a list of photos liked by the user.
|
40
|
-
# @
|
41
|
-
|
42
|
-
|
59
|
+
# @param page [Integer] Which page of results to return.
|
60
|
+
# @param per_page [Integer] The number of results per page.
|
61
|
+
# @return [Array] a list of +Unsplash::Photo+ objects.
|
62
|
+
def likes(page = 1, per_page = 10)
|
63
|
+
params = {
|
64
|
+
page: page,
|
65
|
+
per_page: per_page
|
66
|
+
}
|
67
|
+
|
68
|
+
list = JSON.parse(connection.get("/users/#{username}/likes", params).body)
|
43
69
|
list.map do |photo|
|
44
70
|
Unsplash::Photo.new photo.to_hash
|
45
71
|
end
|
46
72
|
end
|
47
73
|
|
48
|
-
# Get a list of
|
49
|
-
# @
|
50
|
-
|
51
|
-
|
74
|
+
# Get a list of collections created by the user.
|
75
|
+
# @param page [Integer] Which page of results to return.
|
76
|
+
# @param per_page [Integer] The number of results per page.
|
77
|
+
# @return [Array] a list of +Unsplash::Collection+ objects.
|
78
|
+
def collections(page = 1, per_page = 10)
|
79
|
+
params = {
|
80
|
+
page: page,
|
81
|
+
per_page: per_page
|
82
|
+
}
|
83
|
+
|
84
|
+
list = JSON.parse(connection.get("/users/#{username}/collections", params).body)
|
52
85
|
list.map do |collection|
|
53
86
|
Unsplash::Collection.new collection.to_hash
|
54
87
|
end
|
@@ -56,4 +89,4 @@ module Unsplash # nodoc:
|
|
56
89
|
|
57
90
|
end
|
58
91
|
|
59
|
-
end
|
92
|
+
end
|
data/lib/unsplash/version.rb
CHANGED
data/lib/unsplash.rb
CHANGED
data/unsplash.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "unsplash"
|
8
8
|
spec.version = Unsplash::VERSION
|
9
9
|
spec.authors = ["Aaron Klaassen"]
|
10
|
-
spec.email = ["aaron@
|
10
|
+
spec.email = ["aaron@unsplash.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Ruby wrapper for the Unsplash API.}
|
13
13
|
spec.homepage = "https://github.com/unsplash/unsplash_rb"
|
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency "vcr", "~> 2.9.3"
|
30
30
|
spec.add_development_dependency "webmock", "~> 1.20.4"
|
31
31
|
spec.add_development_dependency "pry"
|
32
|
+
spec.add_development_dependency "coveralls", '~> 0.8.12'
|
32
33
|
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: 1.
|
4
|
+
version: 1.4.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: 2016-
|
11
|
+
date: 2016-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -108,9 +108,23 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: coveralls
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.8.12
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.8.12
|
111
125
|
description:
|
112
126
|
email:
|
113
|
-
- aaron@
|
127
|
+
- aaron@unsplash.com
|
114
128
|
executables: []
|
115
129
|
extensions: []
|
116
130
|
extra_rdoc_files: []
|
@@ -136,6 +150,7 @@ files:
|
|
136
150
|
- lib/unsplash/curated_batch.rb
|
137
151
|
- lib/unsplash/errors.rb
|
138
152
|
- lib/unsplash/photo.rb
|
153
|
+
- lib/unsplash/search.rb
|
139
154
|
- lib/unsplash/stats.rb
|
140
155
|
- lib/unsplash/user.rb
|
141
156
|
- lib/unsplash/version.rb
|
@@ -160,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
175
|
version: '0'
|
161
176
|
requirements: []
|
162
177
|
rubyforge_project:
|
163
|
-
rubygems_version: 2.
|
178
|
+
rubygems_version: 2.5.1
|
164
179
|
signing_key:
|
165
180
|
specification_version: 4
|
166
181
|
summary: Ruby wrapper for the Unsplash API.
|