deviantart 0.2.2 → 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.
- checksums.yaml +4 -4
 - data/.travis.yml +2 -2
 - data/README.md +1 -1
 - data/Rakefile +42 -26
 - data/deviantart.gemspec +1 -1
 - data/lib/deviantart.rb +6 -2
 - data/lib/deviantart/base.rb +74 -0
 - data/lib/deviantart/client.rb +52 -18
 - data/lib/deviantart/client/collections.rb +30 -0
 - data/lib/deviantart/client/data.rb +31 -0
 - data/lib/deviantart/client/deviation.rb +36 -0
 - data/lib/deviantart/client/feed.rb +18 -0
 - data/lib/deviantart/client/gallery.rb +46 -0
 - data/lib/deviantart/client/user.rb +75 -0
 - data/lib/deviantart/collections.rb +5 -23
 - data/lib/deviantart/collections/folders.rb +8 -0
 - data/lib/deviantart/data.rb +3 -21
 - data/lib/deviantart/data/countries.rb +7 -0
 - data/lib/deviantart/data/privacy.rb +7 -0
 - data/lib/deviantart/data/submission.rb +7 -0
 - data/lib/deviantart/data/tos.rb +7 -0
 - data/lib/deviantart/deviation.rb +9 -27
 - data/lib/deviantart/deviation/content.rb +6 -0
 - data/lib/deviantart/deviation/download.rb +6 -0
 - data/lib/deviantart/deviation/whofaved.rb +7 -0
 - data/lib/deviantart/error.rb +12 -0
 - data/lib/deviantart/feed.rb +3 -11
 - data/lib/deviantart/feed/home.rb +14 -0
 - data/lib/deviantart/gallery.rb +5 -38
 - data/lib/deviantart/gallery/all.rb +8 -0
 - data/lib/deviantart/gallery/folders.rb +8 -0
 - data/lib/deviantart/status.rb +10 -0
 - data/lib/deviantart/user.rb +5 -53
 - data/lib/deviantart/user/friends.rb +8 -0
 - data/lib/deviantart/user/friends/search.rb +8 -0
 - data/lib/deviantart/user/profile.rb +11 -0
 - data/lib/deviantart/user/statuses.rb +8 -0
 - data/lib/deviantart/user/watchers.rb +8 -0
 - data/lib/deviantart/user/whois.rb +8 -0
 - data/lib/deviantart/version.rb +1 -1
 - metadata +29 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 162d1fde53c7eccf7687ae2392536e3b0bd0540a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 13ac6cbf255db8fd66ec059dbc2828b495990168
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f39a3cfe0373bebd317ed7c22a7dfaf6356af1ddf641c0e62c15012edd0055d744b6c4a7165c3bbedb49ed45bdf418bb7532b3a0531394bd436092f1cd903123
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 024e4b0350e98ad6d0a314733989c0167cd89bd209dcdabd1a940dc101a7d7e10e2a4bc6d9f019c07b57ba699212b3a965d330b12c6c0fbbbd01d1c3f1c4ad8f
         
     | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,6 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require 'bundler/gem_tasks'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'readline'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'net/http'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            BROWSER_COMMAND_FILE = 'test/browser_command'
         
     | 
| 
      
 7 
     | 
    
         
            +
            AUTHORIZATION_CODE_FILE = 'test/fixtures/authorization_code.json'
         
     | 
| 
      
 8 
     | 
    
         
            +
            OUTPUT_PIPE = 'test/output_pipe'
         
     | 
| 
       4 
9 
     | 
    
         | 
| 
       5 
10 
     | 
    
         
             
            test_pettern = FileList['test/**/*_test.rb']
         
     | 
| 
       6 
11 
     | 
    
         | 
| 
         @@ -11,20 +16,40 @@ Rake::TestTask.new(:test) do |t| 
     | 
|
| 
       11 
16 
     | 
    
         
             
            end
         
     | 
| 
       12 
17 
     | 
    
         | 
| 
       13 
18 
     | 
    
         
             
            def get_browser_command
         
     | 
| 
       14 
     | 
    
         
            -
               
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                 
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
               
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
              open(BROWSER_COMMAND_FILE, 'r').read
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            file BROWSER_COMMAND_FILE do
         
     | 
| 
      
 23 
     | 
    
         
            +
              browser_command = Readline.readline('Input your browser command> ')
         
     | 
| 
      
 24 
     | 
    
         
            +
              open(BROWSER_COMMAND_FILE, 'w') do |f|
         
     | 
| 
      
 25 
     | 
    
         
            +
                f.write(browser_command)
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
              puts "Wrote \"#{browser_command}\" to #{BROWSER_COMMAND_FILE}"
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            def wait_oauth_consumer_booting
         
     | 
| 
      
 31 
     | 
    
         
            +
              http = Net::HTTP.new('localhost', 4567)
         
     | 
| 
      
 32 
     | 
    
         
            +
              http.open_timeout = 1
         
     | 
| 
      
 33 
     | 
    
         
            +
              begin
         
     | 
| 
      
 34 
     | 
    
         
            +
                http.start
         
     | 
| 
      
 35 
     | 
    
         
            +
              rescue Errno::ECONNREFUSED
         
     | 
| 
      
 36 
     | 
    
         
            +
                sleep 1
         
     | 
| 
      
 37 
     | 
    
         
            +
                retry
         
     | 
| 
      
 38 
     | 
    
         
            +
              rescue Net::OpenTimeout
         
     | 
| 
      
 39 
     | 
    
         
            +
                retry
         
     | 
| 
      
 40 
     | 
    
         
            +
              rescue => e
         
     | 
| 
      
 41 
     | 
    
         
            +
                puts e.class.name
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
              while http.head('/').code != '200'
         
     | 
| 
      
 44 
     | 
    
         
            +
                sleep 1
         
     | 
| 
       24 
45 
     | 
    
         
             
              end
         
     | 
| 
       25 
46 
     | 
    
         
             
            end
         
     | 
| 
       26 
47 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
            file AUTHORIZATION_CODE_FILE => BROWSER_COMMAND_FILE do
         
     | 
| 
      
 49 
     | 
    
         
            +
              if File.exists?(OUTPUT_PIPE)
         
     | 
| 
      
 50 
     | 
    
         
            +
                File.unlink(OUTPUT_PIPE)
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
              File.mkfifo(OUTPUT_PIPE)
         
     | 
| 
       28 
53 
     | 
    
         
             
              cv = ConditionVariable.new
         
     | 
| 
       29 
54 
     | 
    
         
             
              mutex = Mutex.new
         
     | 
| 
       30 
55 
     | 
    
         
             
              is_pinged = false
         
     | 
| 
         @@ -34,6 +59,7 @@ def get_access_token 
     | 
|
| 
       34 
59 
     | 
    
         
             
                  system('bundle exec ruby test/oauth_consumer.rb > /dev/null 2>&1 &')
         
     | 
| 
       35 
60 
     | 
    
         
             
                  open(OUTPUT_PIPE).read # block to get 'ping'
         
     | 
| 
       36 
61 
     | 
    
         
             
                  is_pinged = true
         
     | 
| 
      
 62 
     | 
    
         
            +
                  wait_oauth_consumer_booting
         
     | 
| 
       37 
63 
     | 
    
         
             
                  cv.signal
         
     | 
| 
       38 
64 
     | 
    
         
             
                }
         
     | 
| 
       39 
65 
     | 
    
         
             
              }
         
     | 
| 
         @@ -60,20 +86,10 @@ def get_access_token 
     | 
|
| 
       60 
86 
     | 
    
         
             
              open(AUTHORIZATION_CODE_FILE, 'w') do |f|
         
     | 
| 
       61 
87 
     | 
    
         
             
                f.write(result)
         
     | 
| 
       62 
88 
     | 
    
         
             
              end
         
     | 
| 
      
 89 
     | 
    
         
            +
              File.unlink(OUTPUT_PIPE)
         
     | 
| 
       63 
90 
     | 
    
         
             
            end
         
     | 
| 
       64 
91 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
            task :access_token  
     | 
| 
       66 
     | 
    
         
            -
              AUTHORIZATION_CODE_FILE = 'test/fixtures/authorization_code.json'
         
     | 
| 
       67 
     | 
    
         
            -
              if !File.exists?(AUTHORIZATION_CODE_FILE)
         
     | 
| 
       68 
     | 
    
         
            -
                OUTPUT_PIPE = 'test/output_pipe'
         
     | 
| 
       69 
     | 
    
         
            -
                if File.exists?(OUTPUT_PIPE)
         
     | 
| 
       70 
     | 
    
         
            -
                  File.unlink(OUTPUT_PIPE)
         
     | 
| 
       71 
     | 
    
         
            -
                end
         
     | 
| 
       72 
     | 
    
         
            -
                File.mkfifo(OUTPUT_PIPE)
         
     | 
| 
       73 
     | 
    
         
            -
                get_access_token
         
     | 
| 
       74 
     | 
    
         
            -
                File.unlink(OUTPUT_PIPE)
         
     | 
| 
       75 
     | 
    
         
            -
              end
         
     | 
| 
       76 
     | 
    
         
            -
            end
         
     | 
| 
      
 92 
     | 
    
         
            +
            task :access_token => AUTHORIZATION_CODE_FILE
         
     | 
| 
       77 
93 
     | 
    
         | 
| 
       78 
94 
     | 
    
         
             
            Rake::TestTask.new(:real) do |t|
         
     | 
| 
       79 
95 
     | 
    
         
             
              t.deps << :access_token
         
     | 
    
        data/deviantart.gemspec
    CHANGED
    
    | 
         @@ -14,7 +14,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       14 
14 
     | 
    
         
             
              spec.homepage      = "https://github.com/aycabta/deviantart"
         
     | 
| 
       15 
15 
     | 
    
         
             
              spec.license       = "MIT"
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test| 
     | 
| 
      
 17 
     | 
    
         
            +
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|features)/}) }
         
     | 
| 
       18 
18 
     | 
    
         
             
              spec.bindir        = "exe"
         
     | 
| 
       19 
19 
     | 
    
         
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
       20 
20 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
    
        data/lib/deviantart.rb
    CHANGED
    
    | 
         @@ -1,5 +1,9 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/version'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/client'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'deviantart/deviation'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'deviantart/user'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'deviantart/status'
         
     | 
| 
       3 
7 
     | 
    
         | 
| 
       4 
8 
     | 
    
         
             
            module DeviantArt
         
     | 
| 
       5 
9 
     | 
    
         
             
              # Bypass args and block to DeviantArt::Client
         
     | 
| 
         @@ -0,0 +1,74 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Base
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :attrs
         
     | 
| 
      
 4 
     | 
    
         
            +
                @points_class_mapping = {}
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                def initialize(attrs)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @attrs = attrs
         
     | 
| 
      
 8 
     | 
    
         
            +
                  define_hash_attrs(self, @attrs, [])
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 12 
     | 
    
         
            +
                  def points_class_mapping
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @points_class_mapping ||= {}
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  def points_class_mapping=(v)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    @points_class_mapping = v
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  def point_to_class(point, klass)
         
     | 
| 
      
 20 
     | 
    
         
            +
                    self.points_class_mapping[point] = klass
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                private
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def define_hash_attrs(receiver, attrs, point)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  attrs.each_pair do |key, value|
         
     | 
| 
      
 28 
     | 
    
         
            +
                    attr_accessor_with_receiver(receiver, key)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    receiver.instance_variable_set(:"@#{key}", nested_value(value, point + [key.to_sym]))
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  receiver
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                def attr_accessor_with_receiver(receiver, name)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  receiver.instance_eval do
         
     | 
| 
      
 36 
     | 
    
         
            +
                    reader_name = name.to_sym
         
     | 
| 
      
 37 
     | 
    
         
            +
                    writer_name = :"#{name}="
         
     | 
| 
      
 38 
     | 
    
         
            +
                    variable_name = :"@#{name}"
         
     | 
| 
      
 39 
     | 
    
         
            +
                    if !receiver.respond_to?(reader_name)
         
     | 
| 
      
 40 
     | 
    
         
            +
                      define_singleton_method(reader_name, proc { |dummy=nil| instance_variable_get(variable_name) })
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
                    if !receiver.respond_to?(writer_name)
         
     | 
| 
      
 43 
     | 
    
         
            +
                      define_singleton_method(writer_name, method(:instance_variable_set).curry.(variable_name))
         
     | 
| 
      
 44 
     | 
    
         
            +
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                def define_array_attrs(array, attrs, point)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  attrs.each do |value|
         
     | 
| 
      
 50 
     | 
    
         
            +
                    array << nested_value(value, point)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
                  array
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                def nested_value(value, point)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  if self.class.points_class_mapping.include?(point)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    self.class.points_class_mapping[point].new(value)
         
     | 
| 
      
 58 
     | 
    
         
            +
                  else
         
     | 
| 
      
 59 
     | 
    
         
            +
                    case value
         
     | 
| 
      
 60 
     | 
    
         
            +
                    when Array
         
     | 
| 
      
 61 
     | 
    
         
            +
                      define_array_attrs(Array.new, value, point + [:[]])
         
     | 
| 
      
 62 
     | 
    
         
            +
                    when Hash
         
     | 
| 
      
 63 
     | 
    
         
            +
                      define_hash_attrs(Object.new, value, point)
         
     | 
| 
      
 64 
     | 
    
         
            +
                    else
         
     | 
| 
      
 65 
     | 
    
         
            +
                      value
         
     | 
| 
      
 66 
     | 
    
         
            +
                    end
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              class Deviation < Base; end
         
     | 
| 
      
 72 
     | 
    
         
            +
              class User < Base; end
         
     | 
| 
      
 73 
     | 
    
         
            +
              class Status < Base; end
         
     | 
| 
      
 74 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/deviantart/client.rb
    CHANGED
    
    | 
         @@ -1,10 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'deviantart/deviation'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'deviantart/gallery'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'deviantart/collections'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'deviantart/user'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'deviantart/data'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'deviantart/feed'
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/client/deviation'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/client/gallery'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'deviantart/client/collections'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'deviantart/client/user'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'deviantart/client/data'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'deviantart/client/feed'
         
     | 
| 
       7 
7 
     | 
    
         
             
            # TODO: comments, cured, messages, notes, stash, util
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'deviantart/error'
         
     | 
| 
       8 
9 
     | 
    
         
             
            require 'net/http'
         
     | 
| 
       9 
10 
     | 
    
         
             
            require 'uri'
         
     | 
| 
       10 
11 
     | 
    
         
             
            require 'json'
         
     | 
| 
         @@ -15,13 +16,13 @@ end 
     | 
|
| 
       15 
16 
     | 
    
         | 
| 
       16 
17 
     | 
    
         
             
            module DeviantArt
         
     | 
| 
       17 
18 
     | 
    
         
             
              class Client
         
     | 
| 
       18 
     | 
    
         
            -
                include DeviantArt::Deviation
         
     | 
| 
       19 
     | 
    
         
            -
                include DeviantArt::Gallery
         
     | 
| 
       20 
     | 
    
         
            -
                include DeviantArt::Collections
         
     | 
| 
       21 
     | 
    
         
            -
                include DeviantArt::User
         
     | 
| 
       22 
     | 
    
         
            -
                include DeviantArt::Data
         
     | 
| 
       23 
     | 
    
         
            -
                include DeviantArt::Feed
         
     | 
| 
       24 
     | 
    
         
            -
                attr_accessor :access_token, :client_id, :client_secret, :code, :redirect_uri, :grant_type, :access_token_auto_refresh, :refresh_token, :host
         
     | 
| 
      
 19 
     | 
    
         
            +
                include DeviantArt::Client::Deviation
         
     | 
| 
      
 20 
     | 
    
         
            +
                include DeviantArt::Client::Gallery
         
     | 
| 
      
 21 
     | 
    
         
            +
                include DeviantArt::Client::Collections
         
     | 
| 
      
 22 
     | 
    
         
            +
                include DeviantArt::Client::User
         
     | 
| 
      
 23 
     | 
    
         
            +
                include DeviantArt::Client::Data
         
     | 
| 
      
 24 
     | 
    
         
            +
                include DeviantArt::Client::Feed
         
     | 
| 
      
 25 
     | 
    
         
            +
                attr_accessor :access_token, :client_id, :client_secret, :code, :redirect_uri, :grant_type, :access_token_auto_refresh, :refresh_token, :host, :headers
         
     | 
| 
       25 
26 
     | 
    
         
             
                attr_writer :user_agent
         
     | 
| 
       26 
27 
     | 
    
         
             
                @@default_host = 'www.deviantart.com'
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
         @@ -42,6 +43,7 @@ module DeviantArt 
     | 
|
| 
       42 
43 
     | 
    
         
             
                # [#redirect_uri] URL what is exactly match the value in authorization step.
         
     | 
| 
       43 
44 
     | 
    
         
             
                # [#code] Authorization step returns this.
         
     | 
| 
       44 
45 
     | 
    
         
             
                # [#refresh_token] Refresh token for +:authorization_code+.
         
     | 
| 
      
 46 
     | 
    
         
            +
                # [#headers] Add custom headers for request.
         
     | 
| 
       45 
47 
     | 
    
         
             
                #
         
     | 
| 
       46 
48 
     | 
    
         
             
                # For refresh token with +:client_credentials+
         
     | 
| 
       47 
49 
     | 
    
         
             
                #
         
     | 
| 
         @@ -52,6 +54,9 @@ module DeviantArt 
     | 
|
| 
       52 
54 
     | 
    
         
             
                  @host = @@default_host
         
     | 
| 
       53 
55 
     | 
    
         
             
                  @on_refresh_access_token = nil
         
     | 
| 
       54 
56 
     | 
    
         
             
                  @on_refresh_authorization_code = nil
         
     | 
| 
      
 57 
     | 
    
         
            +
                  @access_token_auto_refresh = true
         
     | 
| 
      
 58 
     | 
    
         
            +
                  @grant_type = nil
         
     | 
| 
      
 59 
     | 
    
         
            +
                  @headers = {}
         
     | 
| 
       55 
60 
     | 
    
         
             
                  options.each do |key, value|
         
     | 
| 
       56 
61 
     | 
    
         
             
                    instance_variable_set("@#{key}", value)
         
     | 
| 
       57 
62 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -72,11 +77,11 @@ module DeviantArt 
     | 
|
| 
       72 
77 
     | 
    
         | 
| 
       73 
78 
     | 
    
         
             
                # Auto refresh access token flag
         
     | 
| 
       74 
79 
     | 
    
         
             
                def access_token_auto_refresh?
         
     | 
| 
       75 
     | 
    
         
            -
                  @access_token_auto_refresh
         
     | 
| 
      
 80 
     | 
    
         
            +
                  @access_token_auto_refresh && !@grant_type.nil?
         
     | 
| 
       76 
81 
     | 
    
         
             
                end
         
     | 
| 
       77 
82 
     | 
    
         | 
| 
       78 
83 
     | 
    
         
             
                # Access API with params by method
         
     | 
| 
       79 
     | 
    
         
            -
                def perform(method, path, params = {})
         
     | 
| 
      
 84 
     | 
    
         
            +
                def perform(klass, method, path, params = {})
         
     | 
| 
       80 
85 
     | 
    
         
             
                  if @access_token.nil? && access_token_auto_refresh?
         
     | 
| 
       81 
86 
     | 
    
         
             
                    refresh_access_token
         
     | 
| 
       82 
87 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -85,7 +90,29 @@ module DeviantArt 
     | 
|
| 
       85 
90 
     | 
    
         
             
                    refresh_access_token
         
     | 
| 
       86 
91 
     | 
    
         
             
                    response = request(method, path, params)
         
     | 
| 
       87 
92 
     | 
    
         
             
                  end
         
     | 
| 
       88 
     | 
    
         
            -
                  response. 
     | 
| 
      
 93 
     | 
    
         
            +
                  case response.code
         
     | 
| 
      
 94 
     | 
    
         
            +
                  when '200'
         
     | 
| 
      
 95 
     | 
    
         
            +
                    klass.new(response.json)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  when '400'
         
     | 
| 
      
 97 
     | 
    
         
            +
                    # Request failed due to client error,
         
     | 
| 
      
 98 
     | 
    
         
            +
                    # e.g. validation failed or User not found
         
     | 
| 
      
 99 
     | 
    
         
            +
                    DeviantArt::Error.new(response.json, response.code.to_i)
         
     | 
| 
      
 100 
     | 
    
         
            +
                  when '401'
         
     | 
| 
      
 101 
     | 
    
         
            +
                    # Invalid token
         
     | 
| 
      
 102 
     | 
    
         
            +
                    DeviantArt::Error.new(response.json, response.code.to_i)
         
     | 
| 
      
 103 
     | 
    
         
            +
                  when '429'
         
     | 
| 
      
 104 
     | 
    
         
            +
                    # Rate limit reached or service overloaded
         
     | 
| 
      
 105 
     | 
    
         
            +
                    DeviantArt::Error.new(response.json, response.code.to_i)
         
     | 
| 
      
 106 
     | 
    
         
            +
                  when '500'
         
     | 
| 
      
 107 
     | 
    
         
            +
                    # Our servers encountered an internal error, try again
         
     | 
| 
      
 108 
     | 
    
         
            +
                    DeviantArt::Error.new(response.json, response.code.to_i)
         
     | 
| 
      
 109 
     | 
    
         
            +
                  when '503'
         
     | 
| 
      
 110 
     | 
    
         
            +
                    # Our servers are currently unavailable, try again later.
         
     | 
| 
      
 111 
     | 
    
         
            +
                    # This is normally due to planned or emergency maintenance.
         
     | 
| 
      
 112 
     | 
    
         
            +
                    DeviantArt::Error.new(response.json, response.code.to_i)
         
     | 
| 
      
 113 
     | 
    
         
            +
                  else
         
     | 
| 
      
 114 
     | 
    
         
            +
                    DeviantArt::Error.new(response.json, response.code.to_i)
         
     | 
| 
      
 115 
     | 
    
         
            +
                  end
         
     | 
| 
       89 
116 
     | 
    
         
             
                end
         
     | 
| 
       90 
117 
     | 
    
         | 
| 
       91 
118 
     | 
    
         
             
                # Call given block when authorization code is refreshed
         
     | 
| 
         @@ -129,8 +156,16 @@ module DeviantArt 
     | 
|
| 
       129 
156 
     | 
    
         
             
                  if not @access_token.nil?
         
     | 
| 
       130 
157 
     | 
    
         
             
                    request["Authorization"] = "Bearer #{@access_token}"
         
     | 
| 
       131 
158 
     | 
    
         
             
                  end
         
     | 
| 
      
 159 
     | 
    
         
            +
                  @headers.each_pair do |key, value|
         
     | 
| 
      
 160 
     | 
    
         
            +
                    request[key] = value
         
     | 
| 
      
 161 
     | 
    
         
            +
                  end
         
     | 
| 
       132 
162 
     | 
    
         
             
                  response = @http.request(request)
         
     | 
| 
       133 
     | 
    
         
            -
                  response. 
     | 
| 
      
 163 
     | 
    
         
            +
                  if response.code == '403'
         
     | 
| 
      
 164 
     | 
    
         
            +
                    # You must send User-Agent and use HTTP compression in request
         
     | 
| 
      
 165 
     | 
    
         
            +
                    response.json = JSON.parse('{}')
         
     | 
| 
      
 166 
     | 
    
         
            +
                  else
         
     | 
| 
      
 167 
     | 
    
         
            +
                    response.json = JSON.parse(response.body)
         
     | 
| 
      
 168 
     | 
    
         
            +
                  end
         
     | 
| 
       134 
169 
     | 
    
         
             
                  response
         
     | 
| 
       135 
170 
     | 
    
         
             
                end
         
     | 
| 
       136 
171 
     | 
    
         | 
| 
         @@ -171,4 +206,3 @@ module DeviantArt 
     | 
|
| 
       171 
206 
     | 
    
         
             
                end
         
     | 
| 
       172 
207 
     | 
    
         
             
              end
         
     | 
| 
       173 
208 
     | 
    
         
             
            end
         
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/collections'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/collections/folders'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Client
         
     | 
| 
      
 6 
     | 
    
         
            +
                module Collections
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # Fetch collection folders
         
     | 
| 
      
 8 
     | 
    
         
            +
                  def get_collections_folders(username: nil, calculate_size: false, ext_preload: false, offset: 0, limit: 10)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 10 
     | 
    
         
            +
                    params['username'] = username unless username.nil?
         
     | 
| 
      
 11 
     | 
    
         
            +
                    params['calculate_size'] = calculate_size if calculate_size
         
     | 
| 
      
 12 
     | 
    
         
            +
                    params['ext_preload'] = ext_preload if ext_preload
         
     | 
| 
      
 13 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 14 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 15 
     | 
    
         
            +
                    perform(DeviantArt::Collections::Folders, :get, '/api/v1/oauth2/collections/folders', params)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  # Fetch collection folder contents
         
     | 
| 
      
 19 
     | 
    
         
            +
                  def get_collections(folderid, username: nil, offset: 0, limit: 10)
         
     | 
| 
      
 20 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 21 
     | 
    
         
            +
                    params['username'] = username unless username.nil?
         
     | 
| 
      
 22 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 23 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 24 
     | 
    
         
            +
                    perform(DeviantArt::Collections, :get, "/api/v1/oauth2/collections/#{folderid}", params)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  # TODO: fave, folders/create, folders/remove/{folderid}, unfav
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/data'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/data/countries'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'deviantart/data/privacy'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'deviantart/data/submission'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'deviantart/data/tos'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 8 
     | 
    
         
            +
              class Client
         
     | 
| 
      
 9 
     | 
    
         
            +
                module Data
         
     | 
| 
      
 10 
     | 
    
         
            +
                  # Get a list of countries
         
     | 
| 
      
 11 
     | 
    
         
            +
                  def get_countries
         
     | 
| 
      
 12 
     | 
    
         
            +
                    perform(DeviantArt::Data::Countries, :get, '/api/v1/oauth2/data/countries')
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  # Returns the DeviantArt Privacy Policy
         
     | 
| 
      
 16 
     | 
    
         
            +
                  def get_privacy
         
     | 
| 
      
 17 
     | 
    
         
            +
                    perform(DeviantArt::Data::Privacy, :get, '/api/v1/oauth2/data/privacy')
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  # Returns the DeviantArt Submission Policy
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def get_submission
         
     | 
| 
      
 22 
     | 
    
         
            +
                    perform(DeviantArt::Data::Submission, :get, '/api/v1/oauth2/data/submission')
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  # Returns the DeviantArt Terms of Service
         
     | 
| 
      
 26 
     | 
    
         
            +
                  def get_tos
         
     | 
| 
      
 27 
     | 
    
         
            +
                    perform(DeviantArt::Data::TOS, :get, '/api/v1/oauth2/data/tos')
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/deviation'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/deviation/content'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'deviantart/deviation/whofaved'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'deviantart/deviation/download'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 7 
     | 
    
         
            +
              class Client
         
     | 
| 
      
 8 
     | 
    
         
            +
                module Deviation
         
     | 
| 
      
 9 
     | 
    
         
            +
                  # Fetch a deviation details
         
     | 
| 
      
 10 
     | 
    
         
            +
                  def get_deviation(deviationid)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    perform(DeviantArt::Deviation, :get, "/api/v1/oauth2/deviation/#{deviationid}")
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  # Fetch full data that is not included in the main devaition details
         
     | 
| 
      
 15 
     | 
    
         
            +
                  def get_deviation_content(deviationid)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    perform(DeviantArt::Deviation::Content, :get, '/api/v1/oauth2/deviation/content', { deviationid: deviationid })
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  # Fetch a list of users who faved the deviation
         
     | 
| 
      
 20 
     | 
    
         
            +
                  def get_deviation_whofaved(deviationid, offset: 0, limit: 10)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 22 
     | 
    
         
            +
                    params['deviationid'] = deviationid
         
     | 
| 
      
 23 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 24 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 25 
     | 
    
         
            +
                    perform(DeviantArt::Deviation::WhoFaved, :get, '/api/v1/oauth2/deviation/whofaved', params)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  # Get the original file download (if allowed)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  def download_deviation(deviationid)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    perform(DeviantArt::Deviation::Download, :get, "/api/v1/oauth2/deviation/download/#{deviationid}")
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  # TODO: embeddedcontent, metadata
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/feed'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/feed/home'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Client
         
     | 
| 
      
 6 
     | 
    
         
            +
                module Feed
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # Fetch Watch Feed
         
     | 
| 
      
 8 
     | 
    
         
            +
                  def get_feed(mature_content: false, cursor: nil)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 10 
     | 
    
         
            +
                    params['cursor'] = cursor unless cursor.nil?
         
     | 
| 
      
 11 
     | 
    
         
            +
                    params['mature_content'] = mature_content
         
     | 
| 
      
 12 
     | 
    
         
            +
                    perform(DeviantArt::Feed::Home, :get, '/api/v1/oauth2/feed/home', params)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  # TODO: home/{bucketid}, notifications, profile, settings, settings/update
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/gallery'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/gallery/all'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'deviantart/gallery/folders'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 6 
     | 
    
         
            +
              class Client
         
     | 
| 
      
 7 
     | 
    
         
            +
                module Gallery
         
     | 
| 
      
 8 
     | 
    
         
            +
                  # Get the "all" view of a users gallery
         
     | 
| 
      
 9 
     | 
    
         
            +
                  def get_gallery_all(username: nil, offset: 0, limit: 10)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 11 
     | 
    
         
            +
                    params['username'] = username unless username.nil?
         
     | 
| 
      
 12 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 13 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 14 
     | 
    
         
            +
                    perform(DeviantArt::Gallery::All, :get, '/api/v1/oauth2/gallery/all', params)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  # Fetch gallery folders
         
     | 
| 
      
 18 
     | 
    
         
            +
                  def get_gallery_folders(username: nil, calculate_size: false, ext_preload: false, offset: 0, limit: 10)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 20 
     | 
    
         
            +
                    params['username'] = username unless username.nil?
         
     | 
| 
      
 21 
     | 
    
         
            +
                    params['calculate_size'] = calculate_size if calculate_size
         
     | 
| 
      
 22 
     | 
    
         
            +
                    params['ext_preload'] = ext_preload if ext_preload
         
     | 
| 
      
 23 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 24 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 25 
     | 
    
         
            +
                    perform(DeviantArt::Gallery::Folders, :get, '/api/v1/oauth2/gallery/folders', params)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  # Fetch gallery folder contents
         
     | 
| 
      
 29 
     | 
    
         
            +
                  def get_gallery(username: nil, folderid: nil, mode: nil, offset: 0, limit: 10)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 31 
     | 
    
         
            +
                    params['username'] = username unless username.nil?
         
     | 
| 
      
 32 
     | 
    
         
            +
                    params['mode'] = mode unless mode.nil?
         
     | 
| 
      
 33 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 34 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 35 
     | 
    
         
            +
                    unless folderid.nil?
         
     | 
| 
      
 36 
     | 
    
         
            +
                      path = "/api/v1/oauth2/gallery/#{folderid}"
         
     | 
| 
      
 37 
     | 
    
         
            +
                    else
         
     | 
| 
      
 38 
     | 
    
         
            +
                      path = '/api/v1/oauth2/gallery/'
         
     | 
| 
      
 39 
     | 
    
         
            +
                    end
         
     | 
| 
      
 40 
     | 
    
         
            +
                    perform(DeviantArt::Gallery, :get, path, params)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  # TODO: create, remove/{folderid}
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,75 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/user'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'deviantart/user/profile'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'deviantart/user/friends'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'deviantart/user/friends/search'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'deviantart/user/whois'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'deviantart/user/statuses'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'deviantart/user/watchers'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 10 
     | 
    
         
            +
              class Client
         
     | 
| 
      
 11 
     | 
    
         
            +
                module User
         
     | 
| 
      
 12 
     | 
    
         
            +
                  # Get user profile information
         
     | 
| 
      
 13 
     | 
    
         
            +
                  def get_profile(username, ext_collections: false, ext_galleries: false)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 15 
     | 
    
         
            +
                    params['ext_collections'] = ext_collections if ext_collections
         
     | 
| 
      
 16 
     | 
    
         
            +
                    params['ext_galleries'] = ext_galleries if ext_galleries
         
     | 
| 
      
 17 
     | 
    
         
            +
                    perform(DeviantArt::User::Profile, :get, "/api/v1/oauth2/user/profile/#{username.nil? ? '' : username}", params)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  # Get the users list of friends
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def get_friends(username, offset: 0, limit: 10)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 23 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 24 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 25 
     | 
    
         
            +
                    perform(DeviantArt::User::Friends, :get, "/api/v1/oauth2/user/friends/#{username.nil? ? '' : username}", params)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  # Fetch user info for given usernames
         
     | 
| 
      
 29 
     | 
    
         
            +
                  def whois(users)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    params = { usernames: users.is_a?(Enumerable) ? users : [users] }
         
     | 
| 
      
 31 
     | 
    
         
            +
                    perform(DeviantArt::User::Whois, :post, '/api/v1/oauth2/user/whois', params)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  # Fetch user info of authenticated user
         
     | 
| 
      
 35 
     | 
    
         
            +
                  def whoami
         
     | 
| 
      
 36 
     | 
    
         
            +
                    perform(DeviantArt::User, :get, '/api/v1/oauth2/user/whoami?')
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  # Search friends by username
         
     | 
| 
      
 40 
     | 
    
         
            +
                  def search_friends(query, username: nil)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 42 
     | 
    
         
            +
                    params['query'] = query
         
     | 
| 
      
 43 
     | 
    
         
            +
                    params['username'] = username unless username.nil?
         
     | 
| 
      
 44 
     | 
    
         
            +
                    perform(DeviantArt::User::Friends::Search, :get, '/api/v1/oauth2/user/friends/search', params)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  # User Statuses
         
     | 
| 
      
 48 
     | 
    
         
            +
                  def get_statuses(username, offset: 0, limit: 10, mature_content: true)
         
     | 
| 
      
 49 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 50 
     | 
    
         
            +
                    params['username'] = username
         
     | 
| 
      
 51 
     | 
    
         
            +
                    params['mature_content'] = mature_content
         
     | 
| 
      
 52 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 53 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 54 
     | 
    
         
            +
                    perform(DeviantArt::User::Statuses, :get, '/api/v1/oauth2/user/statuses/', params)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  # Fetch the status
         
     | 
| 
      
 58 
     | 
    
         
            +
                  def get_status(statusid, mature_content: true)
         
     | 
| 
      
 59 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 60 
     | 
    
         
            +
                    params['mature_content'] = mature_content
         
     | 
| 
      
 61 
     | 
    
         
            +
                    perform(DeviantArt::Status, :get, "/api/v1/oauth2/user/statuses/#{statusid}", params)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  # Get the user's list of watchers
         
     | 
| 
      
 65 
     | 
    
         
            +
                  def get_watchers(username: nil, offset: 0, limit: 10)
         
     | 
| 
      
 66 
     | 
    
         
            +
                    params = {}
         
     | 
| 
      
 67 
     | 
    
         
            +
                    params['offset'] = offset if offset != 0
         
     | 
| 
      
 68 
     | 
    
         
            +
                    params['limit'] = limit if limit != 10
         
     | 
| 
      
 69 
     | 
    
         
            +
                    perform(DeviantArt::User::Watchers, :get, "/api/v1/oauth2/user/watchers/#{username.nil? ? '' : username}", params)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                  # TODO: damntoken, friends/unwatch/{username}, friends/watch/{username}, friends/watching/{username}, profile/update, statuses/post
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
              end
         
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,26 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
              module Collections
         
     | 
| 
       3 
     | 
    
         
            -
                # Fetch collection folders
         
     | 
| 
       4 
     | 
    
         
            -
                def get_collections_folders(username: nil, calculate_size: false, ext_preload: false, offset: 0, limit: 10)
         
     | 
| 
       5 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       6 
     | 
    
         
            -
                  params['username'] = username unless username.nil?
         
     | 
| 
       7 
     | 
    
         
            -
                  params['calculate_size'] = calculate_size if calculate_size
         
     | 
| 
       8 
     | 
    
         
            -
                  params['ext_preload'] = ext_preload if ext_preload
         
     | 
| 
       9 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       10 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       11 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/collections/folders', params)
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                # Fetch collection folder contents
         
     | 
| 
       15 
     | 
    
         
            -
                def get_collections(folderid, username: nil, offset: 0, limit: 10)
         
     | 
| 
       16 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       17 
     | 
    
         
            -
                  params['username'] = username unless username.nil?
         
     | 
| 
       18 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       19 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       20 
     | 
    
         
            -
                  perform(:get, "/api/v1/oauth2/collections/#{folderid}", params)
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
       22 
2 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Collections < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :has_more, :next_offset, :name, :results
         
     | 
| 
      
 6 
     | 
    
         
            +
                point_to_class [:results, :[]], DeviantArt::Deviation
         
     | 
| 
       24 
7 
     | 
    
         
             
              end
         
     | 
| 
       25 
8 
     | 
    
         
             
            end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
    
        data/lib/deviantart/data.rb
    CHANGED
    
    | 
         @@ -1,24 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
              module Data
         
     | 
| 
       3 
     | 
    
         
            -
                # Get a list of countries
         
     | 
| 
       4 
     | 
    
         
            -
                def get_countries
         
     | 
| 
       5 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/data/countries')
         
     | 
| 
       6 
     | 
    
         
            -
                end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                # Returns the DeviantArt Privacy Policy
         
     | 
| 
       9 
     | 
    
         
            -
                def get_privacy
         
     | 
| 
       10 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/data/privacy')
         
     | 
| 
       11 
     | 
    
         
            -
                end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                # Returns the DeviantArt Submission Policy
         
     | 
| 
       14 
     | 
    
         
            -
                def get_submission
         
     | 
| 
       15 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/data/submission')
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
       17 
2 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/data/tos')
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Data < Base
         
     | 
| 
       22 
5 
     | 
    
         
             
              end
         
     | 
| 
       23 
6 
     | 
    
         
             
            end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
    
        data/lib/deviantart/deviation.rb
    CHANGED
    
    | 
         @@ -1,30 +1,12 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
              module Deviation
         
     | 
| 
       3 
     | 
    
         
            -
                # Fetch a deviation details
         
     | 
| 
       4 
     | 
    
         
            -
                def get_deviation(deviationid)
         
     | 
| 
       5 
     | 
    
         
            -
                  perform(:get, "/api/v1/oauth2/deviation/#{deviationid}")
         
     | 
| 
       6 
     | 
    
         
            -
                end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                # Fetch full data that is not included in the main devaition details
         
     | 
| 
       9 
     | 
    
         
            -
                def get_deviation_content(deviationid)
         
     | 
| 
       10 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/deviation/content', { deviationid: deviationid })
         
     | 
| 
       11 
     | 
    
         
            -
                end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                # Fetch a list of users who faved the deviation
         
     | 
| 
       14 
     | 
    
         
            -
                def get_deviation_whofaved(deviationid, offset: 0, limit: 10)
         
     | 
| 
       15 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       16 
     | 
    
         
            -
                  params['deviationid'] = deviationid
         
     | 
| 
       17 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       18 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       19 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/deviation/whofaved', params)
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
       21 
2 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                 
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                 
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Deviation < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :deviationid, :printid, :url, :title, :category, :category_path, :is_favourited, :is_deleted, :author, :stats
         
     | 
| 
      
 6 
     | 
    
         
            +
                attr_accessor :published_time, :allows_comments, :preview, :content, :thumbs, :videos, :flash, :daily_deviation
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :excerpt, :is_mature, :is_downloadable, :download_filesize, :challenge, :challenge_entry, :motion_book
         
     | 
| 
      
 8 
     | 
    
         
            +
                point_to_class [:author], DeviantArt::User
         
     | 
| 
      
 9 
     | 
    
         
            +
                point_to_class [:daily_deviation, :giver], DeviantArt::User
         
     | 
| 
      
 10 
     | 
    
         
            +
                point_to_class [:daily_deviation, :suggester], DeviantArt::User
         
     | 
| 
       28 
11 
     | 
    
         
             
              end
         
     | 
| 
       29 
12 
     | 
    
         
             
            end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
    
        data/lib/deviantart/feed.rb
    CHANGED
    
    | 
         @@ -1,14 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
              module Feed
         
     | 
| 
       3 
     | 
    
         
            -
                # Fetch Watch Feed
         
     | 
| 
       4 
     | 
    
         
            -
                def get_feed(mature_content: false, cursor: nil)
         
     | 
| 
       5 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       6 
     | 
    
         
            -
                  params['cursor'] = cursor unless cursor.nil?
         
     | 
| 
       7 
     | 
    
         
            -
                  params['mature_content'] = mature_content
         
     | 
| 
       8 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/feed/home', params)
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
       10 
2 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Feed < Base
         
     | 
| 
       12 
5 
     | 
    
         
             
              end
         
     | 
| 
       13 
6 
     | 
    
         
             
            end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Feed::Home < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :cursor, :has_more, :items
         
     | 
| 
      
 6 
     | 
    
         
            +
                point_to_class [:items, :[], :by_user], DeviantArt::User
         
     | 
| 
      
 7 
     | 
    
         
            +
                point_to_class [:items, :[], :deviations, :[]], DeviantArt::Deviation
         
     | 
| 
      
 8 
     | 
    
         
            +
                point_to_class [:items, :[], :status], DeviantArt::Status
         
     | 
| 
      
 9 
     | 
    
         
            +
                #point_to_class [:items, :[], :comment], DeviantArt::Comment
         
     | 
| 
      
 10 
     | 
    
         
            +
                #point_to_class [:items, :[], :comment_parent], DeviantArt::Comment
         
     | 
| 
      
 11 
     | 
    
         
            +
                point_to_class [:items, :[], :comment_deviation], DeviantArt::Deviation
         
     | 
| 
      
 12 
     | 
    
         
            +
                point_to_class [:items, :[], :comment_profile], DeviantArt::User
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/deviantart/gallery.rb
    CHANGED
    
    | 
         @@ -1,41 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
              module Gallery
         
     | 
| 
       3 
     | 
    
         
            -
                # Get the "all" view of a users gallery
         
     | 
| 
       4 
     | 
    
         
            -
                def get_gallery_all(username: nil, offset: 0, limit: 10)
         
     | 
| 
       5 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       6 
     | 
    
         
            -
                  params['username'] = username unless username.nil?
         
     | 
| 
       7 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       8 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       9 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/gallery/all', params)
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                # Fetch gallery folders
         
     | 
| 
       13 
     | 
    
         
            -
                def get_gallery_folders(username: nil, calculate_size: false, ext_preload: false, offset: 0, limit: 10)
         
     | 
| 
       14 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       15 
     | 
    
         
            -
                  params['username'] = username unless username.nil?
         
     | 
| 
       16 
     | 
    
         
            -
                  params['calculate_size'] = calculate_size if calculate_size
         
     | 
| 
       17 
     | 
    
         
            -
                  params['ext_preload'] = ext_preload if ext_preload
         
     | 
| 
       18 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       19 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       20 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/gallery/folders', params)
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                # Fetch gallery folder contents
         
     | 
| 
       24 
     | 
    
         
            -
                def get_gallery(username: nil, folderid: nil, mode: nil, offset: 0, limit: 10)
         
     | 
| 
       25 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       26 
     | 
    
         
            -
                  params['username'] = username unless username.nil?
         
     | 
| 
       27 
     | 
    
         
            -
                  params['mode'] = mode unless mode.nil?
         
     | 
| 
       28 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       29 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       30 
     | 
    
         
            -
                  unless folderid.nil?
         
     | 
| 
       31 
     | 
    
         
            -
                    path = "/api/v1/oauth2/gallery/#{folderid}"
         
     | 
| 
       32 
     | 
    
         
            -
                  else
         
     | 
| 
       33 
     | 
    
         
            -
                    path = '/api/v1/oauth2/gallery/'
         
     | 
| 
       34 
     | 
    
         
            -
                  end
         
     | 
| 
       35 
     | 
    
         
            -
                  perform(:get, path, params)
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
       37 
2 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Gallery < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :has_more, :next_offset, :name, :results
         
     | 
| 
      
 6 
     | 
    
         
            +
                point_to_class [:results, :[]], DeviantArt::Deviation
         
     | 
| 
       39 
7 
     | 
    
         
             
              end
         
     | 
| 
       40 
8 
     | 
    
         
             
            end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Status < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :statusid, :body, :ts, :url, :comments_count, :is_share, :is_deleted, :author, :items
         
     | 
| 
      
 6 
     | 
    
         
            +
                point_to_class [:author], DeviantArt::User
         
     | 
| 
      
 7 
     | 
    
         
            +
                point_to_class [:items, :[], :status], DeviantArt::Status
         
     | 
| 
      
 8 
     | 
    
         
            +
                point_to_class [:items, :[], :deviation], DeviantArt::Deviation
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/deviantart/user.rb
    CHANGED
    
    | 
         @@ -1,56 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
              module User
         
     | 
| 
       3 
     | 
    
         
            -
                # Get user profile information
         
     | 
| 
       4 
     | 
    
         
            -
                def get_profile(username, ext_collections: false, ext_galleries: false)
         
     | 
| 
       5 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       6 
     | 
    
         
            -
                  params['ext_collections'] = ext_collections if ext_collections
         
     | 
| 
       7 
     | 
    
         
            -
                  params['ext_galleries'] = ext_galleries if ext_galleries
         
     | 
| 
       8 
     | 
    
         
            -
                  perform(:get, "/api/v1/oauth2/user/profile/#{username.nil? ? '' : username}", params)
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                # Get the users list of friends
         
     | 
| 
       12 
     | 
    
         
            -
                def get_friends(username, offset: 0, limit: 10)
         
     | 
| 
       13 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       14 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       15 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       16 
     | 
    
         
            -
                  perform(:get, "/api/v1/oauth2/user/friends/#{username.nil? ? '' : username}", params)
         
     | 
| 
       17 
     | 
    
         
            -
                end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                # Fetch user info for given usernames
         
     | 
| 
       20 
     | 
    
         
            -
                def whois(users)
         
     | 
| 
       21 
     | 
    
         
            -
                  params = { usernames: users.is_a?(Enumerable) ? users : [users] }
         
     | 
| 
       22 
     | 
    
         
            -
                  perform(:post, '/api/v1/oauth2/user/whois', params)
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                # Fetch user info of authenticated user
         
     | 
| 
       26 
     | 
    
         
            -
                def whoami
         
     | 
| 
       27 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/user/whoami?')
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                # Search friends by username
         
     | 
| 
       31 
     | 
    
         
            -
                def search_friends(query, username: nil)
         
     | 
| 
       32 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       33 
     | 
    
         
            -
                  params['query'] = query
         
     | 
| 
       34 
     | 
    
         
            -
                  params['username'] = username unless username.nil?
         
     | 
| 
       35 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/user/friends/search', params)
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
       37 
2 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                  params['offset'] = offset if offset != 0
         
     | 
| 
       43 
     | 
    
         
            -
                  params['limit'] = limit if limit != 10
         
     | 
| 
       44 
     | 
    
         
            -
                  perform(:get, '/api/v1/oauth2/user/statuses/', params)
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                def get_status(statusid, mature_content: true)
         
     | 
| 
       48 
     | 
    
         
            -
                  params = {}
         
     | 
| 
       49 
     | 
    
         
            -
                  params['mature_content'] = mature_content
         
     | 
| 
       50 
     | 
    
         
            -
                  perform(:get, "/api/v1/oauth2/user/statuses/#{statusid}", params)
         
     | 
| 
       51 
     | 
    
         
            -
                end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                # TODO: damntoken, friends/unwatch/{username}, friends/watch/{username}, friends/watching/{username}, profile/update, statuses/post, watchers/{username}
         
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class User < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :userid, :username, :usericon, :type, :is_watching, :details, :geo, :profile, :stats
         
     | 
| 
      
 6 
     | 
    
         
            +
                point_to_class [:profile, :profile_pic], DeviantArt::Deviation
         
     | 
| 
       54 
7 
     | 
    
         
             
              end
         
     | 
| 
       55 
8 
     | 
    
         
             
            end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'deviantart/base'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module DeviantArt
         
     | 
| 
      
 4 
     | 
    
         
            +
              class User::Profile < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :user, :is_watching, :profile_url, :user_is_artist, :artist_level, :artist_specialty, :real_name, :tagline
         
     | 
| 
      
 6 
     | 
    
         
            +
                attr_accessor :countryid, :country, :website, :bio, :cover_photo, :profile_pic, :last_status, :stats, :collections, :galleries
         
     | 
| 
      
 7 
     | 
    
         
            +
                point_to_class [:user], DeviantArt::User
         
     | 
| 
      
 8 
     | 
    
         
            +
                point_to_class [:profile_pic], DeviantArt::Deviation
         
     | 
| 
      
 9 
     | 
    
         
            +
                point_to_class [:last_status], DeviantArt::Status
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/deviantart/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: deviantart
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Code Ass
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-11-29 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -69,13 +69,39 @@ files: 
     | 
|
| 
       69 
69 
     | 
    
         
             
            - bin/setup
         
     | 
| 
       70 
70 
     | 
    
         
             
            - deviantart.gemspec
         
     | 
| 
       71 
71 
     | 
    
         
             
            - lib/deviantart.rb
         
     | 
| 
      
 72 
     | 
    
         
            +
            - lib/deviantart/base.rb
         
     | 
| 
       72 
73 
     | 
    
         
             
            - lib/deviantart/client.rb
         
     | 
| 
      
 74 
     | 
    
         
            +
            - lib/deviantart/client/collections.rb
         
     | 
| 
      
 75 
     | 
    
         
            +
            - lib/deviantart/client/data.rb
         
     | 
| 
      
 76 
     | 
    
         
            +
            - lib/deviantart/client/deviation.rb
         
     | 
| 
      
 77 
     | 
    
         
            +
            - lib/deviantart/client/feed.rb
         
     | 
| 
      
 78 
     | 
    
         
            +
            - lib/deviantart/client/gallery.rb
         
     | 
| 
      
 79 
     | 
    
         
            +
            - lib/deviantart/client/user.rb
         
     | 
| 
       73 
80 
     | 
    
         
             
            - lib/deviantart/collections.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/deviantart/collections/folders.rb
         
     | 
| 
       74 
82 
     | 
    
         
             
            - lib/deviantart/data.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
            - lib/deviantart/data/countries.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/deviantart/data/privacy.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib/deviantart/data/submission.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/deviantart/data/tos.rb
         
     | 
| 
       75 
87 
     | 
    
         
             
            - lib/deviantart/deviation.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/deviantart/deviation/content.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - lib/deviantart/deviation/download.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/deviantart/deviation/whofaved.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - lib/deviantart/error.rb
         
     | 
| 
       76 
92 
     | 
    
         
             
            - lib/deviantart/feed.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            - lib/deviantart/feed/home.rb
         
     | 
| 
       77 
94 
     | 
    
         
             
            - lib/deviantart/gallery.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - lib/deviantart/gallery/all.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - lib/deviantart/gallery/folders.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - lib/deviantart/status.rb
         
     | 
| 
       78 
98 
     | 
    
         
             
            - lib/deviantart/user.rb
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib/deviantart/user/friends.rb
         
     | 
| 
      
 100 
     | 
    
         
            +
            - lib/deviantart/user/friends/search.rb
         
     | 
| 
      
 101 
     | 
    
         
            +
            - lib/deviantart/user/profile.rb
         
     | 
| 
      
 102 
     | 
    
         
            +
            - lib/deviantart/user/statuses.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - lib/deviantart/user/watchers.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - lib/deviantart/user/whois.rb
         
     | 
| 
       79 
105 
     | 
    
         
             
            - lib/deviantart/version.rb
         
     | 
| 
       80 
106 
     | 
    
         
             
            homepage: https://github.com/aycabta/deviantart
         
     | 
| 
       81 
107 
     | 
    
         
             
            licenses:
         
     | 
| 
         @@ -97,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       97 
123 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       98 
124 
     | 
    
         
             
            requirements: []
         
     | 
| 
       99 
125 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       100 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 126 
     | 
    
         
            +
            rubygems_version: 2.5.2
         
     | 
| 
       101 
127 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       102 
128 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       103 
129 
     | 
    
         
             
            summary: deviantART API library
         
     |