flattr 0.2.3 → 0.3.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.
- data/.gitignore +1 -0
- data/.rdoc_options +16 -0
- data/README.md +9 -12
- data/flattr.gemspec +2 -2
- data/lib/flattr/authenticatable.rb +7 -1
- data/lib/flattr/client.rb +4 -3
- data/lib/flattr/client/flattrs.rb +34 -0
- data/lib/flattr/client/things.rb +39 -21
- data/lib/flattr/client/users.rb +8 -5
- data/lib/flattr/connection.rb +7 -2
- data/lib/flattr/error.rb +28 -0
- data/lib/flattr/error/bad_gateway.rb +7 -0
- data/lib/flattr/error/bad_request.rb +7 -0
- data/lib/flattr/error/client_error.rb +7 -0
- data/lib/flattr/error/forbidden.rb +7 -0
- data/lib/flattr/error/internal_server_error.rb +7 -0
- data/lib/flattr/error/not_acceptable.rb +7 -0
- data/lib/flattr/error/not_found.rb +7 -0
- data/lib/flattr/error/server_error.rb +7 -0
- data/lib/flattr/error/unauthorized.rb +7 -0
- data/lib/flattr/oauth2.rb +4 -4
- data/lib/flattr/request/oauth2.rb +1 -1
- data/lib/flattr/response/parse_json.rb +5 -1
- data/lib/flattr/response/raise_client_error.rb +39 -0
- data/lib/flattr/response/raise_server_error.rb +20 -0
- data/lib/flattr/thing.rb +5 -1
- data/lib/flattr/version.rb +2 -2
- metadata +77 -33
- data/example_app/Gemfile +0 -7
- data/example_app/app.rb +0 -41
- data/example_app/config.ru +0 -3
- data/example_app/local_config.example.yml +0 -4
- data/example_app/local_config.yml +0 -4
- data/example_app/views/index.haml +0 -2
- data/example_app/views/layout.haml +0 -10
- data/example_app/views/open_calls.haml +0 -12
- data/example_app/views/tests.haml +0 -1
data/.gitignore
CHANGED
data/.rdoc_options
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
--- !ruby/object:RDoc::Options
|
2
|
+
encoding: UTF-8
|
3
|
+
static_path: []
|
4
|
+
rdoc_include:
|
5
|
+
- .
|
6
|
+
charset: UTF-8
|
7
|
+
exclude: !!null
|
8
|
+
hyperlink_all: false
|
9
|
+
line_numbers: false
|
10
|
+
main_page: !!null
|
11
|
+
markup: tomdoc
|
12
|
+
show_hash: false
|
13
|
+
tab_width: 8
|
14
|
+
title: !!null
|
15
|
+
visibility: :protected
|
16
|
+
webcvs: !!null
|
data/README.md
CHANGED
@@ -1,14 +1,9 @@
|
|
1
|
-
# Flattr
|
1
|
+
# The Flattr Ruby Gem [](http://travis-ci.org/simon/flattr) [](https://gemnasium.com/simon/flattr)
|
2
2
|
|
3
3
|
This gem is a wrapper around the Flattr API. With the gem you can search things, add new thing and much more. If you want information about updates follow [@simongate](http://twitter.com/simongate) on twitter.
|
4
4
|
|
5
5
|
[](https://flattr.com/submit/auto?user_id=smgt&url=https://github.com/simon/flattr&title=Flattr API gem&language=en_GB&tags=github&category=software)
|
6
6
|
|
7
|
-
## Build status
|
8
|
-
|
9
|
-
[](http://travis-ci.org/simon/flattr)
|
11
|
-
|
12
7
|
## Installation
|
13
8
|
|
14
9
|
Installation is easy, just install the gem with.
|
@@ -17,17 +12,18 @@ Installation is easy, just install the gem with.
|
|
17
12
|
|
18
13
|
### Dependencies
|
19
14
|
|
20
|
-
* Faraday
|
21
|
-
* multi_json
|
15
|
+
* [Faraday](https://github.com/technoweenie/faraday)
|
16
|
+
* [multi_json](https://github.com/intridea/multi_json)
|
22
17
|
|
23
18
|
## Usage
|
24
19
|
|
25
|
-
To talk with all of Flattr API resources you need to [register a application](http://flattr.com/apps). This will give you a
|
20
|
+
To talk with all of Flattr API resources you need to [register a application](http://flattr.com/apps). This will give you a `client id` and a `client secret` whom you can exchange for a `access token`. The `access token` is then used to access the resources in the Flattr API that needs authentication. You can find more information about the API in [Flattr developer documents](http://developers.flattr.net/api).
|
26
21
|
|
27
22
|
### Resources
|
28
23
|
|
29
24
|
You can find documentation about available resources in the code.
|
30
25
|
|
26
|
+
* [flattrs](https://github.com/simon/flattr/blob/master/lib/flattr/client/flattrs.rb)
|
31
27
|
* [things](https://github.com/simon/flattr/blob/master/lib/flattr/client/things.rb)
|
32
28
|
* [users](https://github.com/simon/flattr/blob/master/lib/flattr/client/users.rb)
|
33
29
|
* [categories](https://github.com/simon/flattr/blob/master/lib/flattr/client/categories.rb)
|
@@ -67,7 +63,9 @@ print 'code: '
|
|
67
63
|
code = gets
|
68
64
|
|
69
65
|
# Use the code and exchange it for a access_token
|
70
|
-
flattr.get_access_token code
|
66
|
+
access_token = flattr.get_access_token code
|
67
|
+
|
68
|
+
puts access_token
|
71
69
|
|
72
70
|
# You are now authorized! ;)
|
73
71
|
|
@@ -83,9 +81,8 @@ If you request a access token without any scopes you won't be able to flattr oth
|
|
83
81
|
|
84
82
|
## What needs to be done
|
85
83
|
|
86
|
-
* Add error reporting
|
87
|
-
* More tests are needed, coverage isn't that good
|
88
84
|
* Add all the Flattr API resources
|
85
|
+
* More tests are needed, coverage isn't that good
|
89
86
|
|
90
87
|
## Supported Ruby Versions
|
91
88
|
|
data/flattr.gemspec
CHANGED
@@ -17,8 +17,8 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
|
-
s.add_dependency 'faraday'
|
21
|
-
s.add_dependency 'multi_json'
|
20
|
+
s.add_dependency 'faraday', '~> 0.7'
|
21
|
+
s.add_dependency 'multi_json', '~> 1.0'
|
22
22
|
|
23
23
|
s.add_development_dependency 'json'
|
24
24
|
s.add_development_dependency 'rake'
|
@@ -15,7 +15,13 @@ module Flattr
|
|
15
15
|
#
|
16
16
|
# @return [Boolean]
|
17
17
|
def credentials?
|
18
|
-
|
18
|
+
if credentials[:access_token]
|
19
|
+
true
|
20
|
+
elsif credentials[:client_id] && credentials[:client_secret]
|
21
|
+
true
|
22
|
+
else
|
23
|
+
false
|
24
|
+
end
|
19
25
|
end
|
20
26
|
end
|
21
27
|
end
|
data/lib/flattr/client.rb
CHANGED
@@ -16,6 +16,7 @@ module Flattr
|
|
16
16
|
require 'flattr/client/things'
|
17
17
|
require 'flattr/client/languages'
|
18
18
|
require 'flattr/client/categories'
|
19
|
+
require 'flattr/client/flattrs'
|
19
20
|
|
20
21
|
include Flattr::Connection
|
21
22
|
include Flattr::Request
|
@@ -27,6 +28,7 @@ module Flattr
|
|
27
28
|
include Flattr::Client::Things
|
28
29
|
include Flattr::Client::Languages
|
29
30
|
include Flattr::Client::Categories
|
31
|
+
include Flattr::Client::Flattrs
|
30
32
|
|
31
33
|
attr_accessor *Config::VALID_OPTIONS_KEYS
|
32
34
|
|
@@ -45,13 +47,12 @@ module Flattr
|
|
45
47
|
#
|
46
48
|
# @return [Flattr::User]
|
47
49
|
def current_user
|
48
|
-
@current_user ||=
|
50
|
+
@current_user ||= self.user
|
49
51
|
end
|
50
52
|
|
51
|
-
def base64_encode str
|
53
|
+
def self.base64_encode str
|
52
54
|
[str].pack("m9999").chomp
|
53
55
|
end
|
54
56
|
|
55
|
-
|
56
57
|
end
|
57
58
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
module Flattr
|
3
|
+
class Client
|
4
|
+
module Flattrs
|
5
|
+
|
6
|
+
# Public: Flattr a thing
|
7
|
+
#
|
8
|
+
# thing - The id or URL of the thing you wan't to flattr
|
9
|
+
#
|
10
|
+
# Examples
|
11
|
+
#
|
12
|
+
# f = Flattr.new
|
13
|
+
# f.flattr(450287)
|
14
|
+
# # => true
|
15
|
+
#
|
16
|
+
# f = Flattr.new
|
17
|
+
# f.flattr('https://github.com/simon/flattr')
|
18
|
+
# # => true
|
19
|
+
#
|
20
|
+
# Returns a true if successful
|
21
|
+
# Raises Flattr::Error::Forbidden if your are not allowed to flattr the thing
|
22
|
+
# Raises Flattr::Error::NotFound if no thing were found
|
23
|
+
def flattr(thing)
|
24
|
+
if thing.is_a?(Fixnum) || !thing.match(/^\d+$/).nil?
|
25
|
+
flattr = post("/rest/v2/things/#{thing}/flattr")
|
26
|
+
else
|
27
|
+
flattr = post("/rest/v2/flattr", {:url => thing})
|
28
|
+
end
|
29
|
+
return true
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/flattr/client/things.rb
CHANGED
@@ -15,12 +15,27 @@ module Flattr
|
|
15
15
|
# #=> Flattr::Thing
|
16
16
|
#
|
17
17
|
# Returns the thing
|
18
|
-
# Raises
|
18
|
+
# Raises Flattr::Error::NotFound on error
|
19
19
|
def thing(id)
|
20
|
-
thing = get("/rest/v2/things/#{id}")
|
20
|
+
thing = get("/rest/v2/things/#{id}?full")
|
21
21
|
Flattr::Thing.new(thing)
|
22
22
|
end
|
23
23
|
|
24
|
+
# Public: Fetch several things
|
25
|
+
#
|
26
|
+
# ids - a list of thing ids
|
27
|
+
#
|
28
|
+
# Examples
|
29
|
+
#
|
30
|
+
# f = Flattr.new
|
31
|
+
# f.things(450287,543896)
|
32
|
+
# #=> [Flattr::Thing, Flattr::Thing]
|
33
|
+
#
|
34
|
+
# Returns a Array with things
|
35
|
+
def things(*ids)
|
36
|
+
get("/rest/v2/things/#{ids.join(",")}?full").collect { |t| Flattr::Thing.new(t) }
|
37
|
+
end
|
38
|
+
|
24
39
|
# Public: Create a thing
|
25
40
|
#
|
26
41
|
# url - URL you want to submit
|
@@ -33,10 +48,11 @@ module Flattr
|
|
33
48
|
# :hidden - boolean toggling if thing should be hidden or not (optional).
|
34
49
|
#
|
35
50
|
# Returns new thing
|
36
|
-
# Raises
|
51
|
+
# Raises Flattr::Error::BadRequest on validation error
|
52
|
+
# Raises Flattr::Error::NotFound if thing was not found
|
37
53
|
def thing_new(url, opts = {})
|
38
54
|
response = post("/rest/v2/things", opts.merge(:url => url))
|
39
|
-
thing =
|
55
|
+
thing = thing(response["id"])
|
40
56
|
Flattr::Thing.new(thing)
|
41
57
|
end
|
42
58
|
|
@@ -52,7 +68,8 @@ module Flattr
|
|
52
68
|
# :hidden - boolean toggling if thing should be hidden or not (optional).
|
53
69
|
#
|
54
70
|
# Returns updated thing
|
55
|
-
# Raises Error on
|
71
|
+
# Raises Flattr::Error::BadRequest on validation error
|
72
|
+
# Raises Flattr::Error::NotFound if thing was not found
|
56
73
|
def thing_update(id, opts = {})
|
57
74
|
patch("/rest/v2/things/#{id}", opts)
|
58
75
|
thing = get("/rest/v2/things/#{id}")
|
@@ -70,7 +87,7 @@ module Flattr
|
|
70
87
|
# # => true
|
71
88
|
#
|
72
89
|
# Returns true if successful
|
73
|
-
# Raises Error
|
90
|
+
# Raises Flattr::Error::NotFound if thing was not found
|
74
91
|
def thing_delete(id)
|
75
92
|
thing = delete("/rest/v2/things/#{id}")
|
76
93
|
if thing.nil? || thing == ""
|
@@ -80,21 +97,6 @@ module Flattr
|
|
80
97
|
end
|
81
98
|
end
|
82
99
|
|
83
|
-
# Public: Flattr a thing
|
84
|
-
#
|
85
|
-
# id - id of the thing you want to flattr
|
86
|
-
#
|
87
|
-
# Example
|
88
|
-
#
|
89
|
-
# f = Flattr.new
|
90
|
-
# f.thing_flattr(1)
|
91
|
-
# # => true
|
92
|
-
#
|
93
|
-
# Returns true
|
94
|
-
def thing_flattr(id)
|
95
|
-
post("/rest/v2/things/#{id}/flattr")
|
96
|
-
end
|
97
|
-
|
98
100
|
# Public: Search things
|
99
101
|
#
|
100
102
|
# params - The Hash options used to configure search (default: {})
|
@@ -118,6 +120,7 @@ module Flattr
|
|
118
120
|
#
|
119
121
|
# Returns Flattr::Search
|
120
122
|
def thing_search(params = {})
|
123
|
+
params.merge!({"full" => "full"})
|
121
124
|
result = get("/rest/v2/things/search", params)
|
122
125
|
Flattr::Search.new(result)
|
123
126
|
end
|
@@ -147,6 +150,21 @@ module Flattr
|
|
147
150
|
end
|
148
151
|
end
|
149
152
|
|
153
|
+
# Public: Get flattrs on a thing
|
154
|
+
#
|
155
|
+
# id - id of thing
|
156
|
+
#
|
157
|
+
# Examples
|
158
|
+
#
|
159
|
+
# f = Flattr.new
|
160
|
+
# f.thing_flattrs(450287)
|
161
|
+
# # => [...]
|
162
|
+
#
|
163
|
+
# Returns a Array with flattrs
|
164
|
+
def thing_flattrs(id,params={})
|
165
|
+
get("/rest/v2/things/#{id}/flattrs",params)
|
166
|
+
end
|
167
|
+
|
150
168
|
end
|
151
169
|
end
|
152
170
|
end
|
data/lib/flattr/client/users.rb
CHANGED
@@ -15,10 +15,13 @@ module Flattr
|
|
15
15
|
# # => #<Flattr::User...
|
16
16
|
#
|
17
17
|
# Returns a Flattr::User if successful
|
18
|
-
# Raises
|
18
|
+
# Raises Flattr::Error::NotFound if user not found
|
19
19
|
def user(username=nil)
|
20
|
-
|
21
|
-
|
20
|
+
if username.nil?
|
21
|
+
user = get("/rest/v2/user")
|
22
|
+
else
|
23
|
+
user = get("/rest/v2/users/#{username}")
|
24
|
+
end
|
22
25
|
Flattr::User.new(user)
|
23
26
|
end
|
24
27
|
|
@@ -33,7 +36,7 @@ module Flattr
|
|
33
36
|
# # => [#<Flattr::Thing...
|
34
37
|
#
|
35
38
|
# Returns a Array with Flattr::User's inside if successful
|
36
|
-
# Raises a
|
39
|
+
# Raises a Flattr::Error::NotFound if user not found
|
37
40
|
def user_things(username=nil, args={})
|
38
41
|
user = username || self.current_user.username
|
39
42
|
get("/rest/v2/users/#{user}/things", args).map do |thing|
|
@@ -52,7 +55,7 @@ module Flattr
|
|
52
55
|
# # => [{"type" => "flattr"....
|
53
56
|
#
|
54
57
|
# Returns a Array with flattrs if successful
|
55
|
-
# Raises
|
58
|
+
# Raises Flattr::Error::NotFound if user not found
|
56
59
|
def user_flattrs(username=nil, args={})
|
57
60
|
user = username || self.current_user.username
|
58
61
|
get("/rest/v2/users/#{user}/flattrs").map do |flattr|
|
data/lib/flattr/connection.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
require 'flattr/core_ext/hash'
|
3
|
-
require 'flattr/response/parse_json'
|
4
3
|
require 'flattr/request/oauth2'
|
4
|
+
require 'flattr/response/parse_json'
|
5
|
+
require 'flattr/response/raise_client_error'
|
6
|
+
require 'flattr/response/raise_server_error'
|
5
7
|
|
6
8
|
module Flattr
|
7
9
|
module Connection
|
@@ -17,11 +19,14 @@ module Flattr
|
|
17
19
|
:url => endpoint,
|
18
20
|
}
|
19
21
|
Faraday.new(default_options.deep_merge(connection_options)) do |builder|
|
20
|
-
#builder.use Faraday::Request::Multipart
|
21
22
|
builder.use Faraday::Request::JSON
|
22
23
|
builder.use Faraday::Request::UrlEncoded
|
24
|
+
|
23
25
|
builder.use Flattr::Request::FlattrOAuth2, credentials if credentials?
|
26
|
+
builder.use Flattr::Response::RaiseClientError
|
24
27
|
builder.use Flattr::Response::ParseJson unless connection_options[:raw]
|
28
|
+
builder.use Flattr::Response::RaiseServerError
|
29
|
+
|
25
30
|
builder.adapter(adapter)
|
26
31
|
end
|
27
32
|
end
|
data/lib/flattr/error.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Flattr
|
2
|
+
# Custom error class for rescuing from all Flattr errors
|
3
|
+
class Error < StandardError
|
4
|
+
attr_reader :http_headers
|
5
|
+
|
6
|
+
# Private: Initializes a new Error object
|
7
|
+
#
|
8
|
+
# message - Error message
|
9
|
+
# http_headers - Hash with http_headers
|
10
|
+
#
|
11
|
+
# Returns a Flattr::Error
|
12
|
+
def initialize(message, http_headers)
|
13
|
+
@http_headers = Hash[http_headers]
|
14
|
+
super(message)
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [Integer]
|
18
|
+
def ratelimit_limit
|
19
|
+
@http_headers.values_at('x-ratelimit-limit', 'X-RateLimit-Limit').detect{|value| value}.to_i
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Integer]
|
23
|
+
def ratelimit_remaining
|
24
|
+
@http_headers.values_at('x-ratelimit-remaining', 'X-RateLimit-Remaining').detect{|value| value}.to_i
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/flattr/oauth2.rb
CHANGED
@@ -4,8 +4,8 @@ module Flattr
|
|
4
4
|
def authorize_url(opts = {})
|
5
5
|
|
6
6
|
default_options = {
|
7
|
-
:client_id => client_id,
|
8
|
-
:client_secret => client_secret,
|
7
|
+
:client_id => client_id.strip,
|
8
|
+
:client_secret => client_secret.strip,
|
9
9
|
:response_type => "code"
|
10
10
|
}
|
11
11
|
|
@@ -26,11 +26,11 @@ module Flattr
|
|
26
26
|
|
27
27
|
def get_access_token(code)
|
28
28
|
response = post(token_endpoint, {
|
29
|
-
:code => code,
|
29
|
+
:code => code.strip,
|
30
30
|
:grant_type => 'authorization_code'
|
31
31
|
},{
|
32
32
|
:headers => {
|
33
|
-
:authorization => "Basic #{base64_encode("#{client_id}:#{client_secret}")}"
|
33
|
+
:authorization => "Basic #{Flattr::Client.base64_encode("#{client_id}:#{client_secret}")}"
|
34
34
|
}}
|
35
35
|
)
|
36
36
|
self.access_token = response['access_token']
|
@@ -17,7 +17,7 @@ module Flattr
|
|
17
17
|
if @options[:access_token]
|
18
18
|
"Bearer #{@options[:access_token]}"
|
19
19
|
elsif @options[:client_id] && @options[:client_secret]
|
20
|
-
"Basic #{base64_encode("#{@options[:client_id]}:#{@options[:client_secret]}")}"
|
20
|
+
"Basic #{Flattr::Client.base64_encode("#{@options[:client_id]}:#{@options[:client_secret]}")}"
|
21
21
|
else
|
22
22
|
nil
|
23
23
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'flattr/error/bad_request'
|
3
|
+
require 'flattr/error/forbidden'
|
4
|
+
require 'flattr/error/not_acceptable'
|
5
|
+
require 'flattr/error/not_found'
|
6
|
+
require 'flattr/error/unauthorized'
|
7
|
+
|
8
|
+
module Flattr
|
9
|
+
module Response
|
10
|
+
class RaiseClientError < Faraday::Response::Middleware
|
11
|
+
|
12
|
+
def on_complete(env)
|
13
|
+
case env[:status].to_i
|
14
|
+
when 400
|
15
|
+
raise Flattr::Error::BadRequest.new(error_body(env[:body]), env[:response_headers])
|
16
|
+
when 401
|
17
|
+
raise Flattr::Error::Unauthorized.new(error_body(env[:body]), env[:response_headers])
|
18
|
+
when 403
|
19
|
+
raise Flattr::Error::Forbidden.new(error_body(env[:body]), env[:response_headers])
|
20
|
+
when 404
|
21
|
+
raise Flattr::Error::NotFound.new(error_body(env[:body]), env[:response_headers])
|
22
|
+
when 406
|
23
|
+
raise Flattr::Error::NotAcceptable.new(error_body(env[:body]), env[:response_headers])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def error_body(body)
|
30
|
+
if body.nil?
|
31
|
+
''
|
32
|
+
elsif body['error']
|
33
|
+
body['error_description']
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'flattr/error/bad_gateway'
|
3
|
+
require 'flattr/error/internal_server_error'
|
4
|
+
|
5
|
+
module Flattr
|
6
|
+
module Response
|
7
|
+
class RaiseServerError < Faraday::Response::Middleware
|
8
|
+
|
9
|
+
def on_complete(env)
|
10
|
+
case env[:status].to_i
|
11
|
+
when 500
|
12
|
+
raise Flattr::Error::InternalServerError.new("Something is technically wrong.", env[:response_headers])
|
13
|
+
when 502
|
14
|
+
raise Flattr::Error::BadGateway.new("Flattr is down or being upgraded.", env[:response_headers])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/flattr/thing.rb
CHANGED
@@ -5,10 +5,14 @@ module Flattr
|
|
5
5
|
|
6
6
|
lazy_attr_reader :resource, :link, :id, :url, :language, :category,
|
7
7
|
:hidden, :flattred, :tags, :flattrs, :description, :title,
|
8
|
-
:last_flattr_at, :updated_at, :
|
8
|
+
:last_flattr_at, :updated_at, :image, :owner
|
9
9
|
|
10
10
|
lazy_attr_writer :tags, :language, :category, :hidden, :description,
|
11
11
|
:description, :title
|
12
12
|
|
13
|
+
def initialize(attrs={})
|
14
|
+
attrs['owner'] = Flattr::User.new attrs['owner'] if attrs['owner']
|
15
|
+
super attrs
|
16
|
+
end
|
13
17
|
end
|
14
18
|
end
|
data/lib/flattr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flattr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,33 +10,43 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-03-23 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '0'
|
22
|
+
version: '0.7'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0.7'
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: multi_json
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
|
-
- -
|
36
|
+
- - ~>
|
32
37
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
38
|
+
version: '1.0'
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: json
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '0'
|
45
55
|
type: :development
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: rake
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :development
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: rdiscount
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: rspec
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,10 +102,15 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :development
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
112
|
name: simplecov
|
83
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
none: false
|
85
115
|
requirements:
|
86
116
|
- - ! '>='
|
@@ -88,10 +118,15 @@ dependencies:
|
|
88
118
|
version: '0'
|
89
119
|
type: :development
|
90
120
|
prerelease: false
|
91
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: webmock
|
94
|
-
requirement:
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
none: false
|
96
131
|
requirements:
|
97
132
|
- - ! '>='
|
@@ -99,7 +134,12 @@ dependencies:
|
|
99
134
|
version: '0'
|
100
135
|
type: :development
|
101
136
|
prerelease: false
|
102
|
-
version_requirements:
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
103
143
|
description:
|
104
144
|
email:
|
105
145
|
- simon@smgt.me
|
@@ -109,21 +149,13 @@ extensions: []
|
|
109
149
|
extra_rdoc_files: []
|
110
150
|
files:
|
111
151
|
- .gitignore
|
152
|
+
- .rdoc_options
|
112
153
|
- .rspec
|
113
154
|
- .travis.yml
|
114
155
|
- Gemfile
|
115
156
|
- LICENSE.md
|
116
157
|
- README.md
|
117
158
|
- Rakefile
|
118
|
-
- example_app/Gemfile
|
119
|
-
- example_app/app.rb
|
120
|
-
- example_app/config.ru
|
121
|
-
- example_app/local_config.example.yml
|
122
|
-
- example_app/local_config.yml
|
123
|
-
- example_app/views/index.haml
|
124
|
-
- example_app/views/layout.haml
|
125
|
-
- example_app/views/open_calls.haml
|
126
|
-
- example_app/views/tests.haml
|
127
159
|
- flattr.gemspec
|
128
160
|
- lib/flattr.rb
|
129
161
|
- lib/flattr/authenticatable.rb
|
@@ -131,17 +163,30 @@ files:
|
|
131
163
|
- lib/flattr/category.rb
|
132
164
|
- lib/flattr/client.rb
|
133
165
|
- lib/flattr/client/categories.rb
|
166
|
+
- lib/flattr/client/flattrs.rb
|
134
167
|
- lib/flattr/client/languages.rb
|
135
168
|
- lib/flattr/client/things.rb
|
136
169
|
- lib/flattr/client/users.rb
|
137
170
|
- lib/flattr/config.rb
|
138
171
|
- lib/flattr/connection.rb
|
139
172
|
- lib/flattr/core_ext/hash.rb
|
173
|
+
- lib/flattr/error.rb
|
174
|
+
- lib/flattr/error/bad_gateway.rb
|
175
|
+
- lib/flattr/error/bad_request.rb
|
176
|
+
- lib/flattr/error/client_error.rb
|
177
|
+
- lib/flattr/error/forbidden.rb
|
178
|
+
- lib/flattr/error/internal_server_error.rb
|
179
|
+
- lib/flattr/error/not_acceptable.rb
|
180
|
+
- lib/flattr/error/not_found.rb
|
181
|
+
- lib/flattr/error/server_error.rb
|
182
|
+
- lib/flattr/error/unauthorized.rb
|
140
183
|
- lib/flattr/language.rb
|
141
184
|
- lib/flattr/oauth2.rb
|
142
185
|
- lib/flattr/request.rb
|
143
186
|
- lib/flattr/request/oauth2.rb
|
144
187
|
- lib/flattr/response/parse_json.rb
|
188
|
+
- lib/flattr/response/raise_client_error.rb
|
189
|
+
- lib/flattr/response/raise_server_error.rb
|
145
190
|
- lib/flattr/search.rb
|
146
191
|
- lib/flattr/thing.rb
|
147
192
|
- lib/flattr/user.rb
|
@@ -168,11 +213,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
213
|
version: '0'
|
169
214
|
requirements: []
|
170
215
|
rubyforge_project: flattr
|
171
|
-
rubygems_version: 1.8.
|
216
|
+
rubygems_version: 1.8.18
|
172
217
|
signing_key:
|
173
218
|
specification_version: 3
|
174
219
|
summary: Flattr API wrapper
|
175
220
|
test_files:
|
176
221
|
- spec/flattr_spec.rb
|
177
222
|
- spec/helper.rb
|
178
|
-
has_rdoc:
|
data/example_app/Gemfile
DELETED
data/example_app/app.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'sinatra'
|
2
|
-
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
|
-
require 'flattr'
|
4
|
-
require 'haml'
|
5
|
-
|
6
|
-
require 'yaml'
|
7
|
-
local_config = YAML.load_file './local_config.yml'
|
8
|
-
|
9
|
-
layout :default
|
10
|
-
set :session, :enable
|
11
|
-
|
12
|
-
before do
|
13
|
-
puts " -- #{request.request_method.upcase} #{request.path_info} --"
|
14
|
-
@flattr_client = Flattr.new(
|
15
|
-
:client_id => local_config['client_id'],
|
16
|
-
:client_secret => local_config['client_secret'],
|
17
|
-
:authorize_endpoint => local_config['authorize_endpoint'],
|
18
|
-
:token_endpoint => local_config['token_endpoint']
|
19
|
-
)
|
20
|
-
end
|
21
|
-
get '/' do
|
22
|
-
haml :index
|
23
|
-
end
|
24
|
-
|
25
|
-
get '/callback' do
|
26
|
-
puts "callback params: #{params.inspect}"
|
27
|
-
token = @flattr_client.get_access_token params["code"]
|
28
|
-
puts "token is : #{token}"
|
29
|
-
redirect '/tests'
|
30
|
-
end
|
31
|
-
|
32
|
-
get '/open_calls' do
|
33
|
-
@user = @flattr_client.user('smgt')
|
34
|
-
@categories = @flattr_client.categories
|
35
|
-
@languages = @flattr_client.languages
|
36
|
-
haml :open_calls
|
37
|
-
end
|
38
|
-
|
39
|
-
get '/tests' do
|
40
|
-
haml :tests
|
41
|
-
end
|
data/example_app/config.ru
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
hej jag är en testfil :)
|