localbitcoins 1.0.0 → 1.1.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 +5 -13
- data/README.md +5 -1
- data/lib/localbitcoins.rb +4 -3
- data/lib/localbitcoins/client.rb +18 -12
- data/lib/localbitcoins/client/ads.rb +5 -5
- data/lib/localbitcoins/client/contacts.rb +13 -13
- data/lib/localbitcoins/client/escrows.rb +3 -3
- data/lib/localbitcoins/client/users.rb +3 -3
- data/lib/localbitcoins/client/wallet.rb +6 -6
- data/lib/localbitcoins/request.rb +39 -5
- data/lib/localbitcoins/version.rb +1 -1
- data/localbitcoins.gemspec +3 -4
- data/spec/client_spec.rb +3 -3
- data/spec/spec_helper.rb +23 -21
- metadata +25 -23
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTA5Mzk3ZGQ3MTdmYTg0ZGYxNmM2ZTU2OTYyMDI1Mjk5MDgwZjY4Ng==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ab8f983a12e47f099fe346a3c2fd8929e79ca92c
|
4
|
+
data.tar.gz: 710b050fe90c87d5060dcf55b11be1fe12349b94
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MTQ4YjIyNThiNzVjMzY5OTFmYzFhNjM4NzBjYjBiODE1YmYxNWJhOWFiNTQ5
|
11
|
-
NTNjY2VhMjExYzU2MWJhMDYwZGQyNzVjZWZkOTViOTgwYTAxNWE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MzYzODlmZWUyY2U3Mjg2MWFlMmI4ODRmMzE0NjhhNzc1OTRmZjMyMmE0NGVi
|
14
|
-
MmU0MjQyM2IxNzYzODhhZDU3YWU2ZmI2ZWEwNGE1Y2UzNGVjMTEwNGMwODc0
|
15
|
-
ZTU0MmJmMmIwOWYzYzgyNzM3NDdhYmIyOTdjOTc4ZTNiNDgzMjk=
|
6
|
+
metadata.gz: 4d09a0f7d3a4b64beba6eb10ef81161ebd7bd0322dfc4931fe8aef5a246e6369500874f66bf716955c5ea1cad277b779f394d0c366f99c10d2b1eeb92d6d394d
|
7
|
+
data.tar.gz: a0426a7adf550aff177b91f7955cfdadf7012ae906471e4cd2e95f5630741749bfc6b4951515e76e895000633bda555a89c8588c13442634cf0ded5b8012dff2
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# LocalBitcoins API Gem 1.
|
1
|
+
# LocalBitcoins API Gem 1.1.0
|
2
2
|
|
3
3
|
This gem provides a simple, extensible Ruby wrapper to access the [LocalBitcoins API](https://localbitcoins.com/api-docs/).
|
4
4
|
|
@@ -16,8 +16,11 @@ gem 'localbitcoins'
|
|
16
16
|
|
17
17
|
You can use the gem with or without OAuth2 for authentication. Without authentication the API only allows access to the public endpoints documented [here (Ad Listings)](https://localbitcoins.com/api-docs/public/) and [here (Market Data)](https://localbitcoins.com/api-docs/#toc7)
|
18
18
|
|
19
|
+
|
19
20
|
### Setting Up The Client
|
20
21
|
|
22
|
+
**TODO: Document HMAC requests.**
|
23
|
+
|
21
24
|
For authenticated requests to the LocalBitcoins API, you must [register your application](https://localbitcoins.com/accounts/api/) and get your API credentials. Use the Client ID and Client Secret to receive an access token via OAuth2. There are a number of ways to implement OAuth2, and it is largely left up to you to decide how to do it. If you've never used OAuth2 before, reading [this tutorial](http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified) is a good place to start!
|
22
25
|
|
23
26
|
Once you have your token, you can get to setting up the LocalBitcoins client.
|
@@ -380,6 +383,7 @@ places = client.places(params)
|
|
380
383
|
* [Will Newman](http://willnewman.me)
|
381
384
|
* [Albert Brown](https://www.linkedin.com/pub/albert-brown/36/515/a2)
|
382
385
|
* [Coincove](https://coincove.co)
|
386
|
+
* [Maros Hluska](http://mhluska.com)
|
383
387
|
|
384
388
|
## License
|
385
389
|
|
data/lib/localbitcoins.rb
CHANGED
@@ -21,18 +21,19 @@ module LocalBitcoins
|
|
21
21
|
unless options.kind_of?(Hash)
|
22
22
|
raise ArgumentError, "Options hash required."
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
@@options[:client_id] = options[:client_id]
|
26
26
|
@@options[:client_secret] = options[:client_secret]
|
27
|
+
@@options[:use_hmac] = options[:use_hmac]
|
27
28
|
@@options
|
28
29
|
end
|
29
|
-
|
30
|
+
|
30
31
|
# Returns global configuration hash
|
31
32
|
#
|
32
33
|
def self.configuration
|
33
34
|
@@options
|
34
35
|
end
|
35
|
-
|
36
|
+
|
36
37
|
# Resets the global configuration
|
37
38
|
#
|
38
39
|
def self.reset_configuration
|
data/lib/localbitcoins/client.rb
CHANGED
@@ -20,7 +20,7 @@ module LocalBitcoins
|
|
20
20
|
include LocalBitcoins::Public
|
21
21
|
|
22
22
|
|
23
|
-
attr_reader :oauth_client, :access_token
|
23
|
+
attr_reader :oauth_client, :access_token, :use_hmac, :client_id, :client_secret
|
24
24
|
|
25
25
|
# Initialize a LocalBitcoins::Client instance
|
26
26
|
#
|
@@ -33,18 +33,24 @@ module LocalBitcoins
|
|
33
33
|
raise ArgumentError, "Options hash required."
|
34
34
|
end
|
35
35
|
|
36
|
-
@
|
37
|
-
|
38
|
-
|
39
|
-
authorize_url: "/oauth2/authorize",
|
40
|
-
token_url: "/oauth2/access_token",
|
41
|
-
site: "https://localbitcoins.com"
|
42
|
-
)
|
36
|
+
@use_hmac = options[:use_hmac]
|
37
|
+
@client_id = options[:client_id]
|
38
|
+
@client_secret = options[:client_secret]
|
43
39
|
|
44
|
-
@
|
45
|
-
oauth_client
|
46
|
-
|
47
|
-
|
40
|
+
unless @use_hmac
|
41
|
+
@oauth_client = OAuth2::Client.new(
|
42
|
+
@client_id,
|
43
|
+
@client_secret,
|
44
|
+
authorize_url: "/oauth2/authorize",
|
45
|
+
token_url: "/oauth2/access_token",
|
46
|
+
site: "https://localbitcoins.com"
|
47
|
+
)
|
48
|
+
|
49
|
+
@access_token = OAuth2::AccessToken.new(
|
50
|
+
oauth_client,
|
51
|
+
options[:oauth_token]
|
52
|
+
)
|
53
|
+
end
|
48
54
|
end
|
49
55
|
end
|
50
56
|
end
|
@@ -2,7 +2,7 @@ module LocalBitcoins
|
|
2
2
|
module Ads
|
3
3
|
# Get a list of the token owner's ads
|
4
4
|
def ads
|
5
|
-
|
5
|
+
request(:get, '/api/ads/').data
|
6
6
|
end
|
7
7
|
|
8
8
|
# Update one of the token owner's ads
|
@@ -23,7 +23,7 @@ module LocalBitcoins
|
|
23
23
|
:max_amount => old_ad.max_amount,
|
24
24
|
:visible => old_ad.visible
|
25
25
|
}.merge(params)
|
26
|
-
|
26
|
+
request(:post, "/api/ad/#{id}/", updated_params).data
|
27
27
|
end
|
28
28
|
|
29
29
|
# Create a new ad for the token owner
|
@@ -45,16 +45,16 @@ module LocalBitcoins
|
|
45
45
|
# currency - three letter fiat representation [string]
|
46
46
|
#
|
47
47
|
def create_ad(params={})
|
48
|
-
|
48
|
+
request(:post, '/api/ad-create/', params).data
|
49
49
|
end
|
50
50
|
|
51
51
|
# ads - comma separated list of ad ids [string]
|
52
52
|
def ad_list(ads)
|
53
|
-
|
53
|
+
request(:get, "/api/ad-get/", {:ads=>ads}).data
|
54
54
|
end
|
55
55
|
|
56
56
|
def ad(ad_id)
|
57
|
-
|
57
|
+
request(:get, "/api/ad-get/#{ad_id}/").data.ad_list[0]
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -4,40 +4,40 @@ module LocalBitcoins
|
|
4
4
|
# contact_id - id number associated with the contact
|
5
5
|
|
6
6
|
def mark_contact_as_paid(contact_id)
|
7
|
-
|
7
|
+
request(:post, "/api/contact_mark_as_paid/#{contact_id}/")
|
8
8
|
end
|
9
9
|
|
10
10
|
def messages_from_contact(contact_id)
|
11
|
-
|
11
|
+
request(:get, "/api/contact_messages/#{contact_id}/").data
|
12
12
|
end
|
13
13
|
|
14
14
|
def message_contact(contact_id, msg)
|
15
|
-
|
15
|
+
request(:post, "/api/contact_message_post/#{contact_id}/", {:msg=>msg}).data
|
16
16
|
end
|
17
17
|
|
18
18
|
def dispute_contact(contact_id)
|
19
|
-
|
19
|
+
request(:post, "/api/contact_dispute/#{contact_id}/")
|
20
20
|
end
|
21
21
|
|
22
22
|
def cancel_contact(contact_id)
|
23
|
-
|
23
|
+
request(:post, "/api/contact_cancel/#{contact_id}/").data
|
24
24
|
end
|
25
25
|
|
26
26
|
def fund_contact(contact_id)
|
27
|
-
|
27
|
+
request(:post, "/api/contact_fund/#{contact_id}/")
|
28
28
|
end
|
29
29
|
|
30
30
|
def create_contact(ad_id, amount, message=nil)
|
31
|
-
|
31
|
+
request(:post, "/api/contact_create/#{ad_id}/", {:amount=>amount, :message=>message})
|
32
32
|
end
|
33
33
|
|
34
34
|
def contact_info(contact_id)
|
35
|
-
|
35
|
+
request(:get, "/api/contact_info/#{contact_id}/")
|
36
36
|
end
|
37
37
|
|
38
38
|
# contacts - comma separated list of contact ids [string]
|
39
39
|
def contacts_info(contacts)
|
40
|
-
|
40
|
+
request(:get, '/api/contact_info/', {:contacts=>contacts}).data
|
41
41
|
end
|
42
42
|
|
43
43
|
# Dashboard contact endpoints
|
@@ -45,22 +45,22 @@ module LocalBitcoins
|
|
45
45
|
#
|
46
46
|
def active_contacts(contact_type = nil)
|
47
47
|
contact_type<<'/' unless contact_type.nil?
|
48
|
-
|
48
|
+
request(:get, "/api/dashboard/#{contact_type}").data
|
49
49
|
end
|
50
50
|
|
51
51
|
def released_contacts(contact_type = nil)
|
52
52
|
contact_type<<'/' unless contact_type.nil?
|
53
|
-
|
53
|
+
request(:get, "/api/dashboard/released/#{contact_type}").data
|
54
54
|
end
|
55
55
|
|
56
56
|
def canceled_contacts(contact_type = nil)
|
57
57
|
contact_type<<'/' unless contact_type.nil?
|
58
|
-
|
58
|
+
request(:get, "/api/dashboard/canceled/#{contact_type}").data
|
59
59
|
end
|
60
60
|
|
61
61
|
def closed_contacts(contact_type = nil)
|
62
62
|
contact_type<<'/' unless contact_type.nil?
|
63
|
-
|
63
|
+
request(:get, "/api/dashboard/closed/#{contact_type}").data
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module LocalBitcoins
|
2
2
|
module Escrows
|
3
|
-
# Get a list of the token owner's releaseable escrows
|
3
|
+
# Get a list of the token owner's releaseable escrows
|
4
4
|
# NOTE: This endpoint is not documented so it may or may not work
|
5
5
|
def escrows
|
6
|
-
|
6
|
+
request(:get, '/api/escrows/').data
|
7
7
|
end
|
8
8
|
|
9
9
|
# Release an escrow
|
@@ -11,7 +11,7 @@ module LocalBitcoins
|
|
11
11
|
# NOTE: LocalBitcoins documentation calls this the "escrow_id",
|
12
12
|
# it is actually just the contact number the escrow is associated with
|
13
13
|
def escrow_release(id)
|
14
|
-
|
14
|
+
request(:post, "/api/escrow_release/#{id}/").data
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module LocalBitcoins
|
2
2
|
module Users
|
3
3
|
def myself
|
4
|
-
|
4
|
+
request(:get, '/api/myself/').data
|
5
5
|
end
|
6
6
|
|
7
7
|
def account_info(username)
|
8
|
-
|
8
|
+
request(:get, "/api/account_info/#{username}/").data
|
9
9
|
end
|
10
10
|
|
11
11
|
# immediately expires the currently authorized access_token
|
12
12
|
def logout
|
13
|
-
|
13
|
+
request(:post, '/api/logout/')
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -2,27 +2,27 @@ module LocalBitcoins
|
|
2
2
|
module Wallet
|
3
3
|
# Gets information about the token owner's wallet balance
|
4
4
|
def wallet
|
5
|
-
|
5
|
+
request(:get, '/api/wallet/').data
|
6
6
|
end
|
7
7
|
|
8
8
|
def wallet_balance
|
9
|
-
|
9
|
+
request(:get, '/api/wallet-balance/').data
|
10
10
|
end
|
11
11
|
|
12
12
|
def wallet_send(address, amount)
|
13
|
-
|
13
|
+
request(:post, '/api/wallet-send/', {:address=>address, :amount=>amount}).data
|
14
14
|
end
|
15
15
|
|
16
16
|
def wallet_pin_send(address, amount, pin)
|
17
|
-
|
17
|
+
request(:post, '/api/wallet-send/', {:address=>address, :amount=>amount, :pin=>pin}).data if valid_pin?(pin)
|
18
18
|
end
|
19
19
|
|
20
20
|
def valid_pin?(pin)
|
21
|
-
|
21
|
+
request(:post, '/api/pincode/', {:pincode=>pin}).data.pincode_ok
|
22
22
|
end
|
23
23
|
|
24
24
|
def wallet_addr
|
25
|
-
|
25
|
+
request(:post, '/api/wallet-addr/').data
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -3,6 +3,9 @@ require 'active_support/core_ext'
|
|
3
3
|
require 'json'
|
4
4
|
require 'hashie'
|
5
5
|
require 'oauth2'
|
6
|
+
require 'openssl'
|
7
|
+
require 'date'
|
8
|
+
require 'uri'
|
6
9
|
|
7
10
|
module LocalBitcoins
|
8
11
|
module Request
|
@@ -10,7 +13,40 @@ module LocalBitcoins
|
|
10
13
|
|
11
14
|
protected
|
12
15
|
|
13
|
-
|
16
|
+
def request(*args)
|
17
|
+
resp = @use_hmac ? self.hmac_request(*args) : self.oauth_request(*args)
|
18
|
+
|
19
|
+
hash = Hashie::Mash.new(JSON.parse(resp.body))
|
20
|
+
raise Error.new(hash.error) if hash.error
|
21
|
+
raise Error.new(hash.errors.join(',')) if hash.errors
|
22
|
+
hash
|
23
|
+
end
|
24
|
+
|
25
|
+
def hmac_request(http_method, path, body={})
|
26
|
+
raise 'Client ID and secret required!' unless @client_id && @client_secret
|
27
|
+
|
28
|
+
digest = OpenSSL::Digest.new('sha256')
|
29
|
+
nonce = DateTime.now.strftime('%Q')
|
30
|
+
params = URI.encode_www_form(body)
|
31
|
+
data = [nonce, @client_id, path, params].join
|
32
|
+
signature = OpenSSL::HMAC.hexdigest(digest, @client_secret, data)
|
33
|
+
url = "#{API_URL}#{path}"
|
34
|
+
|
35
|
+
headers = {
|
36
|
+
'Apiauth-Key' => @client_id,
|
37
|
+
'Apiauth-Nonce' => nonce,
|
38
|
+
'Apiauth-Signature' => signature,
|
39
|
+
}
|
40
|
+
|
41
|
+
# TODO(maros): Get the `RestClient::Request.execute` API to work.
|
42
|
+
if http_method == :get
|
43
|
+
RestClient.get("#{url}?#{params}", headers)
|
44
|
+
else
|
45
|
+
RestClient.post(url, params, headers)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Perform an OAuth API request. The client must be initialized
|
14
50
|
# with a valid OAuth access token to make requests with this method
|
15
51
|
#
|
16
52
|
# path - Request path
|
@@ -27,10 +63,8 @@ module LocalBitcoins
|
|
27
63
|
when Net::HTTPNotFound
|
28
64
|
raise LocalBitcoins::NotFound
|
29
65
|
end
|
30
|
-
|
31
|
-
|
32
|
-
raise Error.new(hash.errors.join(',')) if hash.errors
|
33
|
-
hash
|
66
|
+
|
67
|
+
resp
|
34
68
|
end
|
35
69
|
end
|
36
70
|
end
|
data/localbitcoins.gemspec
CHANGED
@@ -6,15 +6,14 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.summary = "LocalBitcoins API wrapper"
|
7
7
|
s.description = "Ruby wrapper for the LocalBitcoins API"
|
8
8
|
s.homepage = "http://github.com/pemulis/localbitcoins"
|
9
|
-
s.authors = ["John Shutt", "Will Newman", "Albert Brown"]
|
10
|
-
s.email = ["john.d.shutt@gmail.com","will.newman@rutgers.edu", "albert_brown@brown.edu"]
|
11
|
-
s.homepage = "http://shutt.in"
|
9
|
+
s.authors = ["John Shutt", "Will Newman", "Albert Brown", "Maros Hluska"]
|
10
|
+
s.email = ["john.d.shutt@gmail.com","will.newman@rutgers.edu", "albert_brown@brown.edu", "me@mhluska.com"]
|
12
11
|
s.license = "MIT"
|
13
12
|
|
14
13
|
s.add_development_dependency 'rspec', '~> 2.13'
|
15
14
|
s.add_development_dependency 'webmock', '~> 1.11'
|
16
15
|
|
17
|
-
s.add_runtime_dependency 'json', '~> 1.8
|
16
|
+
s.add_runtime_dependency 'json', '~> 1.8'
|
18
17
|
s.add_runtime_dependency 'rest-client', '~> 1.6'
|
19
18
|
s.add_runtime_dependency 'hashie', '~> 2.0.2'
|
20
19
|
s.add_runtime_dependency 'activesupport', '~> 3'
|
data/spec/client_spec.rb
CHANGED
@@ -5,7 +5,8 @@ describe 'Client' do
|
|
5
5
|
let(:client) { LocalBitcoins::Client.new(
|
6
6
|
client_id: 'CLIENT_ID',
|
7
7
|
client_secret: 'CLIENT_SECRET',
|
8
|
-
oauth_token: 'ACCESS_TOKEN'
|
8
|
+
oauth_token: 'ACCESS_TOKEN',
|
9
|
+
use_hmac: ENV['USE_HMAC'],
|
9
10
|
)}
|
10
11
|
|
11
12
|
describe "#escrows" do
|
@@ -84,8 +85,7 @@ describe 'Client' do
|
|
84
85
|
ad = client.ad("12345")
|
85
86
|
expect(ad).to be_a Hashie::Mash
|
86
87
|
expect(ad.count).to eq 2
|
87
|
-
expect(ad.
|
88
|
-
expect(ad.ad_count).to eq 1
|
88
|
+
expect(ad.data.ad_id).to eq 12345
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
data/spec/spec_helper.rb
CHANGED
@@ -11,32 +11,34 @@ RSpec.configure do |config|
|
|
11
11
|
config.color = true
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
def stub_auth(method, path, fixture_name, params={})
|
15
|
+
headers = {}
|
16
|
+
|
17
|
+
if client.use_hmac
|
18
|
+
headers['Apiauth-Key'] = 'CLIENT_ID'
|
19
|
+
headers['Apiauth-Nonce'] = /\d+/
|
20
|
+
headers['Apiauth-Signature'] = /[a-f0-9]+/
|
21
|
+
else
|
22
|
+
headers['Authorization'] = 'Bearer ACCESS_TOKEN'
|
23
|
+
params['access_token'] = 'ACCESS_TOKEN'
|
24
|
+
end
|
25
|
+
|
26
|
+
stub_request(method, api_url(path))
|
27
|
+
.with(query: hash_including(params), headers: headers)
|
28
|
+
.to_return(status: 200, body: fixture(fixture_name), headers: {})
|
21
29
|
end
|
22
30
|
|
23
|
-
def
|
24
|
-
|
25
|
-
with(
|
26
|
-
# :query => {"Accept" => "application/json"},
|
27
|
-
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
|
28
|
-
#'Content-Type'=>'application/x-www-form-urlencoded',
|
29
|
-
'User-Agent'=>'Ruby'}).to_return(:status => 200, :body => fixture(fixture_name),
|
30
|
-
:headers => {})
|
31
|
+
def stub_get(path, fixture_name, params={})
|
32
|
+
stub_auth(:get, path, fixture_name, params)
|
31
33
|
end
|
32
34
|
|
33
35
|
def stub_post(path, fixture_name)
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
stub_auth(:post, path, fixture_name)
|
37
|
+
end
|
38
|
+
|
39
|
+
def stub_get_unauth(path, fixture_name)
|
40
|
+
stub_request(:get, api_url(path))
|
41
|
+
.to_return(status: 200, body: fixture(fixture_name), headers: {})
|
40
42
|
end
|
41
43
|
|
42
44
|
def fixture_path(file=nil)
|
metadata
CHANGED
@@ -1,113 +1,114 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: localbitcoins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Shutt
|
8
8
|
- Will Newman
|
9
9
|
- Albert Brown
|
10
|
+
- Maros Hluska
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date:
|
14
|
+
date: 2015-01-20 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: rspec
|
17
18
|
requirement: !ruby/object:Gem::Requirement
|
18
19
|
requirements:
|
19
|
-
- - ~>
|
20
|
+
- - "~>"
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: '2.13'
|
22
23
|
type: :development
|
23
24
|
prerelease: false
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
25
26
|
requirements:
|
26
|
-
- - ~>
|
27
|
+
- - "~>"
|
27
28
|
- !ruby/object:Gem::Version
|
28
29
|
version: '2.13'
|
29
30
|
- !ruby/object:Gem::Dependency
|
30
31
|
name: webmock
|
31
32
|
requirement: !ruby/object:Gem::Requirement
|
32
33
|
requirements:
|
33
|
-
- - ~>
|
34
|
+
- - "~>"
|
34
35
|
- !ruby/object:Gem::Version
|
35
36
|
version: '1.11'
|
36
37
|
type: :development
|
37
38
|
prerelease: false
|
38
39
|
version_requirements: !ruby/object:Gem::Requirement
|
39
40
|
requirements:
|
40
|
-
- - ~>
|
41
|
+
- - "~>"
|
41
42
|
- !ruby/object:Gem::Version
|
42
43
|
version: '1.11'
|
43
44
|
- !ruby/object:Gem::Dependency
|
44
45
|
name: json
|
45
46
|
requirement: !ruby/object:Gem::Requirement
|
46
47
|
requirements:
|
47
|
-
- - ~>
|
48
|
+
- - "~>"
|
48
49
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.8
|
50
|
+
version: '1.8'
|
50
51
|
type: :runtime
|
51
52
|
prerelease: false
|
52
53
|
version_requirements: !ruby/object:Gem::Requirement
|
53
54
|
requirements:
|
54
|
-
- - ~>
|
55
|
+
- - "~>"
|
55
56
|
- !ruby/object:Gem::Version
|
56
|
-
version: 1.8
|
57
|
+
version: '1.8'
|
57
58
|
- !ruby/object:Gem::Dependency
|
58
59
|
name: rest-client
|
59
60
|
requirement: !ruby/object:Gem::Requirement
|
60
61
|
requirements:
|
61
|
-
- - ~>
|
62
|
+
- - "~>"
|
62
63
|
- !ruby/object:Gem::Version
|
63
64
|
version: '1.6'
|
64
65
|
type: :runtime
|
65
66
|
prerelease: false
|
66
67
|
version_requirements: !ruby/object:Gem::Requirement
|
67
68
|
requirements:
|
68
|
-
- - ~>
|
69
|
+
- - "~>"
|
69
70
|
- !ruby/object:Gem::Version
|
70
71
|
version: '1.6'
|
71
72
|
- !ruby/object:Gem::Dependency
|
72
73
|
name: hashie
|
73
74
|
requirement: !ruby/object:Gem::Requirement
|
74
75
|
requirements:
|
75
|
-
- - ~>
|
76
|
+
- - "~>"
|
76
77
|
- !ruby/object:Gem::Version
|
77
78
|
version: 2.0.2
|
78
79
|
type: :runtime
|
79
80
|
prerelease: false
|
80
81
|
version_requirements: !ruby/object:Gem::Requirement
|
81
82
|
requirements:
|
82
|
-
- - ~>
|
83
|
+
- - "~>"
|
83
84
|
- !ruby/object:Gem::Version
|
84
85
|
version: 2.0.2
|
85
86
|
- !ruby/object:Gem::Dependency
|
86
87
|
name: activesupport
|
87
88
|
requirement: !ruby/object:Gem::Requirement
|
88
89
|
requirements:
|
89
|
-
- - ~>
|
90
|
+
- - "~>"
|
90
91
|
- !ruby/object:Gem::Version
|
91
92
|
version: '3'
|
92
93
|
type: :runtime
|
93
94
|
prerelease: false
|
94
95
|
version_requirements: !ruby/object:Gem::Requirement
|
95
96
|
requirements:
|
96
|
-
- - ~>
|
97
|
+
- - "~>"
|
97
98
|
- !ruby/object:Gem::Version
|
98
99
|
version: '3'
|
99
100
|
- !ruby/object:Gem::Dependency
|
100
101
|
name: oauth2
|
101
102
|
requirement: !ruby/object:Gem::Requirement
|
102
103
|
requirements:
|
103
|
-
- - ~>
|
104
|
+
- - "~>"
|
104
105
|
- !ruby/object:Gem::Version
|
105
106
|
version: 0.9.4
|
106
107
|
type: :runtime
|
107
108
|
prerelease: false
|
108
109
|
version_requirements: !ruby/object:Gem::Requirement
|
109
110
|
requirements:
|
110
|
-
- - ~>
|
111
|
+
- - "~>"
|
111
112
|
- !ruby/object:Gem::Version
|
112
113
|
version: 0.9.4
|
113
114
|
description: Ruby wrapper for the LocalBitcoins API
|
@@ -115,11 +116,12 @@ email:
|
|
115
116
|
- john.d.shutt@gmail.com
|
116
117
|
- will.newman@rutgers.edu
|
117
118
|
- albert_brown@brown.edu
|
119
|
+
- me@mhluska.com
|
118
120
|
executables: []
|
119
121
|
extensions: []
|
120
122
|
extra_rdoc_files: []
|
121
123
|
files:
|
122
|
-
- .gitignore
|
124
|
+
- ".gitignore"
|
123
125
|
- Gemfile
|
124
126
|
- Gemfile.lock
|
125
127
|
- README.md
|
@@ -179,7 +181,7 @@ files:
|
|
179
181
|
- spec/fixtures/wallet_send.json
|
180
182
|
- spec/localbitcoins_spec.rb
|
181
183
|
- spec/spec_helper.rb
|
182
|
-
homepage: http://
|
184
|
+
homepage: http://github.com/pemulis/localbitcoins
|
183
185
|
licenses:
|
184
186
|
- MIT
|
185
187
|
metadata: {}
|
@@ -189,17 +191,17 @@ require_paths:
|
|
189
191
|
- lib
|
190
192
|
required_ruby_version: !ruby/object:Gem::Requirement
|
191
193
|
requirements:
|
192
|
-
- -
|
194
|
+
- - ">="
|
193
195
|
- !ruby/object:Gem::Version
|
194
196
|
version: '0'
|
195
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
198
|
requirements:
|
197
|
-
- -
|
199
|
+
- - ">="
|
198
200
|
- !ruby/object:Gem::Version
|
199
201
|
version: '0'
|
200
202
|
requirements: []
|
201
203
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.
|
204
|
+
rubygems_version: 2.2.2
|
203
205
|
signing_key:
|
204
206
|
specification_version: 4
|
205
207
|
summary: LocalBitcoins API wrapper
|