ruby-imgur 0.01 → 0.02
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/Gemfile.lock +0 -2
- data/imgur.gemspec +0 -1
- data/lib/imgur.rb +0 -1
- data/lib/imgur/client.rb +19 -12
- data/lib/imgur/models/account.rb +12 -0
- data/lib/imgur/models/album.rb +18 -0
- data/lib/imgur/models/albums.rb +16 -0
- data/lib/imgur/models/comment.rb +17 -0
- data/lib/imgur/models/images.rb +15 -0
- data/lib/imgur/requests/get_album.rb +12 -0
- data/lib/imgur/requests/get_albums.rb +6 -0
- data/lib/imgur/requests/get_image.rb +12 -0
- data/lib/imgur/requests/get_images.rb +1 -10
- data/lib/imgur/version.rb +1 -1
- metadata +8 -17
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -4,7 +4,6 @@ PATH | |
| 4 4 | 
             
                ruby-imgur (0.01)
         | 
| 5 5 | 
             
                  addressable
         | 
| 6 6 | 
             
                  cistern (~> 0.1.3)
         | 
| 7 | 
            -
                  excon
         | 
| 8 7 | 
             
                  launchy
         | 
| 9 8 | 
             
                  multi_json
         | 
| 10 9 | 
             
                  rest-client
         | 
| @@ -17,7 +16,6 @@ GEM | |
| 17 16 | 
             
                cistern (0.1.4)
         | 
| 18 17 | 
             
                coderay (1.0.8)
         | 
| 19 18 | 
             
                diff-lcs (1.1.3)
         | 
| 20 | 
            -
                excon (0.16.10)
         | 
| 21 19 | 
             
                launchy (2.1.2)
         | 
| 22 20 | 
             
                  addressable (~> 2.3)
         | 
| 23 21 | 
             
                method_source (0.8.1)
         | 
    
        data/imgur.gemspec
    CHANGED
    
    
    
        data/lib/imgur.rb
    CHANGED
    
    
    
        data/lib/imgur/client.rb
    CHANGED
    
    | @@ -5,10 +5,16 @@ class Imgur::Client < Cistern::Service | |
| 5 5 |  | 
| 6 6 | 
             
              model :image
         | 
| 7 7 | 
             
              collection :images
         | 
| 8 | 
            +
              request :get_image
         | 
| 8 9 | 
             
              request :get_images
         | 
| 9 10 |  | 
| 11 | 
            +
              model :album
         | 
| 12 | 
            +
              collection :albums
         | 
| 13 | 
            +
              request :get_album
         | 
| 14 | 
            +
              request :get_albums
         | 
| 15 | 
            +
             | 
| 10 16 | 
             
              class Real
         | 
| 11 | 
            -
                attr_accessor :url, :path, : | 
| 17 | 
            +
                attr_accessor :url, :path, :parser, :logger, :config, :authorize_path, :token_path
         | 
| 12 18 |  | 
| 13 19 | 
             
                def initialize(options={})
         | 
| 14 20 | 
             
                  @config                          = options[:config] || YAML.load_file(File.expand_path("~/.imgurrc")) || YAML.load_file("config/config.yml")
         | 
| @@ -17,9 +23,11 @@ class Imgur::Client < Cistern::Service | |
| 17 23 | 
             
                  @url                             = URI.parse(options[:url]  || "https://api.imgur.com")
         | 
| 18 24 | 
             
                  @logger                          = options[:logger]         || Logger.new(nil)
         | 
| 19 25 | 
             
                  @parser                          = begin; require 'json'; JSON; end
         | 
| 26 | 
            +
                end
         | 
| 20 27 |  | 
| 21 | 
            -
             | 
| 22 | 
            -
                  @ | 
| 28 | 
            +
                def reset!
         | 
| 29 | 
            +
                  @config     = nil
         | 
| 30 | 
            +
                  @config     = YAML.load_file(File.expand_path("~/.imgurrc"))
         | 
| 23 31 | 
             
                end
         | 
| 24 32 |  | 
| 25 33 | 
             
                def refresh_token
         | 
| @@ -34,12 +42,13 @@ class Imgur::Client < Cistern::Service | |
| 34 42 | 
             
                  @config[:access_token] = new_params["access_token"]
         | 
| 35 43 | 
             
                  @config[:refresh_token] = new_params["refresh_token"]
         | 
| 36 44 | 
             
                  File.open(File.expand_path("~/.imgurrc"), "w") { |f| YAML.dump(@config, f) }
         | 
| 45 | 
            +
                  self.reset!
         | 
| 37 46 | 
             
                  return true
         | 
| 38 47 | 
             
                end
         | 
| 39 48 |  | 
| 40 49 | 
             
                def request(options={})
         | 
| 41 50 | 
             
                  method  = (options[:method] || :get).to_s.downcase
         | 
| 42 | 
            -
                  path    = "/3#{options[:path]}" || "/3"
         | 
| 51 | 
            +
                  path    =  @url.to_s + ("/3#{options[:path]}" || "/3")
         | 
| 43 52 | 
             
                  query   = options[:query] || {}
         | 
| 44 53 | 
             
                  unless @config[:access_token]
         | 
| 45 54 | 
             
                    Launchy.open(@url.to_s + @authorize_path + "?client_id=#{@config[:client_id]}&response_type=token")
         | 
| @@ -66,14 +75,12 @@ class Imgur::Client < Cistern::Service | |
| 66 75 | 
             
                                 end
         | 
| 67 76 | 
             
                  request_body ||= options[:params] || {}
         | 
| 68 77 | 
             
                  path           = "#{path}?#{query.map{|k,v| "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}"}.join("&")}" unless query.empty?
         | 
| 69 | 
            -
                   | 
| 70 | 
            -
             | 
| 71 | 
            -
                   | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
                                     response.body
         | 
| 76 | 
            -
                                   end
         | 
| 78 | 
            +
                  begin
         | 
| 79 | 
            +
                    response = RestClient.send(method, path, headers)
         | 
| 80 | 
            +
                  rescue RestClient::Forbidden
         | 
| 81 | 
            +
                    self.refresh_token
         | 
| 82 | 
            +
                    retry
         | 
| 83 | 
            +
                  end
         | 
| 77 84 | 
             
                  parsed_body    = response.strip.empty? ? {} : parser.load(response)
         | 
| 78 85 | 
             
                  status         = parsed_body.delete("status")
         | 
| 79 86 | 
             
                  Imgur::Response.new(status, {}, parsed_body).raise!
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            class Imgur::Client::Album < Imgur::Model
         | 
| 2 | 
            +
              identity :id
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              attribute :title
         | 
| 5 | 
            +
              attribute :link
         | 
| 6 | 
            +
              attribute :datetime,   type: :integer
         | 
| 7 | 
            +
              attribute :description
         | 
| 8 | 
            +
              attribute :privacy
         | 
| 9 | 
            +
              attribute :cover
         | 
| 10 | 
            +
              attribute :order,      type: :integer
         | 
| 11 | 
            +
              attribute :layout
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              def images
         | 
| 14 | 
            +
                url  = "/album/#{id}/images"
         | 
| 15 | 
            +
                data = connection.get_images(path: url).body["data"]
         | 
| 16 | 
            +
                connection.images.load(data)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            class Imgur::Client::Albums < Cistern::Collection
         | 
| 2 | 
            +
              include Imgur::PagedCollection
         | 
| 3 | 
            +
              include Imgur::Collection
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              model Imgur::Client::Album
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              model_root "data"
         | 
| 8 | 
            +
              model_request :get_album
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              collection_root "data"
         | 
| 11 | 
            +
              collection_request :get_albums
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              def get(id)
         | 
| 14 | 
            +
                connection.albums.new(connection.get_album(id).body["data"])
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            class Imgur::Client::Comment < Imgur::Model
         | 
| 2 | 
            +
              identity :id
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              attribute :image_id
         | 
| 5 | 
            +
              attribute :caption
         | 
| 6 | 
            +
              attribute :author
         | 
| 7 | 
            +
              attribute :author_id, type: :integer
         | 
| 8 | 
            +
              attribute :on_album,  type: :boolean
         | 
| 9 | 
            +
              attribute :album_cover
         | 
| 10 | 
            +
              attribute :ups,       type: :integer
         | 
| 11 | 
            +
              attribute :downs,     type: :integer
         | 
| 12 | 
            +
              attribute :points,    type: :float
         | 
| 13 | 
            +
              attribute :datetime,  type: :integer
         | 
| 14 | 
            +
              attribute :parent_id, type: :integer
         | 
| 15 | 
            +
              attribute :deleted,   type: :boolean
         | 
| 16 | 
            +
              attribute :children,  type: :array
         | 
| 17 | 
            +
            end
         | 
    
        data/lib/imgur/models/images.rb
    CHANGED
    
    | @@ -9,4 +9,19 @@ class Imgur::Client::Images < Cistern::Collection | |
| 9 9 |  | 
| 10 10 | 
             
              collection_root "data"
         | 
| 11 11 | 
             
              collection_request :get_images
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              def all(options={})
         | 
| 14 | 
            +
                path = ""
         | 
| 15 | 
            +
                path = path + "/#{options[:resource] || "gallery"}"
         | 
| 16 | 
            +
                if options[:section]
         | 
| 17 | 
            +
                  path = path + "/#{options[:section]}"
         | 
| 18 | 
            +
                elsif options[:subreddit]
         | 
| 19 | 
            +
                  path = path + "/r/#{options[:subreddit]}"
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
                path = path + "/#{options[:sort]}" if options[:sort]
         | 
| 22 | 
            +
                path = path + "/#{options[:page] || 0}.json"
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                data = connection.get_images(path: path).body["data"]
         | 
| 25 | 
            +
                connection.images.load(data)
         | 
| 26 | 
            +
              end
         | 
| 12 27 | 
             
            end
         | 
| @@ -1,16 +1,7 @@ | |
| 1 1 | 
             
            class Imgur::Client
         | 
| 2 2 | 
             
              class Real
         | 
| 3 3 | 
             
                def get_images(params={})
         | 
| 4 | 
            -
                  path =  | 
| 5 | 
            -
                  path = path + "/#{params[:resource] || "gallery"}"
         | 
| 6 | 
            -
                  if params[:section]
         | 
| 7 | 
            -
                    path = path + "/#{params[:section]}"
         | 
| 8 | 
            -
                  elsif params[:subreddit]
         | 
| 9 | 
            -
                    path = path + "/r/#{params[:subreddit]}"
         | 
| 10 | 
            -
                  end
         | 
| 11 | 
            -
                  path = path + "/#{params[:sort]}" if params[:sort]
         | 
| 12 | 
            -
                  path = path + "/#{params[:page] || 0}.json"
         | 
| 13 | 
            -
             | 
| 4 | 
            +
                  path = params[:path]
         | 
| 14 5 | 
             
                  request(
         | 
| 15 6 | 
             
                    :method => :get,
         | 
| 16 7 | 
             
                    :path   => path,
         | 
    
        data/lib/imgur/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ruby-imgur
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: '0. | 
| 4 | 
            +
              version: '0.02'
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -59,22 +59,6 @@ dependencies: | |
| 59 59 | 
             
                - - ! '>='
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 61 | 
             
                    version: '0'
         | 
| 62 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 63 | 
            -
              name: excon
         | 
| 64 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                none: false
         | 
| 66 | 
            -
                requirements:
         | 
| 67 | 
            -
                - - ! '>='
         | 
| 68 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 69 | 
            -
                    version: '0'
         | 
| 70 | 
            -
              type: :runtime
         | 
| 71 | 
            -
              prerelease: false
         | 
| 72 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 73 | 
            -
                none: false
         | 
| 74 | 
            -
                requirements:
         | 
| 75 | 
            -
                - - ! '>='
         | 
| 76 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 77 | 
            -
                    version: '0'
         | 
| 78 62 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 79 63 | 
             
              name: launchy
         | 
| 80 64 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -127,9 +111,16 @@ files: | |
| 127 111 | 
             
            - lib/imgur/collection.rb
         | 
| 128 112 | 
             
            - lib/imgur/logger.rb
         | 
| 129 113 | 
             
            - lib/imgur/model.rb
         | 
| 114 | 
            +
            - lib/imgur/models/account.rb
         | 
| 115 | 
            +
            - lib/imgur/models/album.rb
         | 
| 116 | 
            +
            - lib/imgur/models/albums.rb
         | 
| 117 | 
            +
            - lib/imgur/models/comment.rb
         | 
| 130 118 | 
             
            - lib/imgur/models/image.rb
         | 
| 131 119 | 
             
            - lib/imgur/models/images.rb
         | 
| 132 120 | 
             
            - lib/imgur/paged_collection.rb
         | 
| 121 | 
            +
            - lib/imgur/requests/get_album.rb
         | 
| 122 | 
            +
            - lib/imgur/requests/get_albums.rb
         | 
| 123 | 
            +
            - lib/imgur/requests/get_image.rb
         | 
| 133 124 | 
             
            - lib/imgur/requests/get_images.rb
         | 
| 134 125 | 
             
            - lib/imgur/response.rb
         | 
| 135 126 | 
             
            - lib/imgur/version.rb
         |