assonnato 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/assonnato.rb +22 -22
 - data/lib/assonnato/api/episode.rb +48 -41
 - data/lib/assonnato/api/show.rb +68 -68
 - data/lib/assonnato/api/user.rb +35 -35
 - data/lib/assonnato/api_factory.rb +28 -29
 - data/lib/assonnato/assonnato.rb +24 -25
 - data/lib/assonnato/client.rb +46 -46
 - data/lib/assonnato/cookie_jar.rb +30 -30
 - data/lib/assonnato/parser.rb +21 -21
 - data/lib/assonnato/request.rb +40 -40
 - data/lib/assonnato/version.rb +2 -2
 - data/spec/episode_spec.rb +34 -34
 - data/spec/show_spec.rb +51 -51
 - metadata +5 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f07b8f32a089af853e46258703e92a5b5845eac3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 7efa4bb28bc5741c65fe03a33909f60e108f9eac
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 73bdcf9e7b370f0caffa64ff8e9ad58ad4a8ea0406f460cb25154db8f627fb4da55b0a6e4bdbf8edce7ff0f8834c9f3ba7f4f354231ea24b028cf041f0751ac1
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8314f35194277b4f030f48f968aa5f8de537369a1c195103c39a38f9e2dbe5949530dedac31b45d90461f330970f8b27631bd7a65bff0efb10fd38d43b080a30
         
     | 
    
        data/lib/assonnato.rb
    CHANGED
    
    | 
         @@ -1,23 +1,23 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            require 'uri'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'net/http'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'json'
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            require 'assonnato/assonnato'
         
     | 
| 
       13 
     | 
    
         
            -
            require 'assonnato/api_factory'
         
     | 
| 
       14 
     | 
    
         
            -
            require 'assonnato/cookie_jar'
         
     | 
| 
       15 
     | 
    
         
            -
            require 'assonnato/request'
         
     | 
| 
       16 
     | 
    
         
            -
            require 'assonnato/parser'
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            require 'assonnato/client'
         
     | 
| 
       19 
     | 
    
         
            -
            require 'assonnato/api/user'
         
     | 
| 
       20 
     | 
    
         
            -
            require 'assonnato/api/show'
         
     | 
| 
       21 
     | 
    
         
            -
            require 'assonnato/api/episode'
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'uri'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'net/http'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'json'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            require 'assonnato/assonnato'
         
     | 
| 
      
 13 
     | 
    
         
            +
            require 'assonnato/api_factory'
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'assonnato/cookie_jar'
         
     | 
| 
      
 15 
     | 
    
         
            +
            require 'assonnato/request'
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'assonnato/parser'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            require 'assonnato/client'
         
     | 
| 
      
 19 
     | 
    
         
            +
            require 'assonnato/api/user'
         
     | 
| 
      
 20 
     | 
    
         
            +
            require 'assonnato/api/show'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'assonnato/api/episode'
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       23 
23 
     | 
    
         
             
            require 'assonnato/version'
         
     | 
| 
         @@ -1,41 +1,48 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Assonnato
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            class Episode
         
     | 
| 
       11 
     | 
    
         
            -
              include Parser
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              def initialize(client)
         
     | 
| 
       14 
     | 
    
         
            -
                @client = client
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              def all(show)
         
     | 
| 
       18 
     | 
    
         
            -
                parse @client.get("/api/v1/episodes/#{URI.escape show}")
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              def get(show, episode)
         
     | 
| 
       22 
     | 
    
         
            -
                all(show).select { |ep| ep.episode == episode }
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              def last(status)
         
     | 
| 
       26 
     | 
    
         
            -
                parse @client.get("/api/v1/episodes/last/#{status}")
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              def search(keyword)
         
     | 
| 
       30 
     | 
    
         
            -
                raise NotImplementedError, 'you cannot search episodes'
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              def  
     | 
| 
       34 
     | 
    
         
            -
                path = '/api/v1/episode/ 
     | 
| 
       35 
     | 
    
         
            -
                data = { name: name, episode: episode, _csrf: @client.user.csrf_token }.merge fields
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                @client.post path, data
         
     | 
| 
       38 
     | 
    
         
            -
              end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            class Episode
         
     | 
| 
      
 11 
     | 
    
         
            +
              include Parser
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def initialize(client)
         
     | 
| 
      
 14 
     | 
    
         
            +
                @client = client
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def all(show)
         
     | 
| 
      
 18 
     | 
    
         
            +
                parse @client.get("/api/v1/episodes/#{URI.escape show}")
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              def get(show, episode)
         
     | 
| 
      
 22 
     | 
    
         
            +
                all(show).select { |ep| ep.episode == episode }
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def last(status)
         
     | 
| 
      
 26 
     | 
    
         
            +
                parse @client.get("/api/v1/episodes/last/#{status}")
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def search(keyword)
         
     | 
| 
      
 30 
     | 
    
         
            +
                raise NotImplementedError, 'you cannot search episodes'
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              def add(name, episode, fields)
         
     | 
| 
      
 34 
     | 
    
         
            +
                path = '/api/v1/episode/add'
         
     | 
| 
      
 35 
     | 
    
         
            +
                data = { name: name, episode: episode, _csrf: @client.user.csrf_token }.merge fields
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                @client.post path, data
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              def edit(name, episode, fields)
         
     | 
| 
      
 41 
     | 
    
         
            +
                path = '/api/v1/episode/edit'
         
     | 
| 
      
 42 
     | 
    
         
            +
                data = { name: name, episode: episode, _csrf: @client.user.csrf_token }.merge fields
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                @client.post path, data
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/assonnato/api/show.rb
    CHANGED
    
    | 
         @@ -1,68 +1,68 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Assonnato
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            class Show
         
     | 
| 
       11 
     | 
    
         
            -
              include Parser
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              def initialize(client)
         
     | 
| 
       14 
     | 
    
         
            -
                @client = client
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              def all(status = :ongoing, options = {})
         
     | 
| 
       18 
     | 
    
         
            -
                filters = ''.tap { |str|
         
     | 
| 
       19 
     | 
    
         
            -
                  if options.has_key? :fansub
         
     | 
| 
       20 
     | 
    
         
            -
                    str << by_fansub(options[:fansub])
         
     | 
| 
       21 
     | 
    
         
            -
                  elsif options.has_key? :user
         
     | 
| 
       22 
     | 
    
         
            -
                    if options.has_key?  :role
         
     | 
| 
       23 
     | 
    
         
            -
                      str << by_role(options[:user], options[:role])
         
     | 
| 
       24 
     | 
    
         
            -
                    else
         
     | 
| 
       25 
     | 
    
         
            -
                      str << by_staff(options[:user])
         
     | 
| 
       26 
     | 
    
         
            -
                    end
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
                }
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                parse @client.get("/api/v1/#{filters}/shows/all/#{status}")
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              def get(show_name)
         
     | 
| 
       34 
     | 
    
         
            -
                search(show_name).select { |show| show.name == show_name }
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              def last!(status)
         
     | 
| 
       38 
     | 
    
         
            -
                raise NotImplementedError, 'Show#last is not implemented'
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              def search(keyword)
         
     | 
| 
       42 
     | 
    
         
            -
                parse @client.get("/api/v1/shows/search/#{URI.escape keyword}")
         
     | 
| 
       43 
     | 
    
         
            -
              end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              def edit(name, episode, fields)
         
     | 
| 
       46 
     | 
    
         
            -
                path = '/api/v1/episode/edit'
         
     | 
| 
       47 
     | 
    
         
            -
                data = { name: name, episode: episode, _csrf: @client.user.csrf_token }.merge fields
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                @client.post path, data
         
     | 
| 
       50 
     | 
    
         
            -
              end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
              private
         
     | 
| 
       53 
     | 
    
         
            -
              def by_fansub(fansub)
         
     | 
| 
       54 
     | 
    
         
            -
                "/fansubs/#{URI.escape fansub}"
         
     | 
| 
       55 
     | 
    
         
            -
              end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
              private
         
     | 
| 
       58 
     | 
    
         
            -
              def by_staff(user)
         
     | 
| 
       59 
     | 
    
         
            -
                "/users/#{URI.escape user}"
         
     | 
| 
       60 
     | 
    
         
            -
              end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
              private
         
     | 
| 
       63 
     | 
    
         
            -
              def by_role(user, role)
         
     | 
| 
       64 
     | 
    
         
            -
                "/users/#{URI.escape user}/#{role}"
         
     | 
| 
       65 
     | 
    
         
            -
              end
         
     | 
| 
       66 
     | 
    
         
            -
            end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            class Show
         
     | 
| 
      
 11 
     | 
    
         
            +
              include Parser
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def initialize(client)
         
     | 
| 
      
 14 
     | 
    
         
            +
                @client = client
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def all(status = :ongoing, options = {})
         
     | 
| 
      
 18 
     | 
    
         
            +
                filters = ''.tap { |str|
         
     | 
| 
      
 19 
     | 
    
         
            +
                  if options.has_key? :fansub
         
     | 
| 
      
 20 
     | 
    
         
            +
                    str << by_fansub(options[:fansub])
         
     | 
| 
      
 21 
     | 
    
         
            +
                  elsif options.has_key? :user
         
     | 
| 
      
 22 
     | 
    
         
            +
                    if options.has_key?  :role
         
     | 
| 
      
 23 
     | 
    
         
            +
                      str << by_role(options[:user], options[:role])
         
     | 
| 
      
 24 
     | 
    
         
            +
                    else
         
     | 
| 
      
 25 
     | 
    
         
            +
                      str << by_staff(options[:user])
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                }
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                parse @client.get("/api/v1/#{filters}/shows/all/#{status}")
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              def get(show_name)
         
     | 
| 
      
 34 
     | 
    
         
            +
                search(show_name).select { |show| show.name == show_name }
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              def last!(status)
         
     | 
| 
      
 38 
     | 
    
         
            +
                raise NotImplementedError, 'Show#last is not implemented'
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def search(keyword)
         
     | 
| 
      
 42 
     | 
    
         
            +
                parse @client.get("/api/v1/shows/search/#{URI.escape keyword}")
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def edit(name, episode, fields)
         
     | 
| 
      
 46 
     | 
    
         
            +
                path = '/api/v1/episode/edit'
         
     | 
| 
      
 47 
     | 
    
         
            +
                data = { name: name, episode: episode, _csrf: @client.user.csrf_token }.merge fields
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                @client.post path, data
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
              private
         
     | 
| 
      
 53 
     | 
    
         
            +
              def by_fansub(fansub)
         
     | 
| 
      
 54 
     | 
    
         
            +
                "/fansubs/#{URI.escape fansub}"
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              private
         
     | 
| 
      
 58 
     | 
    
         
            +
              def by_staff(user)
         
     | 
| 
      
 59 
     | 
    
         
            +
                "/users/#{URI.escape user}"
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              private
         
     | 
| 
      
 63 
     | 
    
         
            +
              def by_role(user, role)
         
     | 
| 
      
 64 
     | 
    
         
            +
                "/users/#{URI.escape user}/#{role}"
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
            end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/assonnato/api/user.rb
    CHANGED
    
    | 
         @@ -1,36 +1,36 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Assonnato
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            class User
         
     | 
| 
       11 
     | 
    
         
            -
              def initialize(client)
         
     | 
| 
       12 
     | 
    
         
            -
                @client = client
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              def login(username, password)
         
     | 
| 
       16 
     | 
    
         
            -
                path = '/api/v1/user/login'
         
     | 
| 
       17 
     | 
    
         
            -
                data = { username: username, password: password }
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                @client.post path, data
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              def logout
         
     | 
| 
       23 
     | 
    
         
            -
                path = '/api/v1/user/logout'
         
     | 
| 
       24 
     | 
    
         
            -
                data = { _csrf: @client.user.csrf_token }
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                @client.post path, data
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              def csrf_token
         
     | 
| 
       30 
     | 
    
         
            -
                path = '/api/v1/user/csrf_token'
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                @client.get(path)['message']
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
            end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            class User
         
     | 
| 
      
 11 
     | 
    
         
            +
              def initialize(client)
         
     | 
| 
      
 12 
     | 
    
         
            +
                @client = client
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def login(username, password)
         
     | 
| 
      
 16 
     | 
    
         
            +
                path = '/api/v1/user/login'
         
     | 
| 
      
 17 
     | 
    
         
            +
                data = { username: username, password: password }
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                @client.post path, data
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              def logout
         
     | 
| 
      
 23 
     | 
    
         
            +
                path = '/api/v1/user/logout'
         
     | 
| 
      
 24 
     | 
    
         
            +
                data = { _csrf: @client.user.csrf_token }
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                @client.post path, data
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def csrf_token
         
     | 
| 
      
 30 
     | 
    
         
            +
                path = '/api/v1/user/csrf_token'
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                @client.get(path)['message']
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       36 
36 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,30 +1,29 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c)  
     | 
| 
       3 
     | 
    
         
            -
            # 
     | 
| 
       4 
     | 
    
         
            -
            #
         
     | 
| 
       5 
     | 
    
         
            -
            #  
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            class  
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            class ApiFactory
         
     | 
| 
      
 11 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 12 
     | 
    
         
            +
                def new(klass, options = {})
         
     | 
| 
      
 13 
     | 
    
         
            +
                  return create_instance(klass, options) if klass
         
     | 
| 
      
 14 
     | 
    
         
            +
                  raise ArgumentError, 'must provide API class to be instantiated'
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def create_instance(klass, options)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  convert_to_constant(klass.to_s).new options
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def convert_to_constant(classes)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  classes.split('::').inject(Assonnato) do |constant, klass|
         
     | 
| 
      
 23 
     | 
    
         
            +
                    constant.const_get klass
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       30 
29 
     | 
    
         
             
            end
         
     | 
    
        data/lib/assonnato/assonnato.rb
    CHANGED
    
    | 
         @@ -1,26 +1,25 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c)  
     | 
| 
       3 
     | 
    
         
            -
            # 
     | 
| 
       4 
     | 
    
         
            -
            #
         
     | 
| 
       5 
     | 
    
         
            -
            #  
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            class << self
         
     | 
| 
      
 11 
     | 
    
         
            +
              def new(host = 'pigro.omnivium.it', port = 80, ssl = false)
         
     | 
| 
      
 12 
     | 
    
         
            +
                Client.new host, port, ssl
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def method_missing(method, *args, &block)
         
     | 
| 
      
 16 
     | 
    
         
            +
                return super unless new.respond_to?(method)
         
     | 
| 
      
 17 
     | 
    
         
            +
                new.send method, *args, &block
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def respond_to?(method, include_private = false)
         
     | 
| 
      
 21 
     | 
    
         
            +
                new.respond_to?(method, include_private) || super(method, include_private)
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       26 
25 
     | 
    
         
             
            end
         
     | 
    
        data/lib/assonnato/client.rb
    CHANGED
    
    | 
         @@ -1,47 +1,47 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Assonnato
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            class Client
         
     | 
| 
       11 
     | 
    
         
            -
              include Request
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              attr_accessor :host, :port
         
     | 
| 
       14 
     | 
    
         
            -
              attr_reader   :cookies
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              def initialize(host = 'pigro.omnivium.it', port = 80, ssl = false)
         
     | 
| 
       17 
     | 
    
         
            -
                @host    = host
         
     | 
| 
       18 
     | 
    
         
            -
                @port    = port
         
     | 
| 
       19 
     | 
    
         
            -
                @ssl     = ssl
         
     | 
| 
       20 
     | 
    
         
            -
                @cookies = CookieJar.new
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def self.namespace(*names)
         
     | 
| 
       24 
     | 
    
         
            -
                options = names.last.is_a?(Hash) ? names.pop : {}
         
     | 
| 
       25 
     | 
    
         
            -
                names   = names.map(&:to_sym)
         
     | 
| 
       26 
     | 
    
         
            -
                name    = names.pop
         
     | 
| 
       27 
     | 
    
         
            -
                return if public_method_defined?(name)
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                converted  = options.fetch(:full_name, name).to_s
         
     | 
| 
       30 
     | 
    
         
            -
                converted  = converted.split('_').map(&:capitalize).join
         
     | 
| 
       31 
     | 
    
         
            -
                class_name = ''
         
     | 
| 
       32 
     | 
    
         
            -
                class_name = "#{self.name.split('::').last}::" unless options.fetch(:root, false)
         
     | 
| 
       33 
     | 
    
         
            -
                class_name += converted
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                define_method(name) do
         
     | 
| 
       36 
     | 
    
         
            -
                  ApiFactory.new class_name, self
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                self
         
     | 
| 
       40 
     | 
    
         
            -
              end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              namespace :user,    root: true
         
     | 
| 
       43 
     | 
    
         
            -
              namespace :show,    root: true
         
     | 
| 
       44 
     | 
    
         
            -
              namespace :episode, root: true
         
     | 
| 
       45 
     | 
    
         
            -
            end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            class Client
         
     | 
| 
      
 11 
     | 
    
         
            +
              include Request
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              attr_accessor :host, :port
         
     | 
| 
      
 14 
     | 
    
         
            +
              attr_reader   :cookies
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              def initialize(host = 'pigro.omnivium.it', port = 80, ssl = false)
         
     | 
| 
      
 17 
     | 
    
         
            +
                @host    = host
         
     | 
| 
      
 18 
     | 
    
         
            +
                @port    = port
         
     | 
| 
      
 19 
     | 
    
         
            +
                @ssl     = ssl
         
     | 
| 
      
 20 
     | 
    
         
            +
                @cookies = CookieJar.new
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def self.namespace(*names)
         
     | 
| 
      
 24 
     | 
    
         
            +
                options = names.last.is_a?(Hash) ? names.pop : {}
         
     | 
| 
      
 25 
     | 
    
         
            +
                names   = names.map(&:to_sym)
         
     | 
| 
      
 26 
     | 
    
         
            +
                name    = names.pop
         
     | 
| 
      
 27 
     | 
    
         
            +
                return if public_method_defined?(name)
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                converted  = options.fetch(:full_name, name).to_s
         
     | 
| 
      
 30 
     | 
    
         
            +
                converted  = converted.split('_').map(&:capitalize).join
         
     | 
| 
      
 31 
     | 
    
         
            +
                class_name = ''
         
     | 
| 
      
 32 
     | 
    
         
            +
                class_name = "#{self.name.split('::').last}::" unless options.fetch(:root, false)
         
     | 
| 
      
 33 
     | 
    
         
            +
                class_name += converted
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                define_method(name) do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  ApiFactory.new class_name, self
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                self
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              namespace :user,    root: true
         
     | 
| 
      
 43 
     | 
    
         
            +
              namespace :show,    root: true
         
     | 
| 
      
 44 
     | 
    
         
            +
              namespace :episode, root: true
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       47 
47 
     | 
    
         
             
            end
         
     | 
    
        data/lib/assonnato/cookie_jar.rb
    CHANGED
    
    | 
         @@ -1,31 +1,31 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Assonnato
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            class CookieJar
         
     | 
| 
       11 
     | 
    
         
            -
              def initialize
         
     | 
| 
       12 
     | 
    
         
            -
                @cookies = ''
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              def set(cookie)
         
     | 
| 
       16 
     | 
    
         
            -
                @cookies = cookie
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              def get
         
     | 
| 
       20 
     | 
    
         
            -
                @cookies
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def <<(cookie)
         
     | 
| 
       24 
     | 
    
         
            -
                @cookies << "; #{cookie}"
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              alias_method :append, :<<
         
     | 
| 
       28 
     | 
    
         
            -
              alias_method :to_s,   :get
         
     | 
| 
       29 
     | 
    
         
            -
            end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            class CookieJar
         
     | 
| 
      
 11 
     | 
    
         
            +
              def initialize
         
     | 
| 
      
 12 
     | 
    
         
            +
                @cookies = ''
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def set(cookie)
         
     | 
| 
      
 16 
     | 
    
         
            +
                @cookies = cookie
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              def get
         
     | 
| 
      
 20 
     | 
    
         
            +
                @cookies
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def <<(cookie)
         
     | 
| 
      
 24 
     | 
    
         
            +
                @cookies << "; #{cookie}"
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              alias_method :append, :<<
         
     | 
| 
      
 28 
     | 
    
         
            +
              alias_method :to_s,   :get
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       31 
31 
     | 
    
         
             
            end
         
     | 
    
        data/lib/assonnato/parser.rb
    CHANGED
    
    | 
         @@ -1,22 +1,22 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Assonnato
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            module Parser
         
     | 
| 
       11 
     | 
    
         
            -
              def parse(what)
         
     | 
| 
       12 
     | 
    
         
            -
                [].tap { |res|
         
     | 
| 
       13 
     | 
    
         
            -
                  [what].flatten.each { |element|
         
     | 
| 
       14 
     | 
    
         
            -
                    keys   = element.keys.map { |k| k.to_sym }
         
     | 
| 
       15 
     | 
    
         
            -
                    values = element.values
         
     | 
| 
       16 
     | 
    
         
            -
                    res << Struct.new(*keys).new(*values)
         
     | 
| 
       17 
     | 
    
         
            -
                  }
         
     | 
| 
       18 
     | 
    
         
            -
                }
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
            end
         
     | 
| 
       21 
     | 
    
         
            -
              
         
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            module Parser
         
     | 
| 
      
 11 
     | 
    
         
            +
              def parse(what)
         
     | 
| 
      
 12 
     | 
    
         
            +
                [].tap { |res|
         
     | 
| 
      
 13 
     | 
    
         
            +
                  [what].flatten.each { |element|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    keys   = element.keys.map { |k| k.to_sym }
         
     | 
| 
      
 15 
     | 
    
         
            +
                    values = element.values
         
     | 
| 
      
 16 
     | 
    
         
            +
                    res << Struct.new(*keys).new(*values)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  }
         
     | 
| 
      
 18 
     | 
    
         
            +
                }
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
       22 
22 
     | 
    
         
             
            end
         
     | 
    
        data/lib/assonnato/request.rb
    CHANGED
    
    | 
         @@ -1,41 +1,41 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Released under the MIT License
         
     | 
| 
       5 
     | 
    
         
            -
            # http://opensource.org/licenses/MIT
         
     | 
| 
       6 
     | 
    
         
            -
            #++
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module Assonnato
         
     | 
| 
       9 
     | 
    
         
            -
              
         
     | 
| 
       10 
     | 
    
         
            -
            module Request
         
     | 
| 
       11 
     | 
    
         
            -
              def get(path, headers = {})
         
     | 
| 
       12 
     | 
    
         
            -
                request :get,  path, {}, headers
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              def post(path, data = {}, headers = {})
         
     | 
| 
       16 
     | 
    
         
            -
                request :post, path, data, headers
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              private
         
     | 
| 
       20 
     | 
    
         
            -
              def request(method, path, data, headers)
         
     | 
| 
       21 
     | 
    
         
            -
                headers['Cookie'] = @cookies.get
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                Net::HTTP.start(@host, @port, use_ssl: @ssl) do |http|
         
     | 
| 
       24 
     | 
    
         
            -
                  resp = case method.to_sym
         
     | 
| 
       25 
     | 
    
         
            -
                    when :get
         
     | 
| 
       26 
     | 
    
         
            -
                      http.get  path, headers
         
     | 
| 
       27 
     | 
    
         
            -
                    when :post
         
     | 
| 
       28 
     | 
    
         
            -
                      data = URI.encode_www_form data
         
     | 
| 
       29 
     | 
    
         
            -
                      headers['Content-Type'] = 'application/x-www-form-urlencoded'
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                      http.post path, data, headers
         
     | 
| 
       32 
     | 
    
         
            -
                    else raise ArgumentError, 'format not recognized'
         
     | 
| 
       33 
     | 
    
         
            -
                  end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                  @cookies << resp.response['set-cookie'].split('; ')[0] rescue @cookies.get
         
     | 
| 
       36 
     | 
    
         
            -
                  JSON.parse resp.body
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
              end
         
     | 
| 
       39 
     | 
    
         
            -
            end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (c) 2014 Giovanni Capuano <webmaster@giovannicapuano.net>
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Released under the MIT License
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://opensource.org/licenses/MIT
         
     | 
| 
      
 6 
     | 
    
         
            +
            #++
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Assonnato
         
     | 
| 
      
 9 
     | 
    
         
            +
              
         
     | 
| 
      
 10 
     | 
    
         
            +
            module Request
         
     | 
| 
      
 11 
     | 
    
         
            +
              def get(path, headers = {})
         
     | 
| 
      
 12 
     | 
    
         
            +
                request :get,  path, {}, headers
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def post(path, data = {}, headers = {})
         
     | 
| 
      
 16 
     | 
    
         
            +
                request :post, path, data, headers
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              private
         
     | 
| 
      
 20 
     | 
    
         
            +
              def request(method, path, data, headers)
         
     | 
| 
      
 21 
     | 
    
         
            +
                headers['Cookie'] = @cookies.get
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                Net::HTTP.start(@host, @port, use_ssl: @ssl) do |http|
         
     | 
| 
      
 24 
     | 
    
         
            +
                  resp = case method.to_sym
         
     | 
| 
      
 25 
     | 
    
         
            +
                    when :get
         
     | 
| 
      
 26 
     | 
    
         
            +
                      http.get  path, headers
         
     | 
| 
      
 27 
     | 
    
         
            +
                    when :post
         
     | 
| 
      
 28 
     | 
    
         
            +
                      data = URI.encode_www_form data
         
     | 
| 
      
 29 
     | 
    
         
            +
                      headers['Content-Type'] = 'application/x-www-form-urlencoded'
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                      http.post path, data, headers
         
     | 
| 
      
 32 
     | 
    
         
            +
                    else raise ArgumentError, 'format not recognized'
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  @cookies << resp.response['set-cookie'].split('; ')[0] rescue @cookies.get
         
     | 
| 
      
 36 
     | 
    
         
            +
                  JSON.parse resp.body
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       41 
41 
     | 
    
         
             
            end
         
     | 
    
        data/lib/assonnato/version.rb
    CHANGED
    
    
    
        data/spec/episode_spec.rb
    CHANGED
    
    | 
         @@ -1,35 +1,35 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #! /usr/bin/env ruby
         
     | 
| 
       2 
     | 
    
         
            -
            require 'assonnato'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe Assonnato::Episode do
         
     | 
| 
       5 
     | 
    
         
            -
              let(:client) { Assonnato::Episode.new Assonnato.new('pigro.omnivium.it') }
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              it 'returns all the episodes of given show' do
         
     | 
| 
       8 
     | 
    
         
            -
                res = client.all          'Strike the Blood'
         
     | 
| 
       9 
     | 
    
         
            -
                res.should                be_kind_of(Array)
         
     | 
| 
       10 
     | 
    
         
            -
                res.should_not            be_empty
         
     | 
| 
       11 
     | 
    
         
            -
                res.first.should          be_kind_of(Struct)
         
     | 
| 
       12 
     | 
    
         
            -
                res.first.episode.should  eql(1)
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              it 'can\'t search episodes' do
         
     | 
| 
       16 
     | 
    
         
            -
                expect {
         
     | 
| 
       17 
     | 
    
         
            -
                  client.search 'le_too_derp'
         
     | 
| 
       18 
     | 
    
         
            -
                }.to raise_error(NotImplementedError)
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              it 'returns a specific episode of given show' do
         
     | 
| 
       22 
     | 
    
         
            -
                res = client.get          'Strike the Blood', 1
         
     | 
| 
       23 
     | 
    
         
            -
                res.should                be_kind_of(Array)
         
     | 
| 
       24 
     | 
    
         
            -
                res.should_not            be_empty
         
     | 
| 
       25 
     | 
    
         
            -
                res.first.should          be_kind_of(Struct)
         
     | 
| 
       26 
     | 
    
         
            -
                res.first.episode.should  eql(1)
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              it 'returns the last episode of each show with given status' do
         
     | 
| 
       30 
     | 
    
         
            -
                res = client.last         :ongoing
         
     | 
| 
       31 
     | 
    
         
            -
                res.should                be_kind_of(Array)
         
     | 
| 
       32 
     | 
    
         
            -
                res.should_not            be_empty
         
     | 
| 
       33 
     | 
    
         
            -
                res.first.should          be_kind_of(Struct)
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
      
 1 
     | 
    
         
            +
            #! /usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'assonnato'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe Assonnato::Episode do
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:client) { Assonnato::Episode.new Assonnato.new('pigro.omnivium.it') }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              it 'returns all the episodes of given show' do
         
     | 
| 
      
 8 
     | 
    
         
            +
                res = client.all          'Strike the Blood'
         
     | 
| 
      
 9 
     | 
    
         
            +
                res.should                be_kind_of(Array)
         
     | 
| 
      
 10 
     | 
    
         
            +
                res.should_not            be_empty
         
     | 
| 
      
 11 
     | 
    
         
            +
                res.first.should          be_kind_of(Struct)
         
     | 
| 
      
 12 
     | 
    
         
            +
                res.first.episode.should  eql(1)
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              it 'can\'t search episodes' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                expect {
         
     | 
| 
      
 17 
     | 
    
         
            +
                  client.search 'le_too_derp'
         
     | 
| 
      
 18 
     | 
    
         
            +
                }.to raise_error(NotImplementedError)
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              it 'returns a specific episode of given show' do
         
     | 
| 
      
 22 
     | 
    
         
            +
                res = client.get          'Strike the Blood', 1
         
     | 
| 
      
 23 
     | 
    
         
            +
                res.should                be_kind_of(Array)
         
     | 
| 
      
 24 
     | 
    
         
            +
                res.should_not            be_empty
         
     | 
| 
      
 25 
     | 
    
         
            +
                res.first.should          be_kind_of(Struct)
         
     | 
| 
      
 26 
     | 
    
         
            +
                res.first.episode.should  eql(1)
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              it 'returns the last episode of each show with given status' do
         
     | 
| 
      
 30 
     | 
    
         
            +
                res = client.last         :ongoing
         
     | 
| 
      
 31 
     | 
    
         
            +
                res.should                be_kind_of(Array)
         
     | 
| 
      
 32 
     | 
    
         
            +
                res.should_not            be_empty
         
     | 
| 
      
 33 
     | 
    
         
            +
                res.first.should          be_kind_of(Struct)
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
       35 
35 
     | 
    
         
             
            end
         
     | 
    
        data/spec/show_spec.rb
    CHANGED
    
    | 
         @@ -1,51 +1,51 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #! /usr/bin/env ruby
         
     | 
| 
       2 
     | 
    
         
            -
            require 'assonnato'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe Assonnato::Show do
         
     | 
| 
       5 
     | 
    
         
            -
              let(:client) { Assonnato::Show.new Assonnato.new('pigro.omnivium.it') }
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              it 'returns all the on-going shows' do
         
     | 
| 
       8 
     | 
    
         
            -
                res = client.all             :ongoing
         
     | 
| 
       9 
     | 
    
         
            -
                res.should                   be_kind_of(Array)
         
     | 
| 
       10 
     | 
    
         
            -
                res.should_not               be_empty
         
     | 
| 
       11 
     | 
    
         
            -
                res.first.should             be_kind_of(Struct)
         
     | 
| 
       12 
     | 
    
         
            -
                res.first.status.should      eql('ongoing')
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              it 'search all the shows which name is similar to given keyword' do
         
     | 
| 
       16 
     | 
    
         
            -
                res = client.search         ' 
     | 
| 
       17 
     | 
    
         
            -
                res.should                   be_kind_of(Array)
         
     | 
| 
       18 
     | 
    
         
            -
                res.should_not               be_empty
         
     | 
| 
       19 
     | 
    
         
            -
                res.first.should             be_kind_of(Struct)
         
     | 
| 
       20 
     | 
    
         
            -
                res.first.name.should        eql('Strike the Blood')
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              it 'returns all the on-going shows of given fansub' do
         
     | 
| 
       24 
     | 
    
         
            -
                res = client.all             :ongoing, fansub: 'Omnivium'
         
     | 
| 
       25 
     | 
    
         
            -
                res.should                   be_kind_of(Array)
         
     | 
| 
       26 
     | 
    
         
            -
                res.should_not               be_empty
         
     | 
| 
       27 
     | 
    
         
            -
                res.first.should             be_kind_of(Struct)
         
     | 
| 
       28 
     | 
    
         
            -
                res.first.fansub.should      eql('Omnivium')
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              it 'returns all the on-going shows in wich given user has worked' do
         
     | 
| 
       32 
     | 
    
         
            -
                res = client.all             :ongoing, user: 'Roxas Shadow'
         
     | 
| 
       33 
     | 
    
         
            -
                res.should                   be_kind_of(Array)
         
     | 
| 
       34 
     | 
    
         
            -
                res.should_not               be_empty
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              it 'returns all the on-going shows in wich given user has worked in given role' do
         
     | 
| 
       38 
     | 
    
         
            -
                res = client.all             :ongoing, { user: 'Roxas Shadow', role: :translator }
         
     | 
| 
       39 
     | 
    
         
            -
                res.should                   be_kind_of(Array)
         
     | 
| 
       40 
     | 
    
         
            -
                res.should_not               be_empty
         
     | 
| 
       41 
     | 
    
         
            -
                res.first.translator.should  eql('Roxas Shadow')
         
     | 
| 
       42 
     | 
    
         
            -
              end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
              it 'returns all the informations of given show' do
         
     | 
| 
       45 
     | 
    
         
            -
                res = client.get            'Strike the Blood'
         
     | 
| 
       46 
     | 
    
         
            -
                res.should                   be_kind_of(Array)
         
     | 
| 
       47 
     | 
    
         
            -
                res.should_not               be_empty
         
     | 
| 
       48 
     | 
    
         
            -
                res.first.should             be_kind_of(Struct)
         
     | 
| 
       49 
     | 
    
         
            -
                res.first.id.should          eql(1)
         
     | 
| 
       50 
     | 
    
         
            -
              end
         
     | 
| 
       51 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            #! /usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'assonnato'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe Assonnato::Show do
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:client) { Assonnato::Show.new Assonnato.new('pigro.omnivium.it') }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              it 'returns all the on-going shows' do
         
     | 
| 
      
 8 
     | 
    
         
            +
                res = client.all             :ongoing
         
     | 
| 
      
 9 
     | 
    
         
            +
                res.should                   be_kind_of(Array)
         
     | 
| 
      
 10 
     | 
    
         
            +
                res.should_not               be_empty
         
     | 
| 
      
 11 
     | 
    
         
            +
                res.first.should             be_kind_of(Struct)
         
     | 
| 
      
 12 
     | 
    
         
            +
                res.first.status.should      eql('ongoing')
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              it 'search all the shows which name is similar to given keyword' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                res = client.search         'Strike'
         
     | 
| 
      
 17 
     | 
    
         
            +
                res.should                   be_kind_of(Array)
         
     | 
| 
      
 18 
     | 
    
         
            +
                res.should_not               be_empty
         
     | 
| 
      
 19 
     | 
    
         
            +
                res.first.should             be_kind_of(Struct)
         
     | 
| 
      
 20 
     | 
    
         
            +
                res.first.name.should        eql('Strike the Blood')
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              it 'returns all the on-going shows of given fansub' do
         
     | 
| 
      
 24 
     | 
    
         
            +
                res = client.all             :ongoing, fansub: 'Omnivium'
         
     | 
| 
      
 25 
     | 
    
         
            +
                res.should                   be_kind_of(Array)
         
     | 
| 
      
 26 
     | 
    
         
            +
                res.should_not               be_empty
         
     | 
| 
      
 27 
     | 
    
         
            +
                res.first.should             be_kind_of(Struct)
         
     | 
| 
      
 28 
     | 
    
         
            +
                res.first.fansub.should      eql('Omnivium')
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              it 'returns all the on-going shows in wich given user has worked' do
         
     | 
| 
      
 32 
     | 
    
         
            +
                res = client.all             :ongoing, user: 'Roxas Shadow'
         
     | 
| 
      
 33 
     | 
    
         
            +
                res.should                   be_kind_of(Array)
         
     | 
| 
      
 34 
     | 
    
         
            +
                res.should_not               be_empty
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              it 'returns all the on-going shows in wich given user has worked in given role' do
         
     | 
| 
      
 38 
     | 
    
         
            +
                res = client.all             :ongoing, { user: 'Roxas Shadow', role: :translator }
         
     | 
| 
      
 39 
     | 
    
         
            +
                res.should                   be_kind_of(Array)
         
     | 
| 
      
 40 
     | 
    
         
            +
                res.should_not               be_empty
         
     | 
| 
      
 41 
     | 
    
         
            +
                res.first.translator.should  eql('Roxas Shadow')
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              it 'returns all the informations of given show' do
         
     | 
| 
      
 45 
     | 
    
         
            +
                res = client.get            'Strike the Blood'
         
     | 
| 
      
 46 
     | 
    
         
            +
                res.should                   be_kind_of(Array)
         
     | 
| 
      
 47 
     | 
    
         
            +
                res.should_not               be_empty
         
     | 
| 
      
 48 
     | 
    
         
            +
                res.first.should             be_kind_of(Struct)
         
     | 
| 
      
 49 
     | 
    
         
            +
                res.first.id.should          eql(1)
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: assonnato
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.8. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.8.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Giovanni Capuano
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-03-12 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rake
         
     | 
| 
         @@ -44,6 +44,7 @@ executables: [] 
     | 
|
| 
       44 
44 
     | 
    
         
             
            extensions: []
         
     | 
| 
       45 
45 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       46 
46 
     | 
    
         
             
            files:
         
     | 
| 
      
 47 
     | 
    
         
            +
            - lib/assonnato.rb
         
     | 
| 
       47 
48 
     | 
    
         
             
            - lib/assonnato/api/episode.rb
         
     | 
| 
       48 
49 
     | 
    
         
             
            - lib/assonnato/api/show.rb
         
     | 
| 
       49 
50 
     | 
    
         
             
            - lib/assonnato/api/user.rb
         
     | 
| 
         @@ -54,7 +55,6 @@ files: 
     | 
|
| 
       54 
55 
     | 
    
         
             
            - lib/assonnato/parser.rb
         
     | 
| 
       55 
56 
     | 
    
         
             
            - lib/assonnato/request.rb
         
     | 
| 
       56 
57 
     | 
    
         
             
            - lib/assonnato/version.rb
         
     | 
| 
       57 
     | 
    
         
            -
            - lib/assonnato.rb
         
     | 
| 
       58 
58 
     | 
    
         
             
            - spec/episode_spec.rb
         
     | 
| 
       59 
59 
     | 
    
         
             
            - spec/show_spec.rb
         
     | 
| 
       60 
60 
     | 
    
         
             
            homepage: http://www.giovannicapuano.net
         
     | 
| 
         @@ -77,10 +77,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       77 
77 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       78 
78 
     | 
    
         
             
            requirements: []
         
     | 
| 
       79 
79 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       80 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 80 
     | 
    
         
            +
            rubygems_version: 2.6.1
         
     | 
| 
       81 
81 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       82 
82 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       83 
83 
     | 
    
         
             
            summary: RESTful gem for wrapping Pigro's APIs
         
     | 
| 
       84 
84 
     | 
    
         
             
            test_files:
         
     | 
| 
       85 
85 
     | 
    
         
             
            - spec/episode_spec.rb
         
     | 
| 
       86 
86 
     | 
    
         
             
            - spec/show_spec.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            has_rdoc: 
         
     |