putio-ruby 0.1.1
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 +15 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +42 -0
- data/Rakefile +15 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/putio-ruby.rb +29 -0
- data/lib/putio-ruby/api/client.rb +17 -0
- data/lib/putio-ruby/api/object.rb +45 -0
- data/lib/putio-ruby/errors.rb +6 -0
- data/lib/putio-ruby/file.rb +22 -0
- data/lib/putio-ruby/middleware/oauth_token.rb +13 -0
- data/lib/putio-ruby/middleware/parse.rb +17 -0
- data/lib/putio-ruby/transfer.rb +22 -0
- data/lib/putio-ruby/version.rb +3 -0
- data/putio-ruby.gemspec +30 -0
- metadata +179 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODNiNWNkNjIxZWI1NmY3ZWEyMmQzNDhlNDVjNGMwNmZkNDFmMjdjMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MTI4MDUxOTgxN2JkYTFmOTE0ODlkNDY5NGJjZWNhYWI2ODIwODUzMw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OTRhZDE3MWY3YTJhMmRmMjU4NWMyODBhNjkxNjUyYWRiMjk4NTU1YmU3NWRm
|
10
|
+
OTBjYzA0ZmVlYzUwZTcxMDJkMzZkYmM5Y2U1YTlhNTBlMTA3OTRlMTA0Yjgx
|
11
|
+
YjFlYTc1YjJjMDU0ZDJhODk1NjNjMDVlOTE5YTAyM2ZiOTM5NmU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MzgzNjMyMzUyYTNkOGNlYWUwMTljZDE4ODlhYjJhOWU3ZGM0ZDBhNzE3NjU4
|
14
|
+
NTM1Mjg4Y2Y0MGJmNDAyOTQyODVkOTFjYmUxYmU0YmE2MmQ2ZjM3M2M0ZDM3
|
15
|
+
ODlhZTE5NzcwYzU3MTc0YWZhYWZhZDJiNzdiZTllYjkxZjliNWM=
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# putio-ruby
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/putio-ruby)
|
4
|
+
[](https://travis-ci.org/bloxsom/putio-ruby)
|
5
|
+
[](https://codeclimate.com/github/bloxsom/putio-ruby)
|
6
|
+
[](https://codeclimate.com/github/bloxsom/putio-ruby/coverage)
|
7
|
+
|
8
|
+
putio-ruby is a simple gem for communicating with the Put.io REST API. Currently supports just a handful of endpoints for Files and Transfers.
|
9
|
+
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add the gem to your Gemfile:
|
14
|
+
|
15
|
+
```
|
16
|
+
gem 'putio-ruby'
|
17
|
+
```
|
18
|
+
|
19
|
+
And then
|
20
|
+
|
21
|
+
$ bundle install
|
22
|
+
|
23
|
+
Or install it yourself as:
|
24
|
+
|
25
|
+
$ gem install putio-ruby
|
26
|
+
|
27
|
+
## Usage
|
28
|
+
|
29
|
+
First configure the gem to use your oauth token (See [instructions](https://put.io/v2/docs/gettingstarted.html#sign-up) for generating a token)
|
30
|
+
|
31
|
+
Putio.configure :oauth_token => YOUR_OAUTH_TOKEN
|
32
|
+
|
33
|
+
Then use it to query Put.io
|
34
|
+
|
35
|
+
Putio::File.list
|
36
|
+
Putio::File.get(1234)
|
37
|
+
Putio::File.get(1234).delete
|
38
|
+
Putio::File.get(1234).download_url
|
39
|
+
|
40
|
+
Putio::Transfer.list
|
41
|
+
Putio::Transfer.get(1234)
|
42
|
+
Putio::Transfer.add("http://some_url.com")
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "putio/ruby"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/lib/putio-ruby.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require "putio-ruby/version"
|
2
|
+
|
3
|
+
require "multi_json"
|
4
|
+
require "faraday"
|
5
|
+
require "active_support"
|
6
|
+
require "active_support/inflector"
|
7
|
+
require "active_support/core_ext/hash"
|
8
|
+
|
9
|
+
require "putio-ruby/middleware/parse"
|
10
|
+
require "putio-ruby/middleware/oauth_token"
|
11
|
+
|
12
|
+
require "putio-ruby/api/client"
|
13
|
+
require "putio-ruby/api/object"
|
14
|
+
|
15
|
+
require "putio-ruby/file"
|
16
|
+
require "putio-ruby/transfer"
|
17
|
+
|
18
|
+
require "putio-ruby/errors"
|
19
|
+
|
20
|
+
module Putio
|
21
|
+
def self.configure(args)
|
22
|
+
@oauth_token = args[:oauth_token]
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.oauth_token
|
26
|
+
@oauth_token
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Putio
|
2
|
+
module Api
|
3
|
+
module Client
|
4
|
+
def client
|
5
|
+
@client ||= Faraday.new :url => "https://api.put.io/v2/" do |connection|
|
6
|
+
# Request
|
7
|
+
connection.use Putio::Middleware::OauthToken
|
8
|
+
connection.request :url_encoded
|
9
|
+
|
10
|
+
# Response
|
11
|
+
connection.use Putio::Middleware::Parse
|
12
|
+
connection.adapter :net_http
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Putio
|
2
|
+
module Api
|
3
|
+
class Object
|
4
|
+
extend Putio::Api::Client
|
5
|
+
|
6
|
+
def self.plural_name
|
7
|
+
singular_name.pluralize
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.singular_name
|
11
|
+
self.name.demodulize.underscore.downcase
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.parse_collection(hash)
|
15
|
+
objects = hash[plural_name.to_sym]
|
16
|
+
objects.map do |obj|
|
17
|
+
instantiate_object obj
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.parse_object(hash)
|
22
|
+
object = hash[singular_name.to_sym]
|
23
|
+
instantiate_object object
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.instantiate_object(hash)
|
27
|
+
obj = self.new
|
28
|
+
hash.each do |k,v|
|
29
|
+
obj.set_attribute(k.to_s, v)
|
30
|
+
end
|
31
|
+
obj
|
32
|
+
end
|
33
|
+
|
34
|
+
def client
|
35
|
+
self.class.client
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_attribute(attr, value)
|
39
|
+
return unless attr.present?
|
40
|
+
self.singleton_class.instance_eval { attr_reader "#{attr}".to_sym }
|
41
|
+
self.instance_variable_set("@#{attr}", value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Putio
|
2
|
+
class File < Putio::Api::Object
|
3
|
+
def self.list(parent_id=nil)
|
4
|
+
res = client.get "files/list", ( parent_id ? {:parent_id => parent_id} : nil )
|
5
|
+
parse_collection res.body if res.success?
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.get(id)
|
9
|
+
res = client.get "files/#{id}"
|
10
|
+
parse_object res.body if res.success?
|
11
|
+
end
|
12
|
+
|
13
|
+
def download_url
|
14
|
+
res = client.get "files/#{id}/download"
|
15
|
+
res.headers[:location] if res.success?
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete
|
19
|
+
client.post "files/delete", :file_ids => id
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Putio
|
2
|
+
module Middleware
|
3
|
+
class OauthToken < Faraday::Response::Middleware
|
4
|
+
def call(env)
|
5
|
+
raise Putio::Errors::AuthorizationError, "No OAuth token provided" unless Putio.oauth_token
|
6
|
+
oauth_string = "oauth_token=#{Putio.oauth_token}"
|
7
|
+
query = env[:url].query
|
8
|
+
env[:url].query = query ? "#{query}&#{oauth_string}" : oauth_string
|
9
|
+
@app.call(env)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Putio
|
2
|
+
module Middleware
|
3
|
+
class Parse < Faraday::Response::Middleware
|
4
|
+
def parse(body)
|
5
|
+
begin
|
6
|
+
return MultiJson.load(body, :symbolize_keys => true)
|
7
|
+
rescue MultiJson::ParseError
|
8
|
+
return body
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def on_complete(env)
|
13
|
+
env[:body] = parse(env[:body])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Putio
|
2
|
+
class Transfer < Putio::Api::Object
|
3
|
+
def self.list
|
4
|
+
res = client.get "transfers/list"
|
5
|
+
parse_collection res.body if res.success?
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.get(id)
|
9
|
+
res = client.get "transfers/#{id}"
|
10
|
+
parse_object res.body if res.success?
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.add(url)
|
14
|
+
res = client.post "transfers/add", :url => url
|
15
|
+
parse_object res.body
|
16
|
+
end
|
17
|
+
|
18
|
+
def fetch
|
19
|
+
self.class.find(id)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/putio-ruby.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'putio-ruby/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "putio-ruby"
|
8
|
+
spec.version = Putio::VERSION
|
9
|
+
spec.authors = ["Brandon Bloxsom"]
|
10
|
+
spec.email = ["bloxsom@umich.edu"]
|
11
|
+
|
12
|
+
spec.summary = 'A simple library for communicating with the Put.io REST API'
|
13
|
+
spec.description = 'A simple library for communicating with the Put.io REST API'
|
14
|
+
spec.homepage = "https://github.com/bloxsom/putio-ruby"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.bindir = "exe"
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.8"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "pry", "~> 0.10"
|
24
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
25
|
+
spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4"
|
26
|
+
|
27
|
+
spec.add_runtime_dependency "faraday", "~> 0.9"
|
28
|
+
spec.add_runtime_dependency "activesupport", ">= 3.0.0", "<= 4.3.0"
|
29
|
+
spec.add_runtime_dependency "multi_json", "~> 1.7"
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: putio-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brandon Bloxsom
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.8'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.10'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: codeclimate-test-reporter
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.4'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: faraday
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.9'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.9'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: activesupport
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.0.0
|
104
|
+
- - <=
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 4.3.0
|
107
|
+
type: :runtime
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 3.0.0
|
114
|
+
- - <=
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 4.3.0
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: multi_json
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ~>
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '1.7'
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ~>
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '1.7'
|
131
|
+
description: A simple library for communicating with the Put.io REST API
|
132
|
+
email:
|
133
|
+
- bloxsom@umich.edu
|
134
|
+
executables: []
|
135
|
+
extensions: []
|
136
|
+
extra_rdoc_files: []
|
137
|
+
files:
|
138
|
+
- .gitignore
|
139
|
+
- .rspec
|
140
|
+
- .travis.yml
|
141
|
+
- Gemfile
|
142
|
+
- README.md
|
143
|
+
- Rakefile
|
144
|
+
- bin/console
|
145
|
+
- bin/setup
|
146
|
+
- lib/putio-ruby.rb
|
147
|
+
- lib/putio-ruby/api/client.rb
|
148
|
+
- lib/putio-ruby/api/object.rb
|
149
|
+
- lib/putio-ruby/errors.rb
|
150
|
+
- lib/putio-ruby/file.rb
|
151
|
+
- lib/putio-ruby/middleware/oauth_token.rb
|
152
|
+
- lib/putio-ruby/middleware/parse.rb
|
153
|
+
- lib/putio-ruby/transfer.rb
|
154
|
+
- lib/putio-ruby/version.rb
|
155
|
+
- putio-ruby.gemspec
|
156
|
+
homepage: https://github.com/bloxsom/putio-ruby
|
157
|
+
licenses: []
|
158
|
+
metadata: {}
|
159
|
+
post_install_message:
|
160
|
+
rdoc_options: []
|
161
|
+
require_paths:
|
162
|
+
- lib
|
163
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ! '>='
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
168
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ! '>='
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
173
|
+
requirements: []
|
174
|
+
rubyforge_project:
|
175
|
+
rubygems_version: 2.4.6
|
176
|
+
signing_key:
|
177
|
+
specification_version: 4
|
178
|
+
summary: A simple library for communicating with the Put.io REST API
|
179
|
+
test_files: []
|