[IC:SymbolHash{,:Smile::Album.findo:$YARD::CodeObjects::MethodObject:@docstringIC:YARD::Docstring"This will pull a single album from the smugmug * SessionID - string. ( by default if logged in) * AlbumID - string. * Password - string (optional). * SitePassword - string (optional). * AlbumKey - string. : @all[ "3This will pull a single album from the smugmug""5* SessionID - string. ( by default if logged in)"* AlbumID - string."$* Password - string (optional)."(* SitePassword - string (optional)."* AlbumKey - string.":@line_rangeo: Range: begini: exclF:endi":@ref_tags[: @tags[: @object@:@tag_factoryo:YARD::Tags::Library: @factoryo:YARD::Tags::DefaultFactory:@parameters[[" options"{}:@namespaceo:#YARD::CodeObjects::ClassObject;IC; "talbum.rb smile Created by Zac Kleinpeter on 2009-04-28. Copyright 2009 Cajun Country. All rights reserved. ; [ " album.rb" smile" ". Created by Zac Kleinpeter on 2009-04-28."8 Copyright 2009 Cajun Country. All rights reserved."; o; ; i;F;i ;[;[;@;o;;@: @aliases{:@childrenIC:&YARD::CodeObjects::CodeObjectList[ o;;IC; " ; "; 0;[;[;@*;o;;@;[["xml0["session_id0;@: @scope: class:@explicitT: @linei:@current_file_has_commentsF:@visibility: public;[: @name: from_xml:@signature"def from_xml( xml, session_id ) hash = Hash.from_xml( xml )["rsp"] hash["albums"]["album"].map do |album| album.merge!( :album_id => album["id"] ) a = Smile::Album.new( album ) a.session_id = session_id a end end: @files[["lib/smile/album.rbi: @source"def from_xml( xml, session_id ) hash = Hash.from_xml( xml )["rsp"] hash["albums"]["album"].map do |album| album.merge!( :album_id => album["id"] ) a = Smile::Album.new( album ) a.session_id = session_id a end end@o;;IC; "This will pull all the photos for a given album * SessionID - string. ( by default if logged in) * AlbumID - integer. * Heavy - boolean (optional). * Password - string (optional). * SitePassword - string (optional). * AlbumKey - string. ; [ "4This will pull all the photos for a given album"5* SessionID - string. ( by default if logged in)"* AlbumID - integer.""* Heavy - boolean (optional)."$* Password - string (optional)."(* SitePassword - string (optional)."* AlbumKey - string.; o; ; i5;F;i;;[;[;@;;o;;@;[[" options"nil;@;: instance;T; i<;!T;";#;[;$: photos;&"Bdef photos( options=nil ) params = default_params.merge( :method => 'smugmug.images.get', :AlbumID => album_id, :AlbumKey => key, :Heavy => 1 ) params.merge!( options ) if( options ) xml = RestClient.post BASE, params Smile::Photo.from_xml( xml, session_id ) end;'[[@9i<;(",def photos( options=nil ) params = default_params.merge( :method => 'smugmug.images.get', :AlbumID => album_id, :AlbumKey => key, :Heavy => 1 ) params.merge!( options ) if( options ) xml = RestClient.post BASE, params Smile::Photo.from_xml( xml, session_id ) endo;;IC; "P* integer AlbumID * integer Month * integer Year * boolean Heavy (optional) ; [ "* integer AlbumID"* integer Month"* integer Year"* boolean Heavy (optional); o; ; iJ;F;iM;[;[;@R;o;;@;[[" options"nil;@;;);T; iN;!T;";#;[;$: stats;&"def stats( options =nil ) params = default_params.merge( :method => 'smugmug.albums.getStats', :AlbumID => album_id, :month => Date.today.month, :year => Date.today.year ) params.merge!( options ) if( options ) xml = RestClient.post BASE, params rsp = Hash.from_xml( xml )["rsp"] raise "invalid user" if rsp["stat"] == 'fail' hash = Hash.from_xml( xml )["rsp"] OpenStruct.new( hash ) end;'[[@9iN;("def stats( options =nil ) params = default_params.merge( :method => 'smugmug.albums.getStats', :AlbumID => album_id, :month => Date.today.month, :year => Date.today.year ) params.merge!( options ) if( options ) xml = RestClient.post BASE, params rsp = Hash.from_xml( xml )["rsp"] raise "invalid user" if rsp["stat"] == 'fail' hash = Hash.from_xml( xml )["rsp"] OpenStruct.new( hash ) end: @owner@;o:YARD::CodeObjects::Proxy;o:"YARD::CodeObjects::RootObject;IC; " ; ";[;[;@g;o;;@;{;IC;[o:$YARD::CodeObjects::ModuleObject;IC; "ssmug.rb smile Created by Zac Kleinpeter on 2009-04-28. Copyright 2009 Cajun Country. All rights reserved. ; [ " smug.rb" smile" ". Created by Zac Kleinpeter on 2009-04-28."8 Copyright 2009 Cajun Country. All rights reserved."; 0;[;[;@o;o;;@;{;IC;[o;;IC; " ; "; 0;[;[;@};o;;@;{;IC;[o:&YARD::CodeObjects::ConstantObject;IC; " ; "; 0;[;[;@;o;;@;@}; i;!F: @value".'http://api.smugmug.com/hack/rest/1.2.0/';[;$: BASE;&"5BASE = 'http://api.smugmug.com/hack/rest/1.2.0/';'[["lib/smile/base.rbi;("5BASE = 'http://api.smugmug.com/hack/rest/1.2.0/'o;0;IC; " ; "; 0;[;[;@;o;;@;@}; i;!F;1"/'https://api.smugmug.com/hack/rest/1.2.0/';[;$:BASE_SECURE;&"=BASE_SECURE = 'https://api.smugmug.com/hack/rest/1.2.0/';'[[@i;("=BASE_SECURE = 'https://api.smugmug.com/hack/rest/1.2.0/'o;0;IC; " ; "; 0;[;[;@;o;;@;@}; i;!F;1"''HSoqGCJ8ilF42BeThMGDZqqqOgj1eXqN';[;$:API;&"-API = 'HSoqGCJ8ilF42BeThMGDZqqqOgj1eXqN';'[[@i;("-API = 'HSoqGCJ8ilF42BeThMGDZqqqOgj1eXqN'o;;IC; "$Sets the attribute +session_id+ ; "aSets the attribute +session_id+ @param value the value to set the attribute +session_id+ to.; 0;[;[o:YARD::Tags::Tag : @text"4the value to set the attribute +session_id+ to.: @types0;@;$" value:@tag_name" param;@;o;;@;[;@};;;!F;";#;[;$:session_id=;&"def session_id=(value);'[[@i;("5def session_id=(value) @session_id = value endo;;IC; "0Returns the value of attribute +session_id+ ; "0Returns the value of attribute +session_id+; 0;[;[;@;o;;@;[;@};;;!F;";#;[;$:session_id;&"def session_id;'[[@i;("%def session_id @session_id endo;;IC; "CThis will be included in every request once you have logged in ; ["CThis will be included in every request once you have logged in; o; ; i;F;i;[;[;@;o;;@;[;@};;;T; i;!T;";#;[;$:default_params;&"def default_params base = { :APIKey => API } if( session_id ) base.merge!( :SessionID => session_id ) end base end;'[[@i;("~def default_params base = { :APIKey => API } if( session_id ) base.merge!( :SessionID => session_id ) end base endo;;IC; " ; "; 0;[;[;@;o;;@;[;@};;;T; i;!F;";#;[;$:set_session;&"def set_session if( session_id.nil? ) smug = Smug.new smug.auth_anonymously self.session_id = smug.session_id end end;'[[@i;("def set_session if( session_id.nil? ) smug = Smug.new smug.auth_anonymously self.session_id = smug.session_id end endo;;IC; "$Sets the attribute +session_id+ ; "aSets the attribute +session_id+ @param value the value to set the attribute +session_id+ to.; 0;[;[o;5 ;6"4the value to set the attribute +session_id+ to.;70;@;$" value;8" param;@;o;;@;[;@};;);!F;";#;[;$;9;&"def session_id=(value);'[[@i';("5def session_id=(value) @session_id = value endo;;IC; "0Returns the value of attribute +session_id+ ; "0Returns the value of attribute +session_id+; 0;[;[;@;o;;@;[;@};;);!F;";#;[;$;:;&"def session_id;'[[@i';("%def session_id @session_id endo;;IC; " ; "; 0;[;[;@;o;;@;[;@};;);T; i(;!F;";#;[;$;;;&"mdef default_params self.class.session_id = self.session_id self.class.default_params end;'[[@i(;("adef default_params self.class.session_id = self.session_id self.class.default_params end;,@};@o;!F:@attributesIC;{;)IC;{;:IC;{: write@: read@:@symbolize_valueT;@T;IC;{;:IC;{;>@;?@;@T;@T;@T;[:@instance_mixinsIC;[;,@};$: Base:@superclasso;-;@o: @obj0;$:OpenStruct;'[[@i:@class_mixinsIC;[;,@}o;/;IC; " ; "; 0;[;[;@;o;;@;{;IC;[o;;IC; " ; "; 0;[;[;@;o;;@;[[" param0[" value"nil;@;;);T; i ;!F;";#;[;$: convert;&"def convert( param, value=nil ) key = nil case param.to_s.downcase.to_sym when :popular_category key = :popularCategory when :geo_all key = :geoAll when :geo_keyword key = :geoKeyword when :geo_search key = :geoSearch when :geo_community key = :geoCommunity when :open_search_keyword key = :openSearchKeyword when :user_keyword key = :userkeyword when :nickname_recent key = :nicknameRecent when :nickname_popular key = :nicknamePopular when :user_comments key = :userComments when :geo_user key = :geoUser when :geo_album key = :geoAlbum when :size key = :Size value = value.titlecase when :image_count key = :ImageCount when :data key = :Data when :type key = :Type when :image_id key = :ImageID when :image_key key = :ImageKey when :image_count key = :ImageCount when :nickname, :nick_name key = :NickName else key = param end [ key, value ] end;'[["!lib/smile/param_converter.rbi ;("=def convert( param, value=nil ) key = nil case param.to_s.downcase.to_sym when :popular_category key = :popularCategory when :geo_all key = :geoAll when :geo_keyword key = :geoKeyword when :geo_search key = :geoSearch when :geo_community key = :geoCommunity when :open_search_keyword key = :openSearchKeyword when :user_keyword key = :userkeyword when :nickname_recent key = :nicknameRecent when :nickname_popular key = :nicknamePopular when :user_comments key = :userComments when :geo_user key = :geoUser when :geo_album key = :geoAlbum when :size key = :Size value = value.titlecase when :image_count key = :ImageCount when :data key = :Data when :type key = :Type when :image_id key = :ImageID when :image_key key = :ImageKey when :image_count key = :ImageCount when :nickname, :nick_name key = :NickName else key = param end [ key, value ] endo;;IC; " ; "; 0;[;[;@(;o;;@;[["hash_to_clean0;@;;);T; i<;!F;";#;[;$:clean_hash_keys;&"def clean_hash_keys( hash_to_clean ) cleaned_hash ={} hash_to_clean.each_pair do |key,value| cleaned_hash[convert( key ).first] = value end cleaned_hash end;'[[@&i<;("def clean_hash_keys( hash_to_clean ) cleaned_hash ={} hash_to_clean.each_pair do |key,value| cleaned_hash[convert( key ).first] = value end cleaned_hash end;,@;o;-;@g;D@o;$: Smile;!F;=IC;{;)IC;{;@T;IC;{;@T;@T;[;AIC;[;,@;$:ParamConverter;'[[@&i;FIC;[;,@o;;IC; "tphoto.rb smile Created by Zac Kleinpeter on 2009-04-28. Copyright 2009 Cajun Country. All rights reserved. ; [ " photo.rb" smile" ". Created by Zac Kleinpeter on 2009-04-28."8 Copyright 2009 Cajun Country. All rights reserved."; o; ; i;F;i ;[;[;@?;o;;@;{;IC;[ o;;IC; ":Convert the given xml into photo objects to play with ; [":Convert the given xml into photo objects to play with; o; ; i;F;i;[;[;@N;o;;@;[["xml0["session_id0;@?;;;T; i;!T;";#;[;$;%;&"def from_xml( xml, session_id ) hash = Hash.from_xml( xml )["rsp"] hash["images"]["image"].map do |image| image.merge!( :image_id => image["id"] ) image.merge!( :album_key => image["album"]["key"] ) image.merge!( :album_id => image["album"]["id"] ) image.delete( 'album' ) p = Smile::Photo.new( image ) p.session_id = session_id p end end;'[["lib/smile/photo.rbi;("zdef from_xml( xml, session_id ) hash = Hash.from_xml( xml )["rsp"] hash["images"]["image"].map do |image| image.merge!( :image_id => image["id"] ) image.merge!( :album_key => image["album"]["key"] ) image.merge!( :album_id => image["album"]["id"] ) image.delete( 'album' ) p = Smile::Photo.new( image ) p.session_id = session_id p end endo;;IC; "This will pull a single image from the smugmug * int image_id * String Password optional * String SitePassword optional * String ImageKey ; [ "3This will pull a single image from the smugmug""* int image_id"* String Password optional"#* String SitePassword optional"* String ImageKey"; o; ; i ;F;i&;[;[;@a;o;;@;[[" options"{};@?;;;T; i';!T;";#;[;$: find;&"def find( options={} ) set_session if( session_id.nil? ) options = Smile::ParamConverter.clean_hash_keys( options ) params = default_params.merge( :method => 'smugmug.images.getInfo' ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) image.merge!( :album_key => image["album"]["key"] ) image.merge!( :album_id => image["album"]["id"] ) image.delete( 'album' ) p = Smile::Photo.new( image ) p.session_id = session_id p end;'[[@_i';("Odef find( options={} ) set_session if( session_id.nil? ) options = Smile::ParamConverter.clean_hash_keys( options ) params = default_params.merge( :method => 'smugmug.images.getInfo' ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) image.merge!( :album_key => image["album"]["key"] ) image.merge!( :album_id => image["album"]["id"] ) image.delete( 'album' ) p = Smile::Photo.new( image ) p.session_id = session_id p endo;;IC; "This method will return camera and photograph details about the image specified by ImageID. The Album must be owned by the Session holder, or else be Public (if password-protected, a Password must be provided), to return results. Otherwise, an "invalid user" faultCode will result. Additionally, the album owner must have specified that EXIF data is allowed. Note that many photos have no EXIF data, so an empty or partially returned result is very normal.# Arguments:* String Password optional String SitePassword optional Result:* struct "Image" [some, none, or all may be returned] int "id" String "DateTime" String "DateTimeOriginal" String "DateTimeDigitized" String "Make" String "Model" String "ExposureTime" String "Aperture" int "ISO" String "FocalLength" int "FocalLengthIn35mmFilm" String "CCDWidth" String "CompressedBitsPerPixel" int "Flash" int "Metering" int "ExposureProgram" String "ExposureBiasValue" int "ExposureMode" int "LightSource" int "WhiteBalance" String "DigitalZoomRatio" int "Contrast" int "Saturation" int "Sharpness" String "SubjectDistance" int "SubjectDistanceRange" int "SensingMethod" String "ColorSpace" String "Brightness" ; [/"`This method will return camera and photograph details about the image specified by ImageID."_The Album must be owned by the Session holder, or else be Public (if password-protected, a"_Password must be provided), to return results. Otherwise, an "invalid user" faultCode will"cresult. Additionally, the album owner must have specified that EXIF data is allowed. Note that"^many photos have no EXIF data, so an empty or partially returned result is very normal.# ""Arguments:* ""String Password optional"!String SitePassword optional""AResult:* struct "Image" [some, none, or all may be returned]"" int "id""String "DateTime""String "DateTimeOriginal""String "DateTimeDigitized""String "Make""String "Model""String "ExposureTime""String "Aperture""int "ISO""String "FocalLength"" int "FocalLengthIn35mmFilm""String "CCDWidth""$String "CompressedBitsPerPixel""int "Flash""int "Metering""int "ExposureProgram""String "ExposureBiasValue""int "ExposureMode""int "LightSource""int "WhiteBalance""String "DigitalZoomRatio""int "Contrast""int "Saturation""int "Sharpness""String "SubjectDistance""int "SubjectDistanceRange""int "SensingMethod""String "ColorSpace""String "Brightness"; o; ; i>;F;ig;[;[;@x;o;;@;[[" options"nil;@?;;);T; ih;!T;";#;[;$: details;&"def details( options =nil ) params = default_params.merge( :method => "smugmug.images.getEXIF", :ImageID => self.image_id, :ImageKey => self.key ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params rsp = Hash.from_xml( xml )["rsp"] raise rsp["message"] if rsp["stat"] == 'fail' image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) OpenStruct.new( image ) end;'[[@_ih;("def details( options =nil ) params = default_params.merge( :method => "smugmug.images.getEXIF", :ImageID => self.image_id, :ImageKey => self.key ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params rsp = Hash.from_xml( xml )["rsp"] raise rsp["message"] if rsp["stat"] == 'fail' image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) OpenStruct.new( image ) endo;;IC; "This method will return details about the image specified by ImageID. The Album must be owned by the Session holder, or else be Public (if password-protected, a Password must be provided), to return results.. Otherwise, an "invalid user" faultCode will result. Additionally, some fields are only returned to the Album owner. Arguments: String Password optional String SitePassword optional Result:* struct "Image" int "id" String "Caption" int "Position" int "Serial" int "Size" int "Width" int "Height" String "LastUpdated" String "FileName" owner only String "MD5Sum" owner only String "Watermark" owner only Boolean "Hidden" owner only String "Format" owner only String "Keywords" String "Date" owner only String "AlbumURL" String "TinyURL" String "ThumbURL" String "SmallURL" String "MediumURL" String "LargeURL" (if available) String "XLargeURL" (if available) String "X2LargeURL" (if available) String "X3LargeURL" (if available) String "OriginalURL" (if available) struct "Album" integer "id" String "Key" ; [-"bThis method will return details about the image specified by ImageID. The Album must be owned"cby the Session holder, or else be Public (if password-protected, a Password must be provided),"_to return results.. Otherwise, an "invalid user" faultCode will result. Additionally, some"1fields are only returned to the Album owner.""Arguments:""String Password optional"!String SitePassword optional""Result:* struct "Image""" int "id""String "Caption""int "Position""int "Serial""int "Size""int "Width""int "Height""String "LastUpdated""!String "FileName" owner only"String "MD5Sum" owner only""String "Watermark" owner only" Boolean "Hidden" owner only" String "Format" owner only"String "Keywords" "String "Date" owner only"String "AlbumURL""String "TinyURL""String "ThumbURL""String "SmallURL""String "MediumURL""%String "LargeURL" (if available)"&String "XLargeURL" (if available)"'String "X2LargeURL" (if available)"'String "X3LargeURL" (if available)"(String "OriginalURL" (if available)"struct "Album""integer "id""String "Key"; o; ; i{;F;i;[;[;@;o;;@;[[" options"nil;@?;;);T; i;!T;";#;[;$: info;&"def info( options =nil ) params = default_params.merge( :method => "smugmug.images.getInfo", :ImageID => self.image_id, :ImageKey => self.key ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params rsp = Hash.from_xml( xml )["rsp"] raise rsp["message"] if rsp["stat"] == 'fail' image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) OpenStruct.new( image ) end;'[[@_i;("def info( options =nil ) params = default_params.merge( :method => "smugmug.images.getInfo", :ImageID => self.image_id, :ImageKey => self.key ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params rsp = Hash.from_xml( xml )["rsp"] raise rsp["message"] if rsp["stat"] == 'fail' image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) OpenStruct.new( image ) endo;;IC; "This method will return all the URLs for the various sizes of the image specified by ImageID. The Album must be owned by the Session holder, or else be Public (if password-protected, a Password must be provided), to return results. Otherwise, an "invalid user" faultCode will result. Additionally, obvious restrictions on Originals and Larges apply if so set by the owner. They will return as empty strings for those URLs if they're unavailable. Arguments:* int TemplateID optional, specifies which Style to build the AlbumURL with. Default: 3 Possible values: Elegant: 3 Traditional: 4 All Thumbs: 7 Slideshow: 8 Journal: 9 String Password optional String SitePassword optional Result:* struct String "AlbumURL" String "TinyURL" String "ThumbURL" String "SmallURL" String "MediumURL" String "LargeURL" (if available) String "XLargeURL" (if available) String "X2LargeURL" (if available) String "X3LargeURL" (if available) String "OriginalURL" (if available) ; [%"YThis method will return all the URLs for the various sizes of the image specified by"RImageID. The Album must be owned by the Session holder, or else be Public (if"`password-protected, a Password must be provided), to return results. Otherwise, an "invalid"\user" faultCode will result. Additionally, obvious restrictions on Originals and Larges"^apply if so set by the owner. They will return as empty strings for those URLs if they're"unavailable.""Arguments:*""int TemplateID"Koptional, specifies which Style to build the AlbumURL with. Default: 3" Possible values:" Elegant: 3" Traditional: 4" All Thumbs: 7" Slideshow: 8" Journal: 9"String Password optional"!String SitePassword optional""Result:* struct""String "AlbumURL""String "TinyURL""String "ThumbURL""String "SmallURL""String "MediumURL""%String "LargeURL" (if available)"&String "XLargeURL" (if available)"'String "X2LargeURL" (if available)"'String "X3LargeURL" (if available)"(String "OriginalURL" (if available); o; ; i;F;i;[;[;@;o;;@;[[" options"nil;@?;;);T; i;!T;";#;[;$: urls;&"def urls( options =nil ) params = default_params.merge( :method => "smugmug.images.getURLs", :ImageID => self.image_id, :ImageKey => self.key ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params rsp = Hash.from_xml( xml )["rsp"] raise rsp["message"] if rsp["stat"] == 'fail' image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) OpenStruct.new( image ) end;'[[@_i;("def urls( options =nil ) params = default_params.merge( :method => "smugmug.images.getURLs", :ImageID => self.image_id, :ImageKey => self.key ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params rsp = Hash.from_xml( xml )["rsp"] raise rsp["message"] if rsp["stat"] == 'fail' image = Hash.from_xml( xml )["rsp"]["image"] image.merge!( :image_id => image["id"] ) OpenStruct.new( image ) endo;;IC; " ; "; 0;[;[;@;o;;@;[;@?;;);T; i;!F;";#;[;$: album;&"Zdef album Smile::Album.find( :AlbumID => album_id, :AlbumKey => album_key ) end;'[[@_i;("Vdef album Smile::Album.find( :AlbumID => album_id, :AlbumKey => album_key ) end;,@?;o;-;@g;D@o;$;I;!T;=IC;{;)IC;{;@T;IC;{;@T;@T;[;AIC;[;,@?;$: Photo;Co;- :@orignamespace@&;o;-;@&;D@o;$;I;D@};$;B:@origname"Smile::Base;'[[@_i ;FIC;[;,@?o;;IC; " ; "; 0;[;[;@2;o;;@;{;IC;[ o;;IC; "4Login to SmugMug using a specific user account. ; [ "4Login to SmugMug using a specific user account.""L@param [String] email The username ( Nickname ) for the SmugMug account"B@param [String] password The password for the SmugMug account""L@return [Smile::SmugMug.new] An Smug object that has been authenticated; o; ; i;F;i;[;[o;5 ;6"6The username ( Nickname ) for the SmugMug account;7[" String;@:;$" email;8" paramo;5 ;6")The password for the SmugMug account;7[" String;@:;$" password;8" paramo;5 ;6"/An Smug object that has been authenticated;7["Smile::SmugMug.new;@:;$0;8" return;@:;o;;@;[[" email0[" pass0;@2;;);T; i;!T;";#;[;$: auth;&"|def auth( email, pass ) params = default_params.merge( :method => 'smugmug.login.withPassword', :EmailAddress => email, :Password => pass ) xml = RestClient.post( BASE, params ) result = Hash.from_xml( xml )["rsp"]["login"] self.session_id = result["session"]["id"] result rescue NoMethodError => e nil end;'[["lib/smile/smug.rbi;("Ldef auth( email, pass ) params = default_params.merge( :method => 'smugmug.login.withPassword', :EmailAddress => email, :Password => pass ) xml = RestClient.post( BASE, params ) result = Hash.from_xml( xml )["rsp"]["login"] self.session_id = result["session"]["id"] result rescue NoMethodError => e nil endo;;IC; "{Login to SmugMug using an anonymously account This will allow you to execute many functions, but no user specific functions ; [ "2Login to SmugMug using an anonymously account"RThis will allow you to execute many functions, but no user specific functions""L@return [Smile::SmugMug.new] An Smug object that has been authenticated; o; ; i%;F;i(;[;[o;5 ;6"/An Smug object that has been authenticated;7["Smile::SmugMug.new;@c;$0;8" return;@c;o;;@;[;@2;;);T; i);!T;";#;[;$:auth_anonymously;&">def auth_anonymously params = default_params.merge( :method => 'smugmug.login.anonymously' ) xml = RestClient.post( BASE, params ) result = Hash.from_xml( xml )["rsp"]["login"] self.session_id = result["session"]["id"] result rescue NoMethodError => e nil end;'[[@ai);("def auth_anonymously params = default_params.merge( :method => 'smugmug.login.anonymously' ) xml = RestClient.post( BASE, params ) result = Hash.from_xml( xml )["rsp"]["login"] self.session_id = result["session"]["id"] result rescue NoMethodError => e nil endo;;IC; "Close the session ; ["Close the session; o; ; i6;F;i6;[;[;@y;o;;@;[;@2;;);T; i7;!T;";#;[;$: logout;&"def logout params = default_params.merge( :method => 'smugmug.logout' ) RestClient.post( BASE, params ) end;'[[@ai7;("{def logout params = default_params.merge( :method => 'smugmug.logout' ) RestClient.post( BASE, params ) endo;;IC; "bRetrieves a list of albums for a given user. If you are logged in it will return your albums. ; [["URetrieves a list of albums for a given user. If you are logged in it will return"your albums.""M@param [optional,Hash] options The magic options hash all ruby devs love"V@option options [optional, String] :nick_name If no nick name is supplied then..."[@option options [optional, true or false ] :heavy ('true') This will control how much ",information is returned about the album"j@option options [optional, String] :site_password If you have not logged in then you can provide the "1password here to access private information."" Result" STANDARD RESPONSE""array Albums" Album" integer id" string Key" string Title" struct Category" string id" string Name" struct SubCategory" string id" string Name"" HEAVY RESPONSE" "array Albums" Album" integer id" string Key" string Title" struct Category" string id" string Name" struct SubCategory" string id" string Name" string Description" string Keywords" boolean Geography (owner)" integer Position" struct Hightlight (owner)" string id" integer ImageCount" string LastUpdated"/ boolean Header (owner, power & pro only)" boolean Clean (owner)" boolean EXIF (owner)" boolean Filenames (owner)" struct Template (owner)" string id" string SortMethod (owner)"$ boolean SortDirection (owner)" string Password (owner)"" string PasswordHint (owner)" boolean Public (owner)"& boolean WorldSearchable (owner)"% boolean SmugSearchable (owner)" boolean External (owner)"2 boolean Protected (owner, power & pro only)"- boolean Watermarking (owner, pro only)") struct Watermark (owner, pro only)" string id" boolean HideOwner (owner)"' boolean Larges (owner, pro only)"( boolean XLarges (owner, pro only)" boolean X2Larges (owner)" boolean X3Larges (owner)" boolean Originals (owner)" boolean CanRank (owner)"! boolean FriendEdit (owner)"! boolean FamilyEdit (owner)" boolean Comments (owner)" boolean Share (owner)" boolean Printable (owner)"" int ColorCorrection (owner)"9 boolean DefaultColor (owner, pro only) deprecated"* integer ProofDays (owner, pro only)", string Backprinting (owner, pro only)"4 float UnsharpAmount (owner, power & pro only)"4 float UnsharpRadius (owner, power & pro only)"7 float UnsharpThreshold (owner, power & pro only)"3 float UnsharpSigma (owner, power & pro only)" struct Community (owner)" string id; o; ; iA;F;i;[;[ o;5 ;6".The magic options hash all ruby devs love;7[" optional" Hash;@;$" options;8" paramo:YARD::Tags::OptionTag ;60;70: @pairo:YARD::Tags::DefaultTag :@defaults0;6"(If no nick name is supplied then...;7[" optional" String;$":nick_name;8" option;@;$" options;8" optiono;V ;60;70;Wo;X ;Y[" 'true';6"HThis will control how much information is returned about the album;7[" optional"true or false;$" :heavy;8" option;@;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"If you have not logged in then you can provide the password here to access private information. Result STANDARD RESPONSE array Albums Album integer id string Key string Title struct Category string id string Name struct SubCategory string id string Name HEAVY RESPONSE array Albums Album integer id string Key string Title struct Category string id string Name struct SubCategory string id string Name string Description string Keywords boolean Geography (owner) integer Position struct Hightlight (owner) string id integer ImageCount string LastUpdated boolean Header (owner, power & pro only) boolean Clean (owner) boolean EXIF (owner) boolean Filenames (owner) struct Template (owner) string id string SortMethod (owner) boolean SortDirection (owner) string Password (owner) string PasswordHint (owner) boolean Public (owner) boolean WorldSearchable (owner) boolean SmugSearchable (owner) boolean External (owner) boolean Protected (owner, power & pro only) boolean Watermarking (owner, pro only) struct Watermark (owner, pro only) string id boolean HideOwner (owner) boolean Larges (owner, pro only) boolean XLarges (owner, pro only) boolean X2Larges (owner) boolean X3Larges (owner) boolean Originals (owner) boolean CanRank (owner) boolean FriendEdit (owner) boolean FamilyEdit (owner) boolean Comments (owner) boolean Share (owner) boolean Printable (owner) int ColorCorrection (owner) boolean DefaultColor (owner, pro only) deprecated integer ProofDays (owner, pro only) string Backprinting (owner, pro only) float UnsharpAmount (owner, power & pro only) float UnsharpRadius (owner, power & pro only) float UnsharpThreshold (owner, power & pro only) float UnsharpSigma (owner, power & pro only) struct Community (owner) string id;7[" optional" String;$":site_password;8" option;@;$" options;8" option;@;o;;@;[[" options"nil;@2;;);T; i;!T;";#;[;$: albums;&"<def albums( options=nil ) params = default_params.merge( :method => 'smugmug.albums.get', :heavy => 1 ) params = params.merge( options ) if( options ) xml = RestClient.post BASE, params Smile::Album.from_xml( xml, session_id ) rescue nil end;'[[@ai;("def albums( options=nil ) params = default_params.merge( :method => 'smugmug.albums.get', :heavy => 1 ) params = params.merge( options ) if( options ) xml = RestClient.post BASE, params Smile::Album.from_xml( xml, session_id ) rescue nil end;,@2;@o;!F;=IC;{;)IC;{;@T;IC;{;@T;@T;[;AIC;[;,@2;$: Smug;Co;- ;Q@o;o;-;@o;D@o;$;I;D@};$;B;R"Smile::Base;'[[@ai;FIC;[;,@2o;;IC; "{Login to SmugMug using an anonymously account This will allow you to execute many functions, but no user specific functions ; [ "2Login to SmugMug using an anonymously account"RThis will allow you to execute many functions, but no user specific functions""L@return [Smile::SmugMug.new] An Smug object that has been authenticated; o; ; i;F;i;[;[o;5 ;6"/An Smug object that has been authenticated;7["Smile::SmugMug.new;@;$0;8" return;@;o;;@;[;@o;;);T; i;!T;";#;[;$;T;&"]def auth_anonymously smug = Smile::Smug.new smug.auth_anonymously smug end;'[["lib/smile.rbi;("Udef auth_anonymously smug = Smile::Smug.new smug.auth_anonymously smug endo;;IC; "4Login to SmugMug using a specific user account. ; [ "4Login to SmugMug using a specific user account.""R@param [String] email The username ( e-mail address ) for the SmugMug account"B@param [String] password The password for the SmugMug account""L@return [Smile::SmugMug.new] An Smug object that has been authenticated; o; ; i;F;i#;[;[o;5 ;6" 'rss' ) url = "http://api.smugmug.com/hack/feed.mg?" url_params =[] options.each_pair do |k,value| key, value = Smile::ParamConverter.convert( k, value ) url_params << "#{key.to_s}=#{ CGI.escape( value ) }" end RestClient.get( url + url_params.join( "&" ) ) end;'[[@4i+;("Xdef base_feed( options={} ) options.merge!( :format => 'rss' ) url = "http://api.smugmug.com/hack/feed.mg?" url_params =[] options.each_pair do |k,value| key, value = Smile::ParamConverter.convert( k, value ) url_params << "#{key.to_s}=#{ CGI.escape( value ) }" end RestClient.get( url + url_params.join( "&" ) ) endo;;IC; "fSearch SmugMug for pics. This search is slower than the others, but returns Smile::Photo objects ; ["fSearch SmugMug for pics. This search is slower than the others, but returns Smile::Photo objects""F@param [String] data This is the search term that you want to use"J@param [optional, Hash] options Hash of options for the search method"L@option options [optional, String] :keyword override the keyword search"F@option options [optional, String] :popular Use term all or today"Y@option options [optional, String] :popular_category Use term category ( e.g. cars )":@option options [optional, String] :geo_all Geo Stuff"E@option options [optional, String] :geo_community More Geo Stuff">@option options [optional, String] :geo_search Geo Search"E@option options [optional, String] :open_search_keyword Key word"G@option options [optional, String] :user_keyword Use term nickname"J@option options [optional, String] :gallery Use term albumID_albumKey"C@option options [optional, String] :nickname Use term nickname"J@option options [optional, String] :nickname_recent Use term nickname"K@option options [optional, String] :nickname_popular Use term nickname"H@option options [optional, String] :user_comments Use term nickname"C@option options [optional, String] :geo_user Use term nickname"D@option options [optional, String] :geo_album Use term nickname""b@return [Array] Smile::Photo objects will be returned. This take longer due to"+pulling more details from every photo.; o; ; i9;F;iN;[;[o;5 ;6"1This is the search term that you want to use;7[" String;@m;$" data;8" paramo;5 ;6"*Hash of options for the search method;7[" optional" Hash;@m;$" options;8" paramo;V ;60;70;Wo;X ;Y0;6" override the keyword search;7[" optional" String;$" :keyword;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term all or today;7[" optional" String;$" :popular;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"$Use term category ( e.g. cars );7[" optional" String;$":popular_category;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Geo Stuff;7[" optional" String;$" :geo_all;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"More Geo Stuff;7[" optional" String;$":geo_community;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Geo Search;7[" optional" String;$":geo_search;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6" Key word;7[" optional" String;$":open_search_keyword;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":user_keyword;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term albumID_albumKey;7[" optional" String;$" :gallery;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname_recent;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname_popular;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":user_comments;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":geo_user;8" option;@m;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":geo_album;8" option;@m;$" options;8" optiono;5 ;6"kSmile::Photo objects will be returned. This take longer due to pulling more details from every photo.;7["Array;@m;$0;8" return;@m;o;;@;[[" data0[" options"{};@o;;);T; iO;!T;";#;[;$: search;&"def search( data, options={} ) rss = search_rss( data, options ) rss.items.map do |item| image_id, image_key = item.link.split('/').last.split('#').last.split('_') Smile::Photo.find( :image_id => image_id, :image_key => image_key ) end end;'[[@4iO;("def search( data, options={} ) rss = search_rss( data, options ) rss.items.map do |item| image_id, image_key = item.link.split('/').last.split('#').last.split('_') Smile::Photo.find( :image_id => image_id, :image_key => image_key ) end endo;;IC; "fSearch SmugMug for pics. This search is slower than the others, but returns Smile::Photo objects ; ["fSearch SmugMug for pics. This search is slower than the others, but returns Smile::Photo objects""F@param [String] data This is the search term that you want to use"J@param [optional, Hash] options Hash of options for the search method"L@option options [optional, String] :keyword override the keyword search"F@option options [optional, String] :popular Use term all or today"Y@option options [optional, String] :popular_category Use term category ( e.g. cars )":@option options [optional, String] :geo_all Geo Stuff"E@option options [optional, String] :geo_community More Geo Stuff">@option options [optional, String] :geo_search Geo Search"E@option options [optional, String] :open_search_keyword Key word"G@option options [optional, String] :user_keyword Use term nickname"J@option options [optional, String] :gallery Use term albumID_albumKey"C@option options [optional, String] :nickname Use term nickname"J@option options [optional, String] :nickname_recent Use term nickname"K@option options [optional, String] :nickname_popular Use term nickname"H@option options [optional, String] :user_comments Use term nickname"C@option options [optional, String] :geo_user Use term nickname"D@option options [optional, String] :geo_album Use term nickname""M@return [Array] RSS feed from the RSS::Parser.parse method; o; ; iX;F;il;[;[o;5 ;6"1This is the search term that you want to use;7[" String;@=;$" data;8" paramo;5 ;6"*Hash of options for the search method;7[" optional" Hash;@=;$" options;8" paramo;V ;60;70;Wo;X ;Y0;6" override the keyword search;7[" optional" String;$" :keyword;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term all or today;7[" optional" String;$" :popular;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"$Use term category ( e.g. cars );7[" optional" String;$":popular_category;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Geo Stuff;7[" optional" String;$" :geo_all;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"More Geo Stuff;7[" optional" String;$":geo_community;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Geo Search;7[" optional" String;$":geo_search;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6" Key word;7[" optional" String;$":open_search_keyword;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":user_keyword;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term albumID_albumKey;7[" optional" String;$" :gallery;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname_recent;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname_popular;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":user_comments;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":geo_user;8" option;@=;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":geo_album;8" option;@=;$" options;8" optiono;5 ;6"/RSS feed from the RSS::Parser.parse method;7["Array;@=;$0;8" return;@=;o;;@;[[" data0[" options"{};@o;;);T; im;!T;";#;[;$:search_rss;&"wdef search_rss( data, options={} ) raw = search_raw( data, options ) RSS::Parser.parse( raw, false ) end;'[[@4im;("qdef search_rss( data, options={} ) raw = search_raw( data, options ) RSS::Parser.parse( raw, false ) endo;;IC; ")Raw feed from the SmugMug data feeds ; [")Raw feed from the SmugMug data feeds""F@param [String] data This is the search term that you want to use"J@param [optional, Hash] options Hash of options for the search method"L@option options [optional, String] :keyword override the keyword search"F@option options [optional, String] :popular Use term all or today"Y@option options [optional, String] :popular_category Use term category ( e.g. cars )":@option options [optional, String] :geo_all Geo Stuff"E@option options [optional, String] :geo_community More Geo Stuff">@option options [optional, String] :geo_search Geo Search"E@option options [optional, String] :open_search_keyword Key word"G@option options [optional, String] :user_keyword Use term nickname"J@option options [optional, String] :gallery Use term albumID_albumKey"C@option options [optional, String] :nickname Use term nickname"J@option options [optional, String] :nickname_recent Use term nickname"K@option options [optional, String] :nickname_popular Use term nickname"H@option options [optional, String] :user_comments Use term nickname"C@option options [optional, String] :geo_user Use term nickname"D@option options [optional, String] :geo_album Use term nickname""L@return [RestClientResponse] The response from a RestClient.get request; o; ; ir;F;i;[;[o;5 ;6"1This is the search term that you want to use;7[" String;@ ;$" data;8" paramo;5 ;6"*Hash of options for the search method;7[" optional" Hash;@ ;$" options;8" paramo;V ;60;70;Wo;X ;Y0;6" override the keyword search;7[" optional" String;$" :keyword;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term all or today;7[" optional" String;$" :popular;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"$Use term category ( e.g. cars );7[" optional" String;$":popular_category;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Geo Stuff;7[" optional" String;$" :geo_all;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"More Geo Stuff;7[" optional" String;$":geo_community;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Geo Search;7[" optional" String;$":geo_search;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6" Key word;7[" optional" String;$":open_search_keyword;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":user_keyword;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term albumID_albumKey;7[" optional" String;$" :gallery;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname_recent;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":nickname_popular;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":user_comments;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":geo_user;8" option;@ ;$" options;8" optiono;V ;60;70;Wo;X ;Y0;6"Use term nickname;7[" optional" String;$":geo_album;8" option;@ ;$" options;8" optiono;5 ;6"/The response from a RestClient.get request;7["RestClientResponse;@ ;$0;8" return;@ ;o;;@;[[" data0[" options"{};@o;;);T; i;!T;";#;[;$:search_raw;&"~def search_raw( data, options={} ) options.merge!( :type => 'keyword', :data => data ) base_feed( options ) end;'[[@4i;("xdef search_raw( data, options={} ) options.merge!( :type => 'keyword', :data => data ) base_feed( options ) end@;,@o;@g;!T;=IC;{;)IC;{;@T;IC;{;@T;@T;[;AIC;[;,@o;$;I;'[[@i [@ai [@4i;FIC;[;,@o;,@g;0;!F;=IC;{;)IC;{;@T;IC;{;@T;@T;[;AIC;[;,@g;$: root;'[;FIC;[;,@g;D@o;$;I;!T;=IC;{;)IC;{;@T;IC;{;@T;@T;[;AIC;[;,@;$: Album;Co;- ;Q@f;o;-;@f;D@o;$;I;D@};$;B;R"Smile::Base;'[[@9i ;FIC;[;,@;;;T; i#;!T;";#;[;$;K;&"def find( options={} ) params = default_params.merge( :method => 'smugmug.albums.getInfo' ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params album = Hash.from_xml( xml )["rsp"]["album"] album.merge!( :album_id => album["id"] ) a = Smile::Album.new( album ) a.session_id = session_id a end;'[[@9i#;("jdef find( options={} ) params = default_params.merge( :method => 'smugmug.albums.getInfo' ) params.merge!( options ) if( options ) xml = RestClient.post Smile::Base::BASE, params album = Hash.from_xml( xml )["rsp"]["album"] album.merge!( :album_id => album["id"] ) a = Smile::Album.new( album ) a.session_id = session_id a end:Smile#auth@6:Smile::Base::BASE@:Smile::Photo#album@:Smile::Base#session_id@:!Smile::Smug#auth_anonymously@c:Smile::Photo#details@x:*Smile::ParamConverter#clean_hash_keys@(:Smile::Base.session_id@:Smile#search_raw@ :Smile::Base#default_params@:Smile::Base#session_id=@:Smile::Album#photos@;:Smile#base_feed@^:Smile::Photo#info@:Smile::Base.session_id=@:Smile::Base::BASE_SECURE@:Smile::Base@}:Smile::Smug@2;I@o:Smile#search@m:Smile::Smug#logout@y:Smile::Photo@?:Smile::Base.default_params@:Smile::Photo.from_xml@N:Smile::ParamConverter@:Smile::Album#stats@R:Smile::Photo#urls@:Smile::Base::API@;a@g:Smile::Album.from_xml@*:Smile#auth_anonymously@:Smile::Smug#auth@::Smile::Photo.find@a:"Smile::ParamConverter#convert@:Smile::Album@:Smile#search_rss@=:Smile::Smug#albums@:Smile::Base.set_session@;@T{"OpenStruct;