pixy 0.1.1 → 0.1.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2b605a212e121ae3c92c780497fe7d9cfc37614b
4
+ data.tar.gz: 2dbd56e9d55bc15a1c3b9a9e444ed26cdd2d274d
5
+ SHA512:
6
+ metadata.gz: 49a5366f356011b36dfedb1c807115e880df36f25136b3ddb3075b8feeba75a1a685ea82d6209e16e5f4185a2baccf696a35b6c7ae9b87708e97b0c5f988049f
7
+ data.tar.gz: 124ddc6aa5de4025bb760425c3053fc04d6288b256a75f55e6c44affdd91cab4154efe51428b7290d553a702e717fe50bf07f5ed88925473feef79520cf56bda
data/.travis.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  rvm:
2
- - 1.9.2
3
2
  - 1.9.3
3
+ - 2.0.0
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Nihad Abbasov / NARKOZ
1
+ Copyright (c) 2011-2013 Nihad Abbasov <mail@narkoz.me>
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Pixy [![Build Status](https://secure.travis-ci.org/NARKOZ/pixy.png)](http://travis-ci.org/NARKOZ/pixy)
1
+ # Pixy [![Build Status](https://travis-ci.org/NARKOZ/pixy.png)](http://travis-ci.org/NARKOZ/pixy)
2
2
 
3
3
  Pixy is an API wrapper for Pixiv url shortener - [p.tl](http://p.tl/)
4
4
 
@@ -37,5 +37,5 @@ pixy.counter
37
37
 
38
38
  ## Copyright
39
39
 
40
- Copyright (c) 2011 Nihad Abbasov
40
+ Copyright (c) 2011-2013 Nihad Abbasov
41
41
  BSD License.
data/lib/pixy/errors.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  module Pixy
2
- class EmptyLongUrl < StandardError; end
3
- class EmptyApiKey < StandardError; end
4
- class ApiLimit < StandardError; end
5
- class InvalidApiKey < StandardError; end
6
- class InvalidLongUrl < StandardError; end
7
- class UnknownError < StandardError; end
8
- class MissingApiKey < ArgumentError; end
2
+ class Error < StandardError; end
3
+ class EmptyLongUrl < Error; end
4
+ class EmptyApiKey < Error; end
5
+ class ApiLimit < Error; end
6
+ class InvalidApiKey < Error; end
7
+ class InvalidLongUrl < Error; end
8
+ class UnknownError < Error; end
9
+ class MissingApiKey < Error; end
9
10
  end
data/lib/pixy/shorten.rb CHANGED
@@ -1,12 +1,12 @@
1
1
  module Pixy
2
2
  class Shorten
3
3
  API_URL = 'http://p.tl/api/api_simple.php'
4
- attr_accessor :status, :long_url, :short_url, :counter
4
+ attr_reader :status, :long_url, :short_url, :counter
5
5
 
6
6
  def initialize(key, url)
7
7
  uri = URI "#{API_URL}?key=#{key}&url=#{escape_url escape_url(url)}"
8
8
  response = Net::HTTP.get_response(uri)
9
- result = JSON.parse(response.body)
9
+ result = MultiJson.load(response.body)
10
10
 
11
11
  if response.code.to_i == 200
12
12
  @status = result['status']
data/lib/pixy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pixy
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/pixy.rb CHANGED
@@ -2,25 +2,20 @@ require 'pixy/version'
2
2
  require 'pixy/shorten'
3
3
  require 'pixy/errors'
4
4
  require 'net/http'
5
- require 'json'
5
+ require 'multi_json'
6
6
 
7
7
  module Pixy
8
- extend self
9
-
10
- def shorten(key=nil, url='')
8
+ def self.shorten(key=nil, url='')
11
9
  raise MissingApiKey, "API key is required" if key.nil?
12
- Pixy::Shorten.new(key, url)
10
+ Shorten.new(key, url)
13
11
  end
14
12
 
15
- def shorten!(key=nil, url='')
16
- Pixy.shorten(key, url).short_url
13
+ def self.shorten!(key=nil, url='')
14
+ shorten(key, url).short_url
17
15
  end
18
16
 
19
- def stats(key=nil, url='^')
20
- pixy = Pixy.shorten(key, url)
21
- {
22
- :calls => pixy.counter,
23
- :limit => 1000 - pixy.counter
24
- }
17
+ def self.stats(key=nil, url='^')
18
+ pixy = shorten(key, url) # submit fake url to get API rate limit
19
+ { :calls => pixy.counter, :limit => 1000 - pixy.counter }
25
20
  end
26
21
  end
data/pixy.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Pixy::VERSION
17
17
 
18
- gem.add_runtime_dependency 'json'
18
+ gem.add_dependency 'multi_json', '~> 1.7'
19
19
 
20
20
  gem.add_development_dependency 'rake'
21
21
  gem.add_development_dependency 'rspec'
@@ -1,79 +1,62 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Pixy::Shorten do
4
- it { Pixy.should respond_to :shorten }
5
- it { Pixy.should respond_to :shorten! }
4
+ let(:pixy) { Pixy::Shorten.new('API_KEY', 'https://github.com/narkoz/pixy') }
6
5
 
7
- describe "#shorten!" do
8
- it "should return a short url" do
9
- Pixy.shorten!('API_KEY', 'https://github.com/narkoz/pixy').should == 'http://p.tl/Us9R'
6
+ describe "#status" do
7
+ it "should return a response status" do
8
+ pixy.status.should == 'ok'
10
9
  end
11
10
  end
12
11
 
13
- context "when a new short url requested" do
14
- context "without arguments" do
15
- it "should raise a required API key error" do
16
- lambda { Pixy.shorten }.should raise_error(Pixy::MissingApiKey, "API key is required")
17
- end
12
+ describe "#long_url" do
13
+ it "should return a long url" do
14
+ pixy.long_url.should == 'https://github.com/narkoz/pixy'
18
15
  end
16
+ end
19
17
 
20
- context "with arguments" do
21
- subject { Pixy.shorten('API_KEY', 'https://github.com/narkoz/pixy') }
22
-
23
- describe "#status" do
24
- it "should return a response status" do
25
- subject.status.should == 'ok'
26
- end
27
- end
28
-
29
- describe "#long_url" do
30
- it "should return a long url" do
31
- subject.long_url.should == 'https://github.com/narkoz/pixy'
32
- end
33
- end
34
-
35
- describe "#short_url" do
36
- it "should return a short url" do
37
- subject.short_url.should == 'http://p.tl/Us9R'
38
- end
39
- end
18
+ describe "#short_url" do
19
+ it "should return a short url" do
20
+ pixy.short_url.should == 'http://p.tl/Us9R'
21
+ end
22
+ end
40
23
 
41
- describe "#counter" do
42
- it "should return a request number" do
43
- subject.counter.should == 12
44
- end
45
- end
24
+ describe "#counter" do
25
+ it "should return a request number" do
26
+ pixy.counter.should == 12
27
+ end
28
+ end
46
29
 
47
- context "with empty long url" do
48
- it "should raise EmptyLongUrl" do
49
- lambda {
50
- Pixy.shorten('API_KEY', '')
51
- }.should raise_error(Pixy::EmptyLongUrl, "Missing long URL.")
52
- end
30
+ describe "exceptions" do
31
+ context "when empty long url" do
32
+ it "should raise EmptyLongUrl" do
33
+ expect {
34
+ Pixy::Shorten.new('API_KEY', '')
35
+ }.to raise_error(Pixy::EmptyLongUrl, "Missing long URL.")
53
36
  end
37
+ end
54
38
 
55
- context "with empty API key" do
56
- it "should raise EmptyApiKey" do
57
- lambda {
58
- Pixy.shorten('', 'https://github.com/narkoz/pixy')
59
- }.should raise_error(Pixy::EmptyApiKey, "Missing API key.")
60
- end
39
+ context "when empty API key" do
40
+ it "should raise EmptyApiKey" do
41
+ expect {
42
+ Pixy::Shorten.new('', 'https://github.com/narkoz/pixy')
43
+ }.to raise_error(Pixy::EmptyApiKey, "Missing API key.")
61
44
  end
45
+ end
62
46
 
63
- context "with invalid API key" do
64
- it "should raise InvalidApiKey" do
65
- lambda {
66
- Pixy.shorten('invalid_API_KEY', 'https://github.com/narkoz/pixy')
67
- }.should raise_error(Pixy::InvalidApiKey, "API key is invalid.")
68
- end
47
+ context "when invalid API key" do
48
+ it "should raise InvalidApiKey" do
49
+ expect {
50
+ Pixy::Shorten.new('invalid_API_KEY', 'https://github.com/narkoz/pixy')
51
+ }.to raise_error(Pixy::InvalidApiKey, "API key is invalid.")
69
52
  end
53
+ end
70
54
 
71
- context "with invalid long url" do
72
- it "should raise InvalidLongUrl" do
73
- lambda {
74
- Pixy.shorten('API_KEY', '^_^')
75
- }.should raise_error(Pixy::InvalidLongUrl, "The URL can not be shortened.")
76
- end
55
+ context "when invalid long url" do
56
+ it "should raise InvalidLongUrl" do
57
+ expect {
58
+ Pixy::Shorten.new('API_KEY', '^_^')
59
+ }.to raise_error(Pixy::InvalidLongUrl, "The URL can not be shortened.")
77
60
  end
78
61
  end
79
62
  end
data/spec/pixy_spec.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pixy do
4
+ it { should respond_to :shorten }
5
+ it { should respond_to :shorten! }
6
+ it { should respond_to :stats }
7
+
8
+ describe "#shorten" do
9
+ context "without arguments" do
10
+ it "should raise a required API key error" do
11
+ expect { Pixy.shorten }.to raise_error(Pixy::MissingApiKey, "API key is required")
12
+ end
13
+ end
14
+
15
+ context "with arguments" do
16
+ it "should return an instance of Pixy::Shorten" do
17
+ pixy = Pixy.shorten('API_KEY', 'https://github.com/narkoz/pixy')
18
+ pixy.should be_a_kind_of Pixy::Shorten
19
+ end
20
+ end
21
+ end
22
+
23
+ describe "#shorten!" do
24
+ it "should return a short url" do
25
+ Pixy.shorten!('API_KEY', 'https://github.com/narkoz/pixy').should == 'http://p.tl/Us9R'
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -1,60 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nihad Abbasov
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-12-28 00:00:00.000000000 Z
11
+ date: 2013-04-06 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: json
16
- requirement: &2168716640 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: multi_json
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: '1.7'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *2168716640
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: rake
27
- requirement: &2168716180 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *2168716180
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: rspec
38
- requirement: &2168715720 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *2168715720
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: fakeweb
49
- requirement: &2168715240 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *2168715240
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  description: Pixy is an API wrapper for Pixiv url shortener - p.tl
59
70
  email:
60
71
  - mail@narkoz.me
@@ -79,36 +90,30 @@ files:
79
90
  - spec/fixtures/invalid_long_url.json
80
91
  - spec/fixtures/ok.json
81
92
  - spec/pixy/shorten_spec.rb
93
+ - spec/pixy_spec.rb
82
94
  - spec/spec_helper.rb
83
95
  homepage: https://github.com/narkoz/pixy
84
96
  licenses: []
97
+ metadata: {}
85
98
  post_install_message:
86
99
  rdoc_options: []
87
100
  require_paths:
88
101
  - lib
89
102
  required_ruby_version: !ruby/object:Gem::Requirement
90
- none: false
91
103
  requirements:
92
- - - ! '>='
104
+ - - '>='
93
105
  - !ruby/object:Gem::Version
94
106
  version: '0'
95
- segments:
96
- - 0
97
- hash: 1002057726999351752
98
107
  required_rubygems_version: !ruby/object:Gem::Requirement
99
- none: false
100
108
  requirements:
101
- - - ! '>='
109
+ - - '>='
102
110
  - !ruby/object:Gem::Version
103
111
  version: '0'
104
- segments:
105
- - 0
106
- hash: 1002057726999351752
107
112
  requirements: []
108
113
  rubyforge_project:
109
- rubygems_version: 1.8.12
114
+ rubygems_version: 2.0.3
110
115
  signing_key:
111
- specification_version: 3
116
+ specification_version: 4
112
117
  summary: API wrapper for Pixiv url shortener
113
118
  test_files:
114
119
  - spec/fixtures/empty_api_key.json
@@ -117,4 +122,5 @@ test_files:
117
122
  - spec/fixtures/invalid_long_url.json
118
123
  - spec/fixtures/ok.json
119
124
  - spec/pixy/shorten_spec.rb
125
+ - spec/pixy_spec.rb
120
126
  - spec/spec_helper.rb