chute 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +3 -2
- data/Gemfile.lock +50 -16
- data/{LICENSE.txt → LICENSE.md} +3 -1
- data/README.md +51 -19
- data/chute.gemspec +18 -11
- data/lib/chute.rb +1 -0
- data/lib/chute/configuration.rb +3 -1
- data/lib/chute/v2/albums.rb +10 -0
- data/lib/chute/v2/assets.rb +8 -3
- data/lib/chute/version.rb +2 -2
- data/spec/chute/client_spec.rb +1 -0
- data/spec/chute/v2/albums_spec.rb +25 -0
- data/spec/chute/v2/assets_spec.rb +23 -3
- data/spec/fixtures/chute_cassettes/albums/albums_move_copy_asset.yml +217 -0
- data/spec/fixtures/chute_cassettes/assets/assets_upload.yml +3867 -0
- data/spec/fixtures/files/test_image.jpg +0 -0
- data/spec/spec_helper.rb +2 -2
- data/spec/support/file_helpers.rb +5 -0
- metadata +28 -29
- data/VERSION +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjQ0MGVhMDdlODYyOTM3MjJmY2ZmZTdhMmE4ZDZkNDMyNjYxY2Q5OQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MzIzOTc0OGI0ZDEyOWY3YTI3N2IwZGY0YmFmM2FmNDI4MmM3ODAzYQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MjE4N2NiNzA0YWEwNTcxZDAwZTU5NDM3M2MwOTkzMmJhYmJiMWQ4MmZhOGQw
|
10
|
+
MmY5MWYxNmY1NjE2ZjA3NDgxYzZiZDYxNTdlOWVjYTJmZGRkMTc4YjNiYzFm
|
11
|
+
N2E5MzI5MzRlMmVjMGQ0MjY5M2YwYzdkMDUwMTUyNGNhMmQzMGI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ODAyOGU0ZjhmNDUxNTBhYTQzODk2YjhkNmQ2NjlhZTk4NmQ0ZDk1YTE0Mzc0
|
14
|
+
ZWQ5MmU5YzNlMTFiN2ExM2YyYWNjYmI1ODM2MDY2ZTZlY2JhY2VmNjI1NWU5
|
15
|
+
MWFiNmQzYjYwMDdhZjQ3ZmFjMzUyZDE4MTdmYWU4YTQ2Mzg4MDg=
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
gem 'httparty'
|
3
3
|
gem 'hashie'
|
4
|
+
gem 'rest-client'
|
4
5
|
|
5
6
|
# Add dependencies to develop your gem here.
|
6
7
|
# Include everything needed to run rake, tests, features, etc.
|
@@ -8,11 +9,11 @@ group :development do
|
|
8
9
|
gem "rspec", "~> 2.8.0"
|
9
10
|
gem "rdoc", "~> 3.12"
|
10
11
|
gem "bundler"
|
11
|
-
gem "jeweler", "~> 1.8.
|
12
|
+
gem "jeweler", "~> 1.8.6"
|
12
13
|
gem "simplecov"
|
13
14
|
end
|
14
15
|
|
15
16
|
group :test do
|
16
17
|
gem 'webmock'
|
17
|
-
gem 'vcr'
|
18
|
+
gem 'vcr' , "~> 2.5.0"
|
18
19
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,25 +1,57 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
addressable (2.3.
|
5
|
-
|
4
|
+
addressable (2.3.5)
|
5
|
+
builder (3.2.2)
|
6
|
+
crack (0.4.1)
|
7
|
+
safe_yaml (~> 0.9.0)
|
6
8
|
diff-lcs (1.1.3)
|
9
|
+
faraday (0.8.8)
|
10
|
+
multipart-post (~> 1.2.0)
|
7
11
|
git (1.2.5)
|
8
|
-
|
9
|
-
|
12
|
+
github_api (0.10.1)
|
13
|
+
addressable
|
14
|
+
faraday (~> 0.8.1)
|
15
|
+
hashie (>= 1.2)
|
16
|
+
multi_json (~> 1.4)
|
17
|
+
nokogiri (~> 1.5.2)
|
18
|
+
oauth2
|
19
|
+
hashie (2.0.5)
|
20
|
+
highline (1.6.19)
|
21
|
+
httparty (0.11.0)
|
10
22
|
multi_json (~> 1.0)
|
11
|
-
multi_xml
|
12
|
-
|
23
|
+
multi_xml (>= 0.5.2)
|
24
|
+
httpauth (0.2.0)
|
25
|
+
jeweler (1.8.6)
|
26
|
+
builder
|
13
27
|
bundler (~> 1.0)
|
14
28
|
git (>= 1.2.5)
|
29
|
+
github_api (= 0.10.1)
|
30
|
+
highline (>= 1.6.15)
|
31
|
+
nokogiri (= 1.5.10)
|
15
32
|
rake
|
16
33
|
rdoc
|
17
|
-
json (1.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
34
|
+
json (1.8.0)
|
35
|
+
jwt (0.1.8)
|
36
|
+
multi_json (>= 1.5)
|
37
|
+
mime-types (1.23)
|
38
|
+
multi_json (1.7.9)
|
39
|
+
multi_xml (0.5.5)
|
40
|
+
multipart-post (1.2.0)
|
41
|
+
nokogiri (1.5.10)
|
42
|
+
oauth2 (0.9.2)
|
43
|
+
faraday (~> 0.8)
|
44
|
+
httpauth (~> 0.2)
|
45
|
+
jwt (~> 0.1.4)
|
46
|
+
multi_json (~> 1.0)
|
47
|
+
multi_xml (~> 0.5)
|
48
|
+
rack (~> 1.2)
|
49
|
+
rack (1.5.2)
|
50
|
+
rake (10.1.0)
|
51
|
+
rdoc (3.12.2)
|
22
52
|
json (~> 1.4)
|
53
|
+
rest-client (1.6.7)
|
54
|
+
mime-types (>= 1.16)
|
23
55
|
rspec (2.8.0)
|
24
56
|
rspec-core (~> 2.8.0)
|
25
57
|
rspec-expectations (~> 2.8.0)
|
@@ -28,14 +60,15 @@ GEM
|
|
28
60
|
rspec-expectations (2.8.0)
|
29
61
|
diff-lcs (~> 1.1.2)
|
30
62
|
rspec-mocks (2.8.0)
|
63
|
+
safe_yaml (0.9.5)
|
31
64
|
simplecov (0.7.1)
|
32
65
|
multi_json (~> 1.0)
|
33
66
|
simplecov-html (~> 0.7.1)
|
34
67
|
simplecov-html (0.7.1)
|
35
|
-
vcr (2.
|
36
|
-
webmock (1.
|
68
|
+
vcr (2.5.0)
|
69
|
+
webmock (1.13.0)
|
37
70
|
addressable (>= 2.2.7)
|
38
|
-
crack (>= 0.
|
71
|
+
crack (>= 0.3.2)
|
39
72
|
|
40
73
|
PLATFORMS
|
41
74
|
ruby
|
@@ -44,9 +77,10 @@ DEPENDENCIES
|
|
44
77
|
bundler
|
45
78
|
hashie
|
46
79
|
httparty
|
47
|
-
jeweler (~> 1.8.
|
80
|
+
jeweler (~> 1.8.6)
|
48
81
|
rdoc (~> 3.12)
|
82
|
+
rest-client
|
49
83
|
rspec (~> 2.8.0)
|
50
84
|
simplecov
|
51
|
-
vcr
|
85
|
+
vcr (~> 2.5.0)
|
52
86
|
webmock
|
data/{LICENSE.txt → LICENSE.md}
RENAMED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2012-2013 Chute Corporation <hello@getchute.com>, http://getchute.com
|
2
4
|
|
3
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
6
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -1,29 +1,28 @@
|
|
1
|
-
|
2
|
-
==
|
1
|
+
# Chute API V2 wrapper gem
|
3
2
|
|
4
|
-
|
5
|
-
--
|
3
|
+
> Access [Chute API V2](https://api.getchute.com/v2) from Ruby.
|
6
4
|
|
7
|
-
to build and install the gem locally on your system use:
|
8
5
|
|
9
|
-
|
10
|
-
|
11
|
-
you can afterwards include it inside your rails app
|
6
|
+
## How to use
|
12
7
|
|
8
|
+
Install directly
|
13
9
|
|
14
|
-
|
15
|
-
|
10
|
+
```sh
|
11
|
+
gem install chute
|
12
|
+
```
|
16
13
|
|
17
|
-
|
14
|
+
or add to your Gemfile
|
18
15
|
|
16
|
+
```ruby
|
17
|
+
gem 'chute'
|
18
|
+
```
|
19
19
|
|
20
|
-
bundle exec rspec
|
21
20
|
|
21
|
+
### Configuration
|
22
22
|
|
23
|
-
|
24
|
-
--
|
23
|
+
Create `config/initializers/chute.rb` and set your credentials (you can get them from [apps.getchute.com](http://apps.getchute.com).
|
25
24
|
|
26
|
-
```
|
25
|
+
```ruby
|
27
26
|
Chute.configure do |config|
|
28
27
|
config.app_id = YOUR_APP_ID
|
29
28
|
config.app_secret = YOUR_APP_SECRET
|
@@ -32,15 +31,48 @@ end
|
|
32
31
|
```
|
33
32
|
|
34
33
|
|
34
|
+
### Usage
|
35
|
+
|
35
36
|
The parameters in the response are accessed as standard fields inside a class. Assuming `response` is the basic
|
36
|
-
object containing the complete response you can access the id of
|
37
|
+
object containing the complete response you can access the id of an element by
|
37
38
|
|
38
|
-
```
|
39
|
+
```ruby
|
39
40
|
response.data.id # if data is a single object
|
40
41
|
response.data[0].id # if data is an array
|
41
42
|
```
|
42
43
|
|
43
44
|
|
44
|
-
|
45
|
+
## Development
|
46
|
+
|
47
|
+
To build and install the gem locally on your system use:
|
48
|
+
|
49
|
+
rake install
|
50
|
+
|
51
|
+
you can afterwards include it inside your rails app
|
52
|
+
|
53
|
+
|
54
|
+
### Tests
|
55
|
+
|
56
|
+
To be able to run tests you'll first need to create an authorization file with the following contents and save it as `spec/support/authorization.rb`
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
shared_context "init credentials" do
|
60
|
+
before(:all) do
|
61
|
+
Chute.app_id = "508fc620018d162a070000d6" # this is an app designated for API testing
|
62
|
+
Chute.app_secret = "2ee285c24d8ffa83145aba8834f29ca1644b293a76a49db59a037e7301a26119"
|
63
|
+
Chute.access_token = "fe5d08d828c1d4562e5d2a7bbbb76e7dfa1fbc0932467a7a710bec66935df654"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
```
|
67
|
+
|
68
|
+
Now you can run tests using rspec
|
69
|
+
|
70
|
+
bundle exec rspec
|
71
|
+
|
72
|
+
|
73
|
+
Responses are recorded for reuse by VCR. If you need to re-run some of them remove the specific file from `spec/fixtures/`
|
74
|
+
|
75
|
+
|
76
|
+
## License
|
45
77
|
|
46
|
-
|
78
|
+
Copyright (c) 2012-2013 Chute Corporation. Released under the MIT License.
|
data/chute.gemspec
CHANGED
@@ -5,24 +5,24 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "chute"
|
8
|
-
s.version = "2.0
|
8
|
+
s.version = "2.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Darko Grozdanovski", "Chris Burkhart", "Petr Bela"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-08-12"
|
13
13
|
s.description = "wrapper for the API for getchute.com"
|
14
14
|
s.email = "support@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
|
-
"LICENSE.
|
16
|
+
"LICENSE.md",
|
17
17
|
"README.md"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
|
+
"CHANGELOG.md",
|
20
21
|
"Gemfile",
|
21
22
|
"Gemfile.lock",
|
22
|
-
"LICENSE.
|
23
|
+
"LICENSE.md",
|
23
24
|
"README.md",
|
24
25
|
"Rakefile",
|
25
|
-
"VERSION",
|
26
26
|
"chute.gemspec",
|
27
27
|
"lib/chute.rb",
|
28
28
|
"lib/chute/client.rb",
|
@@ -63,6 +63,7 @@ Gem::Specification.new do |s|
|
|
63
63
|
"spec/fixtures/chute_cassettes/albums/albums_import_assets.yml",
|
64
64
|
"spec/fixtures/chute_cassettes/albums/albums_import_assets_from_instagram_id.yml",
|
65
65
|
"spec/fixtures/chute_cassettes/albums/albums_list.yml",
|
66
|
+
"spec/fixtures/chute_cassettes/albums/albums_move_copy_asset.yml",
|
66
67
|
"spec/fixtures/chute_cassettes/albums/albums_stats.yml",
|
67
68
|
"spec/fixtures/chute_cassettes/albums/albums_update.yml",
|
68
69
|
"spec/fixtures/chute_cassettes/assets/assets_delete.yml",
|
@@ -71,6 +72,7 @@ Gem::Specification.new do |s|
|
|
71
72
|
"spec/fixtures/chute_cassettes/assets/assets_import.yml",
|
72
73
|
"spec/fixtures/chute_cassettes/assets/assets_list.yml",
|
73
74
|
"spec/fixtures/chute_cassettes/assets/assets_update.yml",
|
75
|
+
"spec/fixtures/chute_cassettes/assets/assets_upload.yml",
|
74
76
|
"spec/fixtures/chute_cassettes/comments/comments_create.yml",
|
75
77
|
"spec/fixtures/chute_cassettes/comments/comments_list.yml",
|
76
78
|
"spec/fixtures/chute_cassettes/flags/flags_methods.yml",
|
@@ -85,41 +87,46 @@ Gem::Specification.new do |s|
|
|
85
87
|
"spec/fixtures/chute_cassettes/users/users_get.yml",
|
86
88
|
"spec/fixtures/chute_cassettes/users/users_me.yml",
|
87
89
|
"spec/fixtures/chute_cassettes/votes/votes_methods.yml",
|
88
|
-
"spec/
|
90
|
+
"spec/fixtures/files/test_image.jpg",
|
91
|
+
"spec/spec_helper.rb",
|
92
|
+
"spec/support/file_helpers.rb"
|
89
93
|
]
|
90
94
|
s.homepage = "https://github.com/chute/chute-sdk-2"
|
91
95
|
s.licenses = ["MIT"]
|
92
96
|
s.require_paths = ["lib"]
|
93
|
-
s.rubygems_version = "
|
97
|
+
s.rubygems_version = "2.0.3"
|
94
98
|
s.summary = "getchute API wrapper"
|
95
99
|
|
96
100
|
if s.respond_to? :specification_version then
|
97
|
-
s.specification_version =
|
101
|
+
s.specification_version = 4
|
98
102
|
|
99
103
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
100
104
|
s.add_runtime_dependency(%q<httparty>, [">= 0"])
|
101
105
|
s.add_runtime_dependency(%q<hashie>, [">= 0"])
|
106
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 0"])
|
102
107
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
103
108
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
104
109
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
105
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.8.
|
110
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.6"])
|
106
111
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
107
112
|
else
|
108
113
|
s.add_dependency(%q<httparty>, [">= 0"])
|
109
114
|
s.add_dependency(%q<hashie>, [">= 0"])
|
115
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
110
116
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
111
117
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
112
118
|
s.add_dependency(%q<bundler>, [">= 0"])
|
113
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.
|
119
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.6"])
|
114
120
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
115
121
|
end
|
116
122
|
else
|
117
123
|
s.add_dependency(%q<httparty>, [">= 0"])
|
118
124
|
s.add_dependency(%q<hashie>, [">= 0"])
|
125
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
119
126
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
120
127
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
121
128
|
s.add_dependency(%q<bundler>, [">= 0"])
|
122
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.
|
129
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.6"])
|
123
130
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
124
131
|
end
|
125
132
|
end
|
data/lib/chute.rb
CHANGED
data/lib/chute/configuration.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
module Chute
|
2
2
|
module Configuration
|
3
3
|
|
4
|
-
VALID_CONNECTION_KEYS = [:api_endpoint, :auth_endpoint].freeze
|
4
|
+
VALID_CONNECTION_KEYS = [:api_endpoint, :auth_endpoint, :upload_endpoint].freeze
|
5
5
|
VALID_OPTIONS_KEYS = [:app_id, :app_secret, :access_token].freeze
|
6
6
|
VALID_CONFIG_KEYS = VALID_CONNECTION_KEYS + VALID_OPTIONS_KEYS
|
7
7
|
|
8
8
|
|
9
9
|
DEFAULT_API_ENDPOINT = 'https://api.getchute.com'
|
10
10
|
DEFAULT_AUTH_ENDPOINT = 'https://getchute.com/auth'
|
11
|
+
DEFAULT_UPLOAD_ENDPOINT = 'http://upload.getchute.com'
|
11
12
|
|
12
13
|
DEFAULT_APP_ID = 'app_id'
|
13
14
|
DEFAULT_APP_SECRET = 'app_secret'
|
@@ -30,6 +31,7 @@ module Chute
|
|
30
31
|
def reset
|
31
32
|
self.api_endpoint = DEFAULT_API_ENDPOINT
|
32
33
|
self.auth_endpoint = DEFAULT_AUTH_ENDPOINT
|
34
|
+
self.upload_endpoint = DEFAULT_UPLOAD_ENDPOINT
|
33
35
|
|
34
36
|
self.app_id = DEFAULT_APP_ID
|
35
37
|
self.app_secret = DEFAULT_APP_SECRET
|
data/lib/chute/v2/albums.rb
CHANGED
@@ -59,6 +59,16 @@ module Chute
|
|
59
59
|
Chute::Client.post("/v2/albums/#{album_id}/remove_assets",:asset_ids => asset_ids)
|
60
60
|
end
|
61
61
|
|
62
|
+
# Move asset from one album to another, preserving all asset's metadata
|
63
|
+
def move_asset(album_id, asset_id, to_album)
|
64
|
+
Chute::Client.post("/v2/albums/#{album_id}/assets/#{asset_id}/move/#{to_album}")
|
65
|
+
end
|
66
|
+
|
67
|
+
# Copy asset from one album to another, carrying over all asset's metadata
|
68
|
+
def copy_asset(album_id, asset_id, to_album)
|
69
|
+
Chute::Client.post("/v2/albums/#{album_id}/assets/#{asset_id}/copy/#{to_album}")
|
70
|
+
end
|
71
|
+
|
62
72
|
end
|
63
73
|
end
|
64
74
|
end
|
data/lib/chute/v2/assets.rb
CHANGED
@@ -27,9 +27,14 @@ module Chute
|
|
27
27
|
Chute::Client.get("/v2/assets/#{id}/geo")
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
def upload(albumId, f)
|
31
|
+
response = RestClient::Request.execute(:url => "#{Chute.upload_endpoint}/v2/albums/#{albumId}/assets/upload", :method => :post,
|
32
|
+
:payload => {
|
33
|
+
:multipart => true,
|
34
|
+
:filedata => f
|
35
|
+
},:headers => {"Authorization" => "Bearer #{Chute.access_token}"}
|
36
|
+
)
|
37
|
+
Chute::Connection.parse(JSON.parse(response.body))
|
33
38
|
end
|
34
39
|
|
35
40
|
def import(urls, shortcuts)
|
data/lib/chute/version.rb
CHANGED
data/spec/chute/client_spec.rb
CHANGED
@@ -192,6 +192,31 @@ describe Chute::V2::Albums do
|
|
192
192
|
|
193
193
|
end
|
194
194
|
|
195
|
+
describe "POST move and copy asset" do
|
196
|
+
|
197
|
+
let(:id) { Chute::V2::Albums.create({:name => "Created Album"}).data.id }
|
198
|
+
let(:to_album) { Chute::V2::Albums.create({:name => "Created Album"}).data.id }
|
199
|
+
|
200
|
+
before do
|
201
|
+
VCR.insert_cassette 'albums/albums_move_copy_asset', :record => :new_episodes
|
202
|
+
end
|
203
|
+
after do
|
204
|
+
VCR.eject_cassette
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should be able to move asset to another album" do
|
208
|
+
response = Chute::V2::Albums.move_asset(id, 8765443, to_album)
|
209
|
+
response.should be_true
|
210
|
+
end
|
211
|
+
|
212
|
+
|
213
|
+
it "should be able to copy asset to another album" do
|
214
|
+
response = Chute::V2::Albums.copy_asset(id, 3452424, to_album)
|
215
|
+
response.should be_true
|
216
|
+
end
|
217
|
+
|
218
|
+
end
|
219
|
+
|
195
220
|
describe "POST to import Assets" do
|
196
221
|
|
197
222
|
let(:id) { Chute::V2::Albums.create({:name => "Created Album"}).data.id }
|