flickr-objects 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/README.md +49 -63
 - data/lib/flickr/api/abstract/params_processor.rb +68 -0
 - data/lib/flickr/api/abstract.rb +113 -0
 - data/lib/flickr/api/general.rb +75 -0
 - data/lib/flickr/api/person.rb +91 -39
 - data/lib/flickr/api/photo.rb +213 -108
 - data/lib/flickr/api/set.rb +114 -55
 - data/lib/flickr/api/upload_ticket.rb +17 -6
 - data/lib/flickr/api.rb +90 -35
 - data/lib/flickr/attributes.rb +200 -0
 - data/lib/flickr/base_converter.rb +29 -0
 - data/lib/flickr/client/data.rb +47 -0
 - data/lib/flickr/client/oauth.rb +44 -0
 - data/lib/flickr/client/upload.rb +55 -0
 - data/lib/flickr/client.rb +77 -33
 - data/lib/flickr/configuration.rb +85 -14
 - data/lib/flickr/error.rb +58 -0
 - data/lib/flickr/middleware.rb +52 -28
 - data/lib/flickr/oauth.rb +89 -74
 - data/lib/flickr/object/attribute_locations/list.rb +25 -0
 - data/lib/flickr/object/attribute_locations/location.rb +29 -0
 - data/lib/flickr/object/attribute_locations/permissions.rb +31 -0
 - data/lib/flickr/object/attribute_locations/person/upload_status.rb +32 -0
 - data/lib/flickr/object/attribute_locations/person.rb +78 -0
 - data/lib/flickr/object/attribute_locations/photo/exif.rb +29 -0
 - data/lib/flickr/object/attribute_locations/photo/note.rb +36 -0
 - data/lib/flickr/object/attribute_locations/photo/tag.rb +23 -0
 - data/lib/flickr/object/attribute_locations/photo.rb +164 -0
 - data/lib/flickr/object/attribute_locations/set.rb +53 -0
 - data/lib/flickr/object/attribute_locations/upload_ticket.rb +30 -0
 - data/lib/flickr/object/attribute_locations/visibility.rb +24 -0
 - data/lib/flickr/object/list/kaminari.rb +30 -0
 - data/lib/flickr/object/list/normal.rb +27 -0
 - data/lib/flickr/object/list/will_paginate.rb +31 -0
 - data/lib/flickr/object/list.rb +87 -0
 - data/lib/flickr/object/location.rb +35 -0
 - data/lib/flickr/object/permissions.rb +18 -0
 - data/lib/flickr/object/person/upload_status.rb +22 -0
 - data/lib/flickr/object/person.rb +93 -0
 - data/lib/flickr/object/photo/exif.rb +35 -0
 - data/lib/flickr/object/photo/note.rb +20 -0
 - data/lib/flickr/object/photo/size.rb +67 -0
 - data/lib/flickr/object/photo/tag.rb +23 -0
 - data/lib/flickr/object/photo.rb +349 -0
 - data/lib/flickr/object/set.rb +114 -0
 - data/lib/flickr/object/upload_ticket.rb +31 -0
 - data/lib/flickr/object/visibility.rb +16 -0
 - data/lib/flickr/object.rb +118 -27
 - data/lib/flickr/sanitized_file.rb +70 -0
 - data/lib/flickr/version.rb +4 -2
 - data/lib/flickr.rb +69 -15
 - metadata +89 -103
 - data/lib/flickr/api/api_methods/flickr.rb +0 -5
 - data/lib/flickr/api/api_methods/person.rb +0 -14
 - data/lib/flickr/api/api_methods/photo.rb +0 -26
 - data/lib/flickr/api/api_methods/set.rb +0 -18
 - data/lib/flickr/api/api_methods/upload_ticket.rb +0 -5
 - data/lib/flickr/api/flickr.rb +0 -35
 - data/lib/flickr/api_caller.rb +0 -98
 - data/lib/flickr/client/methods_client.rb +0 -22
 - data/lib/flickr/client/upload_client.rb +0 -62
 - data/lib/flickr/errors.rb +0 -19
 - data/lib/flickr/helpers/base_58.rb +0 -15
 - data/lib/flickr/helpers/boolean.rb +0 -4
 - data/lib/flickr/helpers/core_ext.rb +0 -5
 - data/lib/flickr/object/attribute/converter.rb +0 -49
 - data/lib/flickr/object/attribute/finder.rb +0 -32
 - data/lib/flickr/object/attribute.rb +0 -45
 - data/lib/flickr/objects/attribute_values/list.rb +0 -10
 - data/lib/flickr/objects/attribute_values/location.rb +0 -14
 - data/lib/flickr/objects/attribute_values/note.rb +0 -11
 - data/lib/flickr/objects/attribute_values/permissions.rb +0 -12
 - data/lib/flickr/objects/attribute_values/person/upload_status.rb +0 -16
 - data/lib/flickr/objects/attribute_values/person.rb +0 -24
 - data/lib/flickr/objects/attribute_values/photo.rb +0 -84
 - data/lib/flickr/objects/attribute_values/set.rb +0 -17
 - data/lib/flickr/objects/attribute_values/tag.rb +0 -9
 - data/lib/flickr/objects/attribute_values/upload_ticket.rb +0 -9
 - data/lib/flickr/objects/attribute_values/visibility.rb +0 -10
 - data/lib/flickr/objects/list.rb +0 -86
 - data/lib/flickr/objects/location.rb +0 -26
 - data/lib/flickr/objects/note.rb +0 -14
 - data/lib/flickr/objects/permissions.rb +0 -14
 - data/lib/flickr/objects/person/upload_status.rb +0 -14
 - data/lib/flickr/objects/person.rb +0 -43
 - data/lib/flickr/objects/photo.rb +0 -113
 - data/lib/flickr/objects/set.rb +0 -29
 - data/lib/flickr/objects/tag.rb +0 -17
 - data/lib/flickr/objects/upload_ticket.rb +0 -18
 - data/lib/flickr/objects/visibility.rb +0 -12
 - data/lib/flickr/objects.rb +0 -25
 
| 
         @@ -0,0 +1,164 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "flickr/base_converter"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                class Photo
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  attributes.add_locations(
         
     | 
| 
      
 9 
     | 
    
         
            +
                    uploaded_at: [
         
     | 
| 
      
 10 
     | 
    
         
            +
                      -> { @attributes["dateuploaded"] },
         
     | 
| 
      
 11 
     | 
    
         
            +
                      -> { @attributes["dateupload"] },
         
     | 
| 
      
 12 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 13 
     | 
    
         
            +
                    favorite: [
         
     | 
| 
      
 14 
     | 
    
         
            +
                      -> { @attributes["isfavorite"] },
         
     | 
| 
      
 15 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 16 
     | 
    
         
            +
                    posted_at: [
         
     | 
| 
      
 17 
     | 
    
         
            +
                      -> { @attributes["dates"]["posted"] },
         
     | 
| 
      
 18 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 19 
     | 
    
         
            +
                    taken_at: [
         
     | 
| 
      
 20 
     | 
    
         
            +
                      -> { @attributes["dates"]["taken"] },
         
     | 
| 
      
 21 
     | 
    
         
            +
                      -> { @attributes["datetaken"] }
         
     | 
| 
      
 22 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 23 
     | 
    
         
            +
                    taken_at_granularity: [
         
     | 
| 
      
 24 
     | 
    
         
            +
                      -> { @attributes["dates"]["takengranularity"] },
         
     | 
| 
      
 25 
     | 
    
         
            +
                      -> { @attributes["datetakengranularity"] },
         
     | 
| 
      
 26 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 27 
     | 
    
         
            +
                    updated_at: [
         
     | 
| 
      
 28 
     | 
    
         
            +
                      -> { @attributes["dates"]["lastupdate"] },
         
     | 
| 
      
 29 
     | 
    
         
            +
                      -> { @attributes["lastupdate"] },
         
     | 
| 
      
 30 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 31 
     | 
    
         
            +
                    views_count: [
         
     | 
| 
      
 32 
     | 
    
         
            +
                      -> { @attributes["views"] },
         
     | 
| 
      
 33 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 34 
     | 
    
         
            +
                    public_editability: [
         
     | 
| 
      
 35 
     | 
    
         
            +
                      -> { @attributes["publiceditability"] },
         
     | 
| 
      
 36 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 37 
     | 
    
         
            +
                    comments_count: [
         
     | 
| 
      
 38 
     | 
    
         
            +
                      -> { @attributes["comments"]["_content"] },
         
     | 
| 
      
 39 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 40 
     | 
    
         
            +
                    has_people: [
         
     | 
| 
      
 41 
     | 
    
         
            +
                      -> { @attributes["people"]["haspeople"] },
         
     | 
| 
      
 42 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 43 
     | 
    
         
            +
                    safe: [
         
     | 
| 
      
 44 
     | 
    
         
            +
                      -> { safety_level <= 1 },
         
     | 
| 
      
 45 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 46 
     | 
    
         
            +
                    moderate: [
         
     | 
| 
      
 47 
     | 
    
         
            +
                      -> { safety_level == 2 },
         
     | 
| 
      
 48 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 49 
     | 
    
         
            +
                    restricted: [
         
     | 
| 
      
 50 
     | 
    
         
            +
                      -> { safety_level == 3 },
         
     | 
| 
      
 51 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 52 
     | 
    
         
            +
                    notes: [
         
     | 
| 
      
 53 
     | 
    
         
            +
                      -> { @attributes["notes"]["note"] },
         
     | 
| 
      
 54 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 55 
     | 
    
         
            +
                    tags: [
         
     | 
| 
      
 56 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 57 
     | 
    
         
            +
                        @attributes["tags"]["tag"].map do |hash|
         
     | 
| 
      
 58 
     | 
    
         
            +
                          hash.merge("photo_id" => id)
         
     | 
| 
      
 59 
     | 
    
         
            +
                        end
         
     | 
| 
      
 60 
     | 
    
         
            +
                      },
         
     | 
| 
      
 61 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 62 
     | 
    
         
            +
                        tags = @attributes["tags"].split(" ").map do |content|
         
     | 
| 
      
 63 
     | 
    
         
            +
                          {"_content" => content, "machine_tag" => 0}
         
     | 
| 
      
 64 
     | 
    
         
            +
                        end
         
     | 
| 
      
 65 
     | 
    
         
            +
                        machine_tags = @attributes["machine_tags"].split(" ").map do |content|
         
     | 
| 
      
 66 
     | 
    
         
            +
                          {"_content" => content, "machine_tag" => 1}
         
     | 
| 
      
 67 
     | 
    
         
            +
                        end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                        tags + machine_tags
         
     | 
| 
      
 70 
     | 
    
         
            +
                      },
         
     | 
| 
      
 71 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 72 
     | 
    
         
            +
                    visibility: [
         
     | 
| 
      
 73 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 74 
     | 
    
         
            +
                        {
         
     | 
| 
      
 75 
     | 
    
         
            +
                          "ispublic" => @attributes.fetch("ispublic"),
         
     | 
| 
      
 76 
     | 
    
         
            +
                          "isfriend" => @attributes.fetch("isfriend"),
         
     | 
| 
      
 77 
     | 
    
         
            +
                          "isfamily" => @attributes.fetch("isfamily"),
         
     | 
| 
      
 78 
     | 
    
         
            +
                        }
         
     | 
| 
      
 79 
     | 
    
         
            +
                      }
         
     | 
| 
      
 80 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 81 
     | 
    
         
            +
                    title: [
         
     | 
| 
      
 82 
     | 
    
         
            +
                      -> { @attributes["title"]["_content"] },
         
     | 
| 
      
 83 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 84 
     | 
    
         
            +
                    description: [
         
     | 
| 
      
 85 
     | 
    
         
            +
                      -> { @attributes["description"]["_content"] },
         
     | 
| 
      
 86 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 87 
     | 
    
         
            +
                    owner: [
         
     | 
| 
      
 88 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 89 
     | 
    
         
            +
                        if @attributes["owner"].is_a?(String)
         
     | 
| 
      
 90 
     | 
    
         
            +
                          {
         
     | 
| 
      
 91 
     | 
    
         
            +
                            "nsid"       => @attributes["owner"],
         
     | 
| 
      
 92 
     | 
    
         
            +
                            "username"   => @attributes["ownername"] || @attributes["username"],
         
     | 
| 
      
 93 
     | 
    
         
            +
                            "iconserver" => @attributes["iconserver"],
         
     | 
| 
      
 94 
     | 
    
         
            +
                            "iconfarm"   => @attributes["iconfarm"],
         
     | 
| 
      
 95 
     | 
    
         
            +
                          }
         
     | 
| 
      
 96 
     | 
    
         
            +
                        end
         
     | 
| 
      
 97 
     | 
    
         
            +
                      },
         
     | 
| 
      
 98 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 99 
     | 
    
         
            +
                    path_alias: [
         
     | 
| 
      
 100 
     | 
    
         
            +
                      -> { @attributes["pathalias"] },
         
     | 
| 
      
 101 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 102 
     | 
    
         
            +
                    location_visibility: [
         
     | 
| 
      
 103 
     | 
    
         
            +
                      -> { @attributes["geoperms"] },
         
     | 
| 
      
 104 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 105 
     | 
    
         
            +
                        {
         
     | 
| 
      
 106 
     | 
    
         
            +
                          "isfamily"  => @attributes.fetch("geo_is_family"),
         
     | 
| 
      
 107 
     | 
    
         
            +
                          "isfriend"  => @attributes.fetch("geo_is_friend"),
         
     | 
| 
      
 108 
     | 
    
         
            +
                          "iscontact" => @attributes.fetch("geo_is_contact"),
         
     | 
| 
      
 109 
     | 
    
         
            +
                          "ispublic"  => @attributes.fetch("geo_is_public"),
         
     | 
| 
      
 110 
     | 
    
         
            +
                        }
         
     | 
| 
      
 111 
     | 
    
         
            +
                      }
         
     | 
| 
      
 112 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 113 
     | 
    
         
            +
                    location: [
         
     | 
| 
      
 114 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 115 
     | 
    
         
            +
                        {
         
     | 
| 
      
 116 
     | 
    
         
            +
                          "latitude"  => @attributes.fetch("latitude"),
         
     | 
| 
      
 117 
     | 
    
         
            +
                          "longitude" => @attributes.fetch("longitude"),
         
     | 
| 
      
 118 
     | 
    
         
            +
                          "accuracy"  => @attributes["accuracy"],
         
     | 
| 
      
 119 
     | 
    
         
            +
                          "context"   => @attributes["context"],
         
     | 
| 
      
 120 
     | 
    
         
            +
                          "place_id"  => @attributes["place_id"],
         
     | 
| 
      
 121 
     | 
    
         
            +
                          "woeid"     => @attributes["woeid"],
         
     | 
| 
      
 122 
     | 
    
         
            +
                        }
         
     | 
| 
      
 123 
     | 
    
         
            +
                      },
         
     | 
| 
      
 124 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 125 
     | 
    
         
            +
                    available_sizes: [
         
     | 
| 
      
 126 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 127 
     | 
    
         
            +
                        sizes = Size.all.select do |size|
         
     | 
| 
      
 128 
     | 
    
         
            +
                          @attributes["url_#{size.abbreviation}"] or
         
     | 
| 
      
 129 
     | 
    
         
            +
                          @attributes["sizes"] && @attributes["sizes"]["size"].find { |h| h["label"] == size.label }
         
     | 
| 
      
 130 
     | 
    
         
            +
                        end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                        sizes.map(&:name)
         
     | 
| 
      
 133 
     | 
    
         
            +
                      },
         
     | 
| 
      
 134 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 135 
     | 
    
         
            +
                    largest_size: [
         
     | 
| 
      
 136 
     | 
    
         
            +
                      -> { available_sizes.last },
         
     | 
| 
      
 137 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 138 
     | 
    
         
            +
                    rotation: [
         
     | 
| 
      
 139 
     | 
    
         
            +
                      -> { @attributes["rotation"] },
         
     | 
| 
      
 140 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 141 
     | 
    
         
            +
                    source_url: [
         
     | 
| 
      
 142 
     | 
    
         
            +
                      -> { @attributes["url_#{@size.abbreviation}"] },
         
     | 
| 
      
 143 
     | 
    
         
            +
                      -> { @attributes["sizes"]["size"].find { |hash| hash["label"] == @size.label }["source"] }
         
     | 
| 
      
 144 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 145 
     | 
    
         
            +
                    height: [
         
     | 
| 
      
 146 
     | 
    
         
            +
                      -> { @attributes["height_#{@size.abbreviation}"] },
         
     | 
| 
      
 147 
     | 
    
         
            +
                      -> { @attributes["sizes"]["size"].find { |hash| hash["label"] == @size.label }["height"] }
         
     | 
| 
      
 148 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 149 
     | 
    
         
            +
                    width: [
         
     | 
| 
      
 150 
     | 
    
         
            +
                      -> { @attributes["width_#{@size.abbreviation}"] },
         
     | 
| 
      
 151 
     | 
    
         
            +
                      -> { @attributes["sizes"]["size"].find { |hash| hash["label"] == @size.label }["width"] }
         
     | 
| 
      
 152 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 153 
     | 
    
         
            +
                    url: [
         
     | 
| 
      
 154 
     | 
    
         
            +
                      -> { "http://www.flickr.com/photos/#{owner.id}/#{id}" if owner.id && id },
         
     | 
| 
      
 155 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 156 
     | 
    
         
            +
                    short_url: [
         
     | 
| 
      
 157 
     | 
    
         
            +
                      -> { "http://flic.kr/p/#{BaseConverter.to_base58(id)}" if id },
         
     | 
| 
      
 158 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 159 
     | 
    
         
            +
                  )
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                end
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
              end
         
     | 
| 
      
 164 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,53 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class Set
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  attributes.add_locations(
         
     | 
| 
      
 7 
     | 
    
         
            +
                    owner: [
         
     | 
| 
      
 8 
     | 
    
         
            +
                      -> {
         
     | 
| 
      
 9 
     | 
    
         
            +
                        if @attributes["owner"]
         
     | 
| 
      
 10 
     | 
    
         
            +
                          {
         
     | 
| 
      
 11 
     | 
    
         
            +
                            "id"       => @attributes["owner"],
         
     | 
| 
      
 12 
     | 
    
         
            +
                            "username" => @attributes["username"],
         
     | 
| 
      
 13 
     | 
    
         
            +
                          }
         
     | 
| 
      
 14 
     | 
    
         
            +
                        end
         
     | 
| 
      
 15 
     | 
    
         
            +
                      },
         
     | 
| 
      
 16 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 17 
     | 
    
         
            +
                    url: [
         
     | 
| 
      
 18 
     | 
    
         
            +
                      -> { "http://www.flickr.com/photos/#{owner.id}/sets/#{id}" },
         
     | 
| 
      
 19 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 20 
     | 
    
         
            +
                    photos_count: [
         
     | 
| 
      
 21 
     | 
    
         
            +
                      -> { @attributes["photos"] },
         
     | 
| 
      
 22 
     | 
    
         
            +
                      -> { @attributes["count_photos"] },
         
     | 
| 
      
 23 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 24 
     | 
    
         
            +
                    views_count: [
         
     | 
| 
      
 25 
     | 
    
         
            +
                      -> { @attributes["count_views"] },
         
     | 
| 
      
 26 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 27 
     | 
    
         
            +
                    comments_count: [
         
     | 
| 
      
 28 
     | 
    
         
            +
                      -> { @attributes["count_comments"] },
         
     | 
| 
      
 29 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 30 
     | 
    
         
            +
                    title: [
         
     | 
| 
      
 31 
     | 
    
         
            +
                      -> { @attributes["title"]["_content"] },
         
     | 
| 
      
 32 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 33 
     | 
    
         
            +
                    description: [
         
     | 
| 
      
 34 
     | 
    
         
            +
                      -> { @attributes["description"]["_content"] },
         
     | 
| 
      
 35 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 36 
     | 
    
         
            +
                    permissions: [
         
     | 
| 
      
 37 
     | 
    
         
            +
                      -> { {"can_comment" => @attributes["can_comment"]} },
         
     | 
| 
      
 38 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 39 
     | 
    
         
            +
                    created_at: [
         
     | 
| 
      
 40 
     | 
    
         
            +
                      -> { @attributes["date_create"] },
         
     | 
| 
      
 41 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 42 
     | 
    
         
            +
                    updated_at: [
         
     | 
| 
      
 43 
     | 
    
         
            +
                      -> { @attributes["date_update"] },
         
     | 
| 
      
 44 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 45 
     | 
    
         
            +
                    primary_photo: [
         
     | 
| 
      
 46 
     | 
    
         
            +
                      -> { {"id" => @attributes.fetch("primary")} },
         
     | 
| 
      
 47 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 48 
     | 
    
         
            +
                  )
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class UploadTicket
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  attributes.add_locations(
         
     | 
| 
      
 7 
     | 
    
         
            +
                    status: [
         
     | 
| 
      
 8 
     | 
    
         
            +
                      -> { @attributes["complete"] },
         
     | 
| 
      
 9 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 10 
     | 
    
         
            +
                    complete: [
         
     | 
| 
      
 11 
     | 
    
         
            +
                      -> { status == 1 },
         
     | 
| 
      
 12 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 13 
     | 
    
         
            +
                    failed: [
         
     | 
| 
      
 14 
     | 
    
         
            +
                      -> { status == 2 },
         
     | 
| 
      
 15 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 16 
     | 
    
         
            +
                    invalid: [
         
     | 
| 
      
 17 
     | 
    
         
            +
                      -> { @attributes["invalid"] || 0},
         
     | 
| 
      
 18 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 19 
     | 
    
         
            +
                    valid: [
         
     | 
| 
      
 20 
     | 
    
         
            +
                      -> { not invalid? },
         
     | 
| 
      
 21 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 22 
     | 
    
         
            +
                    photo: [
         
     | 
| 
      
 23 
     | 
    
         
            +
                      -> { {"id" => @attributes.fetch("photoid")} },
         
     | 
| 
      
 24 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 25 
     | 
    
         
            +
                  )
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class Visibility
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  attributes.add_locations(
         
     | 
| 
      
 7 
     | 
    
         
            +
                    public: [
         
     | 
| 
      
 8 
     | 
    
         
            +
                      -> { @attributes["ispublic"] },
         
     | 
| 
      
 9 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 10 
     | 
    
         
            +
                    friends: [
         
     | 
| 
      
 11 
     | 
    
         
            +
                      -> { @attributes["isfriend"] },
         
     | 
| 
      
 12 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 13 
     | 
    
         
            +
                    family: [
         
     | 
| 
      
 14 
     | 
    
         
            +
                      -> { @attributes["isfamily"] },
         
     | 
| 
      
 15 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 16 
     | 
    
         
            +
                    contacts: [
         
     | 
| 
      
 17 
     | 
    
         
            +
                      -> { @attributes["iscontact"] },
         
     | 
| 
      
 18 
     | 
    
         
            +
                    ],
         
     | 
| 
      
 19 
     | 
    
         
            +
                  )
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "kaminari"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "kaminari/models/array_extension"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                class List < Kaminari::PaginatableArray
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 10 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 11 
     | 
    
         
            +
                  #
         
     | 
| 
      
 12 
     | 
    
         
            +
                  def initialize(attributes)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    raise ArgumentError, "attributes should not be nil" if attributes.nil?
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    @attributes = attributes
         
     | 
| 
      
 16 
     | 
    
         
            +
                    super([], offset: current_page, limit: per_page, total_count: total_entries)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 20 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 21 
     | 
    
         
            +
                  #
         
     | 
| 
      
 22 
     | 
    
         
            +
                  def populate(objects)
         
     | 
| 
      
 23 
     | 
    
         
            +
                    replace(objects)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    self
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class List < Array
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 8 
     | 
    
         
            +
                  #
         
     | 
| 
      
 9 
     | 
    
         
            +
                  def initialize(attributes)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    raise ArgumentError, "attributes should not be nil" if attributes.nil?
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    @attributes = attributes
         
     | 
| 
      
 13 
     | 
    
         
            +
                    super()
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 17 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 18 
     | 
    
         
            +
                  #
         
     | 
| 
      
 19 
     | 
    
         
            +
                  def populate(objects)
         
     | 
| 
      
 20 
     | 
    
         
            +
                    replace(objects)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    self
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "will_paginate/collection"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                class List < WillPaginate::Collection
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 9 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 10 
     | 
    
         
            +
                  #
         
     | 
| 
      
 11 
     | 
    
         
            +
                  def initialize(attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    raise ArgumentError, "attributes should not be nil" if attributes.nil?
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                    @attributes = attributes
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @attributes = {"page" => 1, "per_page" => 1, "total" => 1} if @attributes.empty?
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    super(current_page, per_page, total_entries)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 21 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 22 
     | 
    
         
            +
                  #
         
     | 
| 
      
 23 
     | 
    
         
            +
                  def populate(objects)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    replace(objects)
         
     | 
| 
      
 25 
     | 
    
         
            +
                    self
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,87 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "flickr/object/list/#{Flickr.pagination || "normal"}"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "flickr/attributes"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                ##
         
     | 
| 
      
 8 
     | 
    
         
            +
                # Flickr offers pagination when returning collection responses, so this
         
     | 
| 
      
 9 
     | 
    
         
            +
                # class encapsulates this data, and also provides useful finder methods,
         
     | 
| 
      
 10 
     | 
    
         
            +
                # similar to ActiveRecord's.
         
     | 
| 
      
 11 
     | 
    
         
            +
                #
         
     | 
| 
      
 12 
     | 
    
         
            +
                class List
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  extend Flickr::Attributes
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  attribute :current_page,  Integer
         
     | 
| 
      
 17 
     | 
    
         
            +
                  attribute :per_page,      Integer
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attribute :total_pages,   Integer
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attribute :total_entries, Integer
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 22 
     | 
    
         
            +
                  # @see Flickr::Object#attributes
         
     | 
| 
      
 23 
     | 
    
         
            +
                  #
         
     | 
| 
      
 24 
     | 
    
         
            +
                  attr_reader :attributes
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 27 
     | 
    
         
            +
                  # If block is given, does a regular Enumerable#find, otherwise finds by
         
     | 
| 
      
 28 
     | 
    
         
            +
                  # ID(s).
         
     | 
| 
      
 29 
     | 
    
         
            +
                  #
         
     | 
| 
      
 30 
     | 
    
         
            +
                  # @param id_or_ids [String, Array<String>] ID(s) of the object(s) to find.
         
     | 
| 
      
 31 
     | 
    
         
            +
                  # @return [Flickr::Object, Array<Flickr::Object>, nil]
         
     | 
| 
      
 32 
     | 
    
         
            +
                  #
         
     | 
| 
      
 33 
     | 
    
         
            +
                  def find(id_or_ids = nil)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    return super if block_given?
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                    if id_or_ids.is_a?(Enumerable)
         
     | 
| 
      
 37 
     | 
    
         
            +
                      id_or_ids.map { |id| find(id) }
         
     | 
| 
      
 38 
     | 
    
         
            +
                    else
         
     | 
| 
      
 39 
     | 
    
         
            +
                      find_by(id: id_or_ids.to_s)
         
     | 
| 
      
 40 
     | 
    
         
            +
                    end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 44 
     | 
    
         
            +
                  # Finds by a hash of attributes. Supports nesting (see the example).
         
     | 
| 
      
 45 
     | 
    
         
            +
                  #
         
     | 
| 
      
 46 
     | 
    
         
            +
                  # @param attributes [Hash] Attributes by which to search.
         
     | 
| 
      
 47 
     | 
    
         
            +
                  # @return [Flickr::Object, nil]
         
     | 
| 
      
 48 
     | 
    
         
            +
                  # @example
         
     | 
| 
      
 49 
     | 
    
         
            +
                  #   photos.find_by(id: "1", owner: {username: "janko"})
         
     | 
| 
      
 50 
     | 
    
         
            +
                  #
         
     | 
| 
      
 51 
     | 
    
         
            +
                  def find_by(attributes)
         
     | 
| 
      
 52 
     | 
    
         
            +
                    find { |object| object.matches?(attributes) }
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 56 
     | 
    
         
            +
                  # Filters by a hash of attributes. Supports nesting (see the example).
         
     | 
| 
      
 57 
     | 
    
         
            +
                  #
         
     | 
| 
      
 58 
     | 
    
         
            +
                  # @param attributes [Hash] Attributes by which to search
         
     | 
| 
      
 59 
     | 
    
         
            +
                  # @return [Array<Flickr::Object>]
         
     | 
| 
      
 60 
     | 
    
         
            +
                  # @example
         
     | 
| 
      
 61 
     | 
    
         
            +
                  #   photos.filter(owner: {username: "janko"})
         
     | 
| 
      
 62 
     | 
    
         
            +
                  #
         
     | 
| 
      
 63 
     | 
    
         
            +
                  def filter(attributes)
         
     | 
| 
      
 64 
     | 
    
         
            +
                    select { |object| object.matches?(attributes) }
         
     | 
| 
      
 65 
     | 
    
         
            +
                  end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 68 
     | 
    
         
            +
                  # @deprecated It provides #find_by_<attribute> methods, but they are now
         
     | 
| 
      
 69 
     | 
    
         
            +
                  #   deprecated in favor of the obviously superior {#find_by} (repeating
         
     | 
| 
      
 70 
     | 
    
         
            +
                  #   ActiveRecord's mistake :P).
         
     | 
| 
      
 71 
     | 
    
         
            +
                  #
         
     | 
| 
      
 72 
     | 
    
         
            +
                  def method_missing(name, *args, &block)
         
     | 
| 
      
 73 
     | 
    
         
            +
                    if name.to_s =~ /find_by_\w+/
         
     | 
| 
      
 74 
     | 
    
         
            +
                      Flickr.deprecation_warn "#find_by_<attribute>(<value>) is deprecated; use #find_by(:<attribute> => <value>) instead"
         
     | 
| 
      
 75 
     | 
    
         
            +
                      attribute_name = name[/(?<=find_by_)\w+/]
         
     | 
| 
      
 76 
     | 
    
         
            +
                      find { |object| object.send(attribute_name) == args.first }
         
     | 
| 
      
 77 
     | 
    
         
            +
                    else
         
     | 
| 
      
 78 
     | 
    
         
            +
                      super
         
     | 
| 
      
 79 
     | 
    
         
            +
                    end
         
     | 
| 
      
 80 
     | 
    
         
            +
                  end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
            end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            require_relative "attribute_locations/list"
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class Location < Flickr::Object
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  class Area < Flickr::Object
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                    attribute :name,     String
         
     | 
| 
      
 9 
     | 
    
         
            +
                    attribute :place_id, String
         
     | 
| 
      
 10 
     | 
    
         
            +
                    attribute :woe_id,   String
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  attribute :latitude,      Float
         
     | 
| 
      
 15 
     | 
    
         
            +
                  attribute :longitude,     Float
         
     | 
| 
      
 16 
     | 
    
         
            +
                  attribute :accuracy,      Integer
         
     | 
| 
      
 17 
     | 
    
         
            +
                  attribute :context,       Integer
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attribute :place_id,      String
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attribute :woe_id,        String
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  attribute :indoors,       Boolean
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attribute :outdoors,      Boolean
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  attribute :neighbourhood, Area
         
     | 
| 
      
 25 
     | 
    
         
            +
                  attribute :locality,      Area
         
     | 
| 
      
 26 
     | 
    
         
            +
                  attribute :county,        Area
         
     | 
| 
      
 27 
     | 
    
         
            +
                  attribute :region,        Area
         
     | 
| 
      
 28 
     | 
    
         
            +
                  attribute :country,       Area
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            require_relative "attribute_locations/location"
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class Permissions < Flickr::Object
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  attribute :can_comment,  Boolean
         
     | 
| 
      
 7 
     | 
    
         
            +
                  attribute :can_add_meta, Boolean
         
     | 
| 
      
 8 
     | 
    
         
            +
                  attribute :can_download, Boolean
         
     | 
| 
      
 9 
     | 
    
         
            +
                  attribute :can_blog,     Boolean
         
     | 
| 
      
 10 
     | 
    
         
            +
                  attribute :can_print,    Boolean
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attribute :can_share,    Boolean
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            require_relative "attribute_locations/permissions"
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Person
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                  class UploadStatus < Flickr::Object
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    class Month < Object
         
     | 
| 
      
 8 
     | 
    
         
            +
                      attribute :maximum,   Integer
         
     | 
| 
      
 9 
     | 
    
         
            +
                      attribute :used,      Integer
         
     | 
| 
      
 10 
     | 
    
         
            +
                      attribute :remaining, Integer
         
     | 
| 
      
 11 
     | 
    
         
            +
                    end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                    attribute :current_month,      Month
         
     | 
| 
      
 14 
     | 
    
         
            +
                    attribute :maximum_photo_size, Integer
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            require_relative "../attribute_locations/person/upload_status"
         
     | 
| 
         @@ -0,0 +1,93 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                class Person < Flickr::Object
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  autoload_names :UploadStatus
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  attribute :id,                   String
         
     | 
| 
      
 9 
     | 
    
         
            +
                  attribute :nsid,                 String
         
     | 
| 
      
 10 
     | 
    
         
            +
                  attribute :username,             String
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attribute :real_name,            String
         
     | 
| 
      
 12 
     | 
    
         
            +
                  attribute :location,             String
         
     | 
| 
      
 13 
     | 
    
         
            +
                  attribute :time_zone,            Hash
         
     | 
| 
      
 14 
     | 
    
         
            +
                  attribute :description,          String
         
     | 
| 
      
 15 
     | 
    
         
            +
                  attribute :has_pro_account,      Boolean
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  attribute :icon_server,          Integer
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attribute :icon_farm,            Integer
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attribute :buddy_icon_url,       String
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  attribute :photos_url,           String
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attribute :profile_url,          String
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attribute :mobile_url,           String
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  attribute :first_photo_taken,    Time
         
     | 
| 
      
 26 
     | 
    
         
            +
                  attribute :first_photo_uploaded, Time
         
     | 
| 
      
 27 
     | 
    
         
            +
                  attribute :favorited_at,         Time
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  attribute :photos_count,         Integer
         
     | 
| 
      
 30 
     | 
    
         
            +
                  attribute :photo_views_count,    Integer
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  attribute :path_alias,           String
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 35 
     | 
    
         
            +
                  # @return [self]
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # @see Flickr::Api::Person#get_info
         
     | 
| 
      
 37 
     | 
    
         
            +
                  #
         
     | 
| 
      
 38 
     | 
    
         
            +
                  def get_info!(params = {})
         
     | 
| 
      
 39 
     | 
    
         
            +
                    person = api.get_info(id, params)
         
     | 
| 
      
 40 
     | 
    
         
            +
                    update(person.attributes)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 44 
     | 
    
         
            +
                  # @return [Flickr::Object::List<Flickr::Object::Photo>]
         
     | 
| 
      
 45 
     | 
    
         
            +
                  # @see Flickr::Api::Person#get_photos
         
     | 
| 
      
 46 
     | 
    
         
            +
                  #
         
     | 
| 
      
 47 
     | 
    
         
            +
                  def get_photos(params = {})
         
     | 
| 
      
 48 
     | 
    
         
            +
                    api.get_photos(id, params)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                  alias photos get_photos
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 53 
     | 
    
         
            +
                  # @return [Flickr::Object::List<Flickr::Object::Photo>]
         
     | 
| 
      
 54 
     | 
    
         
            +
                  # @see Flickr::Api::Person#get_photos_of
         
     | 
| 
      
 55 
     | 
    
         
            +
                  #
         
     | 
| 
      
 56 
     | 
    
         
            +
                  def get_photos_of(params = {})
         
     | 
| 
      
 57 
     | 
    
         
            +
                    api.get_photos_of(id, params)
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
                  alias photos_of get_photos_of
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 62 
     | 
    
         
            +
                  # @return [Flickr::Object::List<Flickr::Object::Photo>]
         
     | 
| 
      
 63 
     | 
    
         
            +
                  # @see Flickr::Api::Person#get_public_photos
         
     | 
| 
      
 64 
     | 
    
         
            +
                  #
         
     | 
| 
      
 65 
     | 
    
         
            +
                  def get_public_photos(params = {})
         
     | 
| 
      
 66 
     | 
    
         
            +
                    api.get_public_photos(id, params)
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                  alias public_photos get_public_photos
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 71 
     | 
    
         
            +
                  # @return [Flickr::Object::List<Flickr::Object::Photo>]
         
     | 
| 
      
 72 
     | 
    
         
            +
                  # @see Flickr::Api::Person#get_public_photos_from_contacts
         
     | 
| 
      
 73 
     | 
    
         
            +
                  #
         
     | 
| 
      
 74 
     | 
    
         
            +
                  def get_public_photos_from_contacts(params = {})
         
     | 
| 
      
 75 
     | 
    
         
            +
                    api.get_public_photos_from_contacts(id, params)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  end
         
     | 
| 
      
 77 
     | 
    
         
            +
                  alias public_photos_from_contacts get_public_photos_from_contacts
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 80 
     | 
    
         
            +
                  # @return [Flickr::Object::List<Flickr::Object::Set>]
         
     | 
| 
      
 81 
     | 
    
         
            +
                  # @see Flickr::Api::Person#get_sets
         
     | 
| 
      
 82 
     | 
    
         
            +
                  #
         
     | 
| 
      
 83 
     | 
    
         
            +
                  def get_sets(params = {})
         
     | 
| 
      
 84 
     | 
    
         
            +
                    api.get_sets(id, params)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                  alias sets get_sets
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
              end
         
     | 
| 
      
 91 
     | 
    
         
            +
            end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            require_relative "attribute_locations/person"
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Photo
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                  class Exif < Flickr::Object
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    class Item < Object
         
     | 
| 
      
 8 
     | 
    
         
            +
                      attribute :tagspace,    String
         
     | 
| 
      
 9 
     | 
    
         
            +
                      attribute :tagspace_id, String
         
     | 
| 
      
 10 
     | 
    
         
            +
                      attribute :tag,         String
         
     | 
| 
      
 11 
     | 
    
         
            +
                      attribute :label,       String
         
     | 
| 
      
 12 
     | 
    
         
            +
                      attribute :raw,         String
         
     | 
| 
      
 13 
     | 
    
         
            +
                      attribute :clean,       String
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                    attribute :items,  List[Item]
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                    ##
         
     | 
| 
      
 19 
     | 
    
         
            +
                    # Fetches the item with the given label and grabs the value.
         
     | 
| 
      
 20 
     | 
    
         
            +
                    #
         
     | 
| 
      
 21 
     | 
    
         
            +
                    # @param label [String] Label of the exif data
         
     | 
| 
      
 22 
     | 
    
         
            +
                    # @return [String]
         
     | 
| 
      
 23 
     | 
    
         
            +
                    #
         
     | 
| 
      
 24 
     | 
    
         
            +
                    def [](label)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      item = items.find { |item| item.label == label }
         
     | 
| 
      
 26 
     | 
    
         
            +
                      item.clean || item.raw
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            require_relative "../attribute_locations/photo/exif"
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Flickr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Photo
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                  class Note < Flickr::Object
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    attribute :id,          String
         
     | 
| 
      
 8 
     | 
    
         
            +
                    attribute :author,      Person
         
     | 
| 
      
 9 
     | 
    
         
            +
                    attribute :coordinates, Array[Integer]
         
     | 
| 
      
 10 
     | 
    
         
            +
                    attribute :width,       Integer
         
     | 
| 
      
 11 
     | 
    
         
            +
                    attribute :height,      Integer
         
     | 
| 
      
 12 
     | 
    
         
            +
                    attribute :content,     String
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            require_relative "../attribute_locations/photo/note"
         
     |