mogo24r 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +4 -0
- data/Manifest.txt +17 -0
- data/README.rdoc +51 -0
- data/Rakefile +28 -0
- data/example/cui_client.rb +94 -0
- data/example/simple_timeline_reader.rb +16 -0
- data/example/simple_update.rb +12 -0
- data/lib/mogo24r.rb +206 -0
- data/lib/mogo24r/timeline_parser.rb +82 -0
- data/lib/mogo24r/utils.rb +115 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/mogo24r_spec.rb +153 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- data/tasks/rspec.rake +21 -0
- metadata +92 -0
    
        data/History.txt
    ADDED
    
    
    
        data/Manifest.txt
    ADDED
    
    | @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            History.txt
         | 
| 2 | 
            +
            Manifest.txt
         | 
| 3 | 
            +
            README.rdoc
         | 
| 4 | 
            +
            Rakefile
         | 
| 5 | 
            +
            example/cui_client.rb
         | 
| 6 | 
            +
            example/simple_timeline_reader.rb
         | 
| 7 | 
            +
            example/simple_update.rb
         | 
| 8 | 
            +
            lib/mogo24r.rb
         | 
| 9 | 
            +
            lib/mogo24r/timeline_parser.rb
         | 
| 10 | 
            +
            lib/mogo24r/utils.rb
         | 
| 11 | 
            +
            script/console
         | 
| 12 | 
            +
            script/destroy
         | 
| 13 | 
            +
            script/generate
         | 
| 14 | 
            +
            spec/mogo24r_spec.rb
         | 
| 15 | 
            +
            spec/spec.opts
         | 
| 16 | 
            +
            spec/spec_helper.rb
         | 
| 17 | 
            +
            tasks/rspec.rake
         | 
    
        data/README.rdoc
    ADDED
    
    | @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            = mogo24r
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            http://mogo24r.rubyforge.org/
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            == DESCRIPTION:
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            mogo24r is mogo2API-library for ruby.
         | 
| 8 | 
            +
            mogo2 is Japanese micro-blog.
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            == SYNOPSIS:
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              m24r = Mogo24r.new('your@email.com', 'your-api-key')
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              public_timeline = m24r.get_public_timeline
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              user_name = public_timeline.first[:user][:screen_name]
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              message = public_timeline.first[:text]
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              puts "user: #{user_name}"
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              puts "message: #{message}"
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            == INSTALL:
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            sudo gem install -r mogo24r
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            == LICENSE:
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            (The MIT License)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            Copyright (c) 2009 saronpasu
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 35 | 
            +
            a copy of this software and associated documentation files (the
         | 
| 36 | 
            +
            'Software'), to deal in the Software without restriction, including
         | 
| 37 | 
            +
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 38 | 
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 39 | 
            +
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 40 | 
            +
            the following conditions:
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            The above copyright notice and this permission notice shall be
         | 
| 43 | 
            +
            included in all copies or substantial portions of the Software.
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
         | 
| 46 | 
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 47 | 
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
         | 
| 48 | 
            +
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
         | 
| 49 | 
            +
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
         | 
| 50 | 
            +
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
         | 
| 51 | 
            +
            SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/Rakefile
    ADDED
    
    | @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            %w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
         | 
| 2 | 
            +
            require File.dirname(__FILE__) + '/lib/mogo24r'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # Generate all the Rake tasks
         | 
| 5 | 
            +
            # Run 'rake -T' to see list of generated tasks (from gem root directory)
         | 
| 6 | 
            +
            $hoe = Hoe.new('mogo24r', Mogo24r::VERSION) do |p|
         | 
| 7 | 
            +
              p.developer('saronpasu', 'saronpasu at gmail dot com')
         | 
| 8 | 
            +
              p.changes              = p.paragraphs_of("History.txt", 0..1).join("\n\n")
         | 
| 9 | 
            +
              p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
         | 
| 10 | 
            +
              p.rubyforge_name       = p.name # TODO this is default value
         | 
| 11 | 
            +
              # p.extra_deps         = [
         | 
| 12 | 
            +
              #   ['activesupport','>= 2.0.2'],
         | 
| 13 | 
            +
              # ]
         | 
| 14 | 
            +
              p.extra_dev_deps = [
         | 
| 15 | 
            +
                ['newgem', ">= #{::Newgem::VERSION}"]
         | 
| 16 | 
            +
              ]
         | 
| 17 | 
            +
              
         | 
| 18 | 
            +
              p.clean_globs |= %w[**/.DS_Store tmp *.log]
         | 
| 19 | 
            +
              path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
         | 
| 20 | 
            +
              p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
         | 
| 21 | 
            +
              p.rsync_args = '-av --delete --ignore-errors'
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            require 'newgem/tasks' # load /tasks/*.rake
         | 
| 25 | 
            +
            Dir['tasks/**/*.rake'].each { |t| load t }
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            # TODO - want other tests/tasks run by default? Add them to the list
         | 
| 28 | 
            +
            # task :default => [:spec, :features]
         | 
| @@ -0,0 +1,94 @@ | |
| 1 | 
            +
            #!ruby -Ku
         | 
| 2 | 
            +
            # -*- encoding: UTF-8 -*-
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            # Sample Application.
         | 
| 5 | 
            +
            # 'mogo2 simple client'
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            require 'mogo24r'
         | 
| 8 | 
            +
            require 'readline'
         | 
| 9 | 
            +
            require 'optparse'
         | 
| 10 | 
            +
            require 'kconv' unless RUBY_VERSION.match(/1\.9/)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            count = 20
         | 
| 13 | 
            +
            windows_pattern = /mswin(?!ce)|mingw|cygwin|bccwin/
         | 
| 14 | 
            +
            platform = RUBY_PLATFORM.match(windows_pattern) ? :windows : :other
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            opts = OptionParser.new do |opt|
         | 
| 17 | 
            +
              opt.program_name= 'simple mogo2 client'
         | 
| 18 | 
            +
              opt.version= '0.0.1'
         | 
| 19 | 
            +
              opt.banner= <<EOS
         | 
| 20 | 
            +
            simple mogo2 client application.
         | 
| 21 | 
            +
            input your email and API-Key.
         | 
| 22 | 
            +
            EOS
         | 
| 23 | 
            +
              opt.on(
         | 
| 24 | 
            +
                '-c', '--count [COUNT]', Integer,
         | 
| 25 | 
            +
                'friends_timeline count[default=20]'
         | 
| 26 | 
            +
              ){|v|count = v}
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            message = <<EOS
         | 
| 30 | 
            +
            This application is simple mogo2 client.
         | 
| 31 | 
            +
            please input your 'email' and 'API-Key'.
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              $ ruby cui_client.rb your@email.com your-api-key
         | 
| 34 | 
            +
             
         | 
| 35 | 
            +
            EOS
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            args = opts.parse(ARGV)
         | 
| 38 | 
            +
            if 1 > args.size then
         | 
| 39 | 
            +
              puts message
         | 
| 40 | 
            +
            end
         | 
| 41 | 
            +
            email = args[0]
         | 
| 42 | 
            +
            api_key = args[1]
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            m24r = Mogo24r.new(email, api_key)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            help_message = <<EOS
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              'exit' or 'quit' to exit this application.
         | 
| 49 | 
            +
              'help' or invalid-command to this message.
         | 
| 50 | 
            +
              no-input Enter to get for mogo2 timeline.
         | 
| 51 | 
            +
              any word input Enter to message update.
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            EOS
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            while buf = Readline.readline('> ', true)
         | 
| 56 | 
            +
              case buf
         | 
| 57 | 
            +
                when /^(exit|quit)$/ then
         | 
| 58 | 
            +
                  break
         | 
| 59 | 
            +
                when '' then
         | 
| 60 | 
            +
                  puts 'get mogo2 timeline... '
         | 
| 61 | 
            +
                  statuses = m24r.get_friends_timeline({:count=>count})
         | 
| 62 | 
            +
                  statuses.each do|status|
         | 
| 63 | 
            +
                    case
         | 
| 64 | 
            +
                      when platform.eql?(:windows) && !RUBY_VERSION.match(/^1\.9/)
         | 
| 65 | 
            +
                        screen_name = status[:user][:screen_name].tosjis
         | 
| 66 | 
            +
                        text = status[:text].tosjis
         | 
| 67 | 
            +
                      when platform.eql?(:windows) && RUBY_VERSION.match(/1\.9/)
         | 
| 68 | 
            +
                        screen_name = status[:user][:screen_name].encode('Shift_JIS')
         | 
| 69 | 
            +
                        text = status[:text].encode('Shift_JIS')
         | 
| 70 | 
            +
                      else
         | 
| 71 | 
            +
                        screen_name = status[:user][:screen_name]
         | 
| 72 | 
            +
                        text = status[:text]
         | 
| 73 | 
            +
                    end
         | 
| 74 | 
            +
                    p "user: #{screen_name}"
         | 
| 75 | 
            +
                    p "mogo: #{text}"
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                when /^(help)$/ then
         | 
| 78 | 
            +
                  print help_message
         | 
| 79 | 
            +
                when /^(\w+)/ then
         | 
| 80 | 
            +
                  puts 'update ... '
         | 
| 81 | 
            +
                  status = buf
         | 
| 82 | 
            +
                  case
         | 
| 83 | 
            +
                    when platform.eql?(:windows), !RUBY_VERSION.match(/^1\.9/)
         | 
| 84 | 
            +
                      status = buf.toutf8
         | 
| 85 | 
            +
                    when platform.eql?(:windows), RUBY_VERSION.match(/^1\.9/)
         | 
| 86 | 
            +
                      status = buf.encode('UTF-8')
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
                  m24r.update(status)
         | 
| 89 | 
            +
                  puts 'update complete'
         | 
| 90 | 
            +
                else
         | 
| 91 | 
            +
                  print help_message
         | 
| 92 | 
            +
              end
         | 
| 93 | 
            +
            end
         | 
| 94 | 
            +
             | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            #!ruby -Ku
         | 
| 2 | 
            +
            # -*- encoding: UTF-8 -*-
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require 'mogo24r'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            email = 'your@email.com'
         | 
| 7 | 
            +
            api_key = 'your_api_key'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            m24r = Mogo24r.new(email, api_key)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            timeline = m24r.get_public_timeline
         | 
| 12 | 
            +
            timeline.each do |status|
         | 
| 13 | 
            +
              p 'Name: '+status[:user][:screen_name]
         | 
| 14 | 
            +
              p 'Mogo: '+status[:text]
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
    
        data/lib/mogo24r.rb
    ADDED
    
    | @@ -0,0 +1,206 @@ | |
| 1 | 
            +
            $:.unshift(File.dirname(__FILE__)) unless
         | 
| 2 | 
            +
              $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
         | 
| 3 | 
            +
            require 'mogo24r/utils'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            =begin rdoc
         | 
| 6 | 
            +
            mogo24r is mogo2API-library for ruby.
         | 
| 7 | 
            +
            mogo2 is Japanese micro-blog.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            see example/*.rb
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            =end
         | 
| 12 | 
            +
            class Mogo24r
         | 
| 13 | 
            +
              VERSION = '0.0.1'#:nodoc:
         | 
| 14 | 
            +
              # HTTP_HEADER 'User-Agent'.
         | 
| 15 | 
            +
              attr_accessor :user_agent
         | 
| 16 | 
            +
              # User's Address.
         | 
| 17 | 
            +
              attr_accessor :email
         | 
| 18 | 
            +
              # User's API-Key.
         | 
| 19 | 
            +
              attr_accessor :api_key
         | 
| 20 | 
            +
              # mogo2-API's BaseAddress.
         | 
| 21 | 
            +
              BaseAddress = 'http://api.mogo2.jp/'
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              include Utils
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            =begin rdoc
         | 
| 26 | 
            +
            Description::
         | 
| 27 | 
            +
              create mogo24r-instance.
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            Params::
         | 
| 30 | 
            +
              email (your_mogo2@email.address)
         | 
| 31 | 
            +
              api_key (your_mogo2_api_key)
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            Return::
         | 
| 34 | 
            +
              Mogo24r-Instance
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            =end
         | 
| 37 | 
            +
              def initialize(email, api_key)
         | 
| 38 | 
            +
                @email = email
         | 
| 39 | 
            +
                @api_key = api_key
         | 
| 40 | 
            +
                @user_agent = 'mogo24r (http://mogo24r.rubyforge.org)'
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              autoload :TimelineParser, 'mogo24r/timeline_parser.rb'
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            =begin rdoc
         | 
| 46 | 
            +
            Description::
         | 
| 47 | 
            +
              access for public-timeline.
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            Params::
         | 
| 50 | 
            +
              options = {:since_id => 12345}
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            Return::
         | 
| 53 | 
            +
              [{:id => 12345, ...}, ...]
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            RelatedMethods::
         | 
| 56 | 
            +
              Mogo24r::Utils#create_uri,
         | 
| 57 | 
            +
              Mogo24r::Utils#create_request,
         | 
| 58 | 
            +
              Mogo24r::Utils#http_access,
         | 
| 59 | 
            +
              Mogo24r::Utils#parse_options,
         | 
| 60 | 
            +
              Mogo24r::TimelineParser#parse_timeline
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            =end
         | 
| 63 | 
            +
              def get_public_timeline(options = nil)
         | 
| 64 | 
            +
                extend TimelineParser
         | 
| 65 | 
            +
                address = BaseAddress + 'statuses/public_timeline.xml'
         | 
| 66 | 
            +
                address += parse_options(options) if options
         | 
| 67 | 
            +
                uri = create_uri(address)
         | 
| 68 | 
            +
                request = create_request(:get, uri)
         | 
| 69 | 
            +
                response = http_access(uri, request)
         | 
| 70 | 
            +
                if response then
         | 
| 71 | 
            +
                  return parse_timeline(response)
         | 
| 72 | 
            +
                else
         | 
| 73 | 
            +
                  return false
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            =begin rdoc
         | 
| 78 | 
            +
            Description::
         | 
| 79 | 
            +
              get you and your friends timeline.
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            Params::
         | 
| 82 | 
            +
              options = {
         | 
| 83 | 
            +
                :count => get statuses(Integer max=20),
         | 
| 84 | 
            +
                :since => get timeline before date(DateTime)
         | 
| 85 | 
            +
              }
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            Return::
         | 
| 88 | 
            +
              [{:id => 12345, ...}, ...]
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            RelatedMethods::
         | 
| 91 | 
            +
              Mogo24r::Utils#create_uri,
         | 
| 92 | 
            +
              Mogo24r::Utils#create_request,
         | 
| 93 | 
            +
              Mogo24r::Utils#http_access,
         | 
| 94 | 
            +
              Mogo24r::Utils#parse_options,
         | 
| 95 | 
            +
              Mogo24r::TimelineParser#parse_timeline
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            =end
         | 
| 98 | 
            +
              def get_friends_timeline(options = nil)
         | 
| 99 | 
            +
                extend TimelineParser
         | 
| 100 | 
            +
                address = BaseAddress + 'statuses/friends_timeline.xml'
         | 
| 101 | 
            +
                address += parse_options(options) if options
         | 
| 102 | 
            +
                uri = create_uri(address)
         | 
| 103 | 
            +
                request = create_request(:get, uri)
         | 
| 104 | 
            +
                response = http_access(uri, request)
         | 
| 105 | 
            +
                if response then
         | 
| 106 | 
            +
                  return parse_timeline(response)
         | 
| 107 | 
            +
                else
         | 
| 108 | 
            +
                  return false
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            =begin rdoc
         | 
| 113 | 
            +
            Description::
         | 
| 114 | 
            +
              get thread timeline.
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            Params::
         | 
| 117 | 
            +
              thread_id = target thred's id(Integer)
         | 
| 118 | 
            +
              options = {:since => get timeline before date(DateTime)}
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            Return::
         | 
| 121 | 
            +
              [{:id => 12345, ...}, ...]
         | 
| 122 | 
            +
             | 
| 123 | 
            +
            RelatedMethods::
         | 
| 124 | 
            +
              Mogo24r::Utils#create_uri,
         | 
| 125 | 
            +
              Mogo24r::Utils#create_request,
         | 
| 126 | 
            +
              Mogo24r::Utils#http_access,
         | 
| 127 | 
            +
              Mogo24r::Utils#parse_options,
         | 
| 128 | 
            +
              Mogo24r::TimelineParser#parse_timeline
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            =end
         | 
| 131 | 
            +
              def get_thread_timeline(thread_id, options = nil)
         | 
| 132 | 
            +
                extend TimelineParser
         | 
| 133 | 
            +
                address = BaseAddress +
         | 
| 134 | 
            +
                  'statuses/thread_timeline/' +
         | 
| 135 | 
            +
                  thread_id + '.xml'
         | 
| 136 | 
            +
                address += parse_options(options) if options
         | 
| 137 | 
            +
                uri = crate_uri(address)
         | 
| 138 | 
            +
                request = create_request(:get, uri)
         | 
| 139 | 
            +
                response = http_access(uri, request)
         | 
| 140 | 
            +
                if response then
         | 
| 141 | 
            +
                  return parse_timeline(response)
         | 
| 142 | 
            +
                else
         | 
| 143 | 
            +
                  return false
         | 
| 144 | 
            +
                end
         | 
| 145 | 
            +
              end
         | 
| 146 | 
            +
             | 
| 147 | 
            +
            =begin rdoc
         | 
| 148 | 
            +
            Description::
         | 
| 149 | 
            +
              get user's timeline.
         | 
| 150 | 
            +
             | 
| 151 | 
            +
            Params::
         | 
| 152 | 
            +
              user_id = target user's id(Integer)
         | 
| 153 | 
            +
              options = {
         | 
| 154 | 
            +
                :count => get statuses(Integer max=20),
         | 
| 155 | 
            +
                :since => get timeline before date(DateTime)
         | 
| 156 | 
            +
              }
         | 
| 157 | 
            +
             | 
| 158 | 
            +
            Return::
         | 
| 159 | 
            +
              [{:id => 12345, ...}, ...}]
         | 
| 160 | 
            +
             | 
| 161 | 
            +
            RelatedMethods::
         | 
| 162 | 
            +
              Mogo24r::Utils#create_uri,
         | 
| 163 | 
            +
              Mogo24r::Utils#create_request,
         | 
| 164 | 
            +
              Mogo24r::Utils#http_access,
         | 
| 165 | 
            +
              Mogo24r::Utils#parse_options,
         | 
| 166 | 
            +
              Mogo24r::TimelineParser#parse_timeline
         | 
| 167 | 
            +
             | 
| 168 | 
            +
            =end
         | 
| 169 | 
            +
              def get_user_timeline(user_id = nil, options = nil)
         | 
| 170 | 
            +
                extend TimellineParser
         | 
| 171 | 
            +
                address = BaseAddress + 'statuses/user_timeline'
         | 
| 172 | 
            +
                address += user_id.nil? ? '.xml' : "#{user_id}.xml"
         | 
| 173 | 
            +
                address += parse_options(options) if options
         | 
| 174 | 
            +
                uri = create_uri(address)
         | 
| 175 | 
            +
                request = create_request(:get, uri)
         | 
| 176 | 
            +
                response = http_access(uri, request)
         | 
| 177 | 
            +
                if response then
         | 
| 178 | 
            +
                  return parse_timeline
         | 
| 179 | 
            +
                else
         | 
| 180 | 
            +
                  return false
         | 
| 181 | 
            +
                end
         | 
| 182 | 
            +
              end
         | 
| 183 | 
            +
             | 
| 184 | 
            +
            =begin rdoc
         | 
| 185 | 
            +
            Description::
         | 
| 186 | 
            +
              update status.
         | 
| 187 | 
            +
             | 
| 188 | 
            +
            Params::
         | 
| 189 | 
            +
              status(String Encoding: UTF-8)
         | 
| 190 | 
            +
             | 
| 191 | 
            +
            RelatedMethods::
         | 
| 192 | 
            +
              Mogo24r::Utils#create_uri,
         | 
| 193 | 
            +
              Mogo24r::Utils#create_request,
         | 
| 194 | 
            +
              Mogo24r::Utils#http_access
         | 
| 195 | 
            +
             | 
| 196 | 
            +
            =end
         | 
| 197 | 
            +
              def update_status(status)
         | 
| 198 | 
            +
                uri = create_uri(
         | 
| 199 | 
            +
                  BaseAddress +
         | 
| 200 | 
            +
                  'statuses/update.xml?status=' +
         | 
| 201 | 
            +
                  status
         | 
| 202 | 
            +
                )
         | 
| 203 | 
            +
                request = create_request(:post, uri)
         | 
| 204 | 
            +
                http_access(uri, request)
         | 
| 205 | 
            +
              end
         | 
| 206 | 
            +
            end
         | 
| @@ -0,0 +1,82 @@ | |
| 1 | 
            +
            # -*- encoding: UTF-8 -*-
         | 
| 2 | 
            +
            require 'rexml/document'
         | 
| 3 | 
            +
            require 'date'
         | 
| 4 | 
            +
            require 'uri'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class Mogo24r
         | 
| 7 | 
            +
              # TimelineParser for mogo2-API response.
         | 
| 8 | 
            +
              module TimelineParser
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            =begin rdoc
         | 
| 11 | 
            +
            Description::
         | 
| 12 | 
            +
              parser-method for user-element.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            Params::
         | 
| 15 | 
            +
              user (REXML::Element-Instance)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            Return::
         | 
| 18 | 
            +
              {:id => 12345, ...}
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            RelatedMethods::
         | 
| 21 | 
            +
              parse_timeline,
         | 
| 22 | 
            +
              parse_status
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            =end
         | 
| 25 | 
            +
                def parse_user(user)
         | 
| 26 | 
            +
                  result = {
         | 
| 27 | 
            +
                    :id => user.elements['id'].text.to_i,
         | 
| 28 | 
            +
                    :screen_name => user.elements['screen_name'].text,
         | 
| 29 | 
            +
                    :description => user.elements['description'].text,
         | 
| 30 | 
            +
                    :profile_image_url => URI.parse(user.elements['profile_image_url'].text)
         | 
| 31 | 
            +
                  }
         | 
| 32 | 
            +
                  return result
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            =begin rdoc
         | 
| 36 | 
            +
            Description::
         | 
| 37 | 
            +
              parse-method for status-element.
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            Params::
         | 
| 40 | 
            +
              status (REXML::Element-Instance)
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            Return::
         | 
| 43 | 
            +
              {:id => 12345, ...}
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            RelatedMethods::
         | 
| 46 | 
            +
              parse_timeline
         | 
| 47 | 
            +
              parse_user
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            =end
         | 
| 50 | 
            +
                def parse_status(status)
         | 
| 51 | 
            +
                  result = {
         | 
| 52 | 
            +
                    :text => status.elements['text'].text,
         | 
| 53 | 
            +
                    :id => status.elements['id'].text.to_i,
         | 
| 54 | 
            +
                    :res_count => status.elements['res_count'].text.to_i,
         | 
| 55 | 
            +
                    :created_at => DateTime.parse(status.elements['created_at'].text),
         | 
| 56 | 
            +
                    :user => parse_user(status.elements['user'])
         | 
| 57 | 
            +
                  }
         | 
| 58 | 
            +
                  return result
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            =begin rdoc
         | 
| 62 | 
            +
            Description::
         | 
| 63 | 
            +
              timeline-parser for mogo2-API.
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            Params::
         | 
| 66 | 
            +
              text (mogo2-API response)
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            Return::
         | 
| 69 | 
            +
              [{:id => 12345, ...}]
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            RelatedMethods::
         | 
| 72 | 
            +
              parse_status
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            =end
         | 
| 75 | 
            +
                def parse_timeline(text)
         | 
| 76 | 
            +
                  doc = REXML::Document.new(text)
         | 
| 77 | 
            +
                  doc.elements.collect('//statuses/status'){|status|
         | 
| 78 | 
            +
                    parse_status(status)
         | 
| 79 | 
            +
                  }
         | 
| 80 | 
            +
                end
         | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
            end
         | 
| @@ -0,0 +1,115 @@ | |
| 1 | 
            +
            # -*- encoding: UTF-8 -*-
         | 
| 2 | 
            +
            require 'uri'
         | 
| 3 | 
            +
            require 'net/http'
         | 
| 4 | 
            +
            require 'time'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class Mogo24r
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            =begin rdoc
         | 
| 9 | 
            +
            Utility Module for Mogo24r. 
         | 
| 10 | 
            +
            This module include URI, Net::HTTP, and Time.
         | 
| 11 | 
            +
            =end
         | 
| 12 | 
            +
              module Utils
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            =begin rdoc
         | 
| 15 | 
            +
            Description::
         | 
| 16 | 
            +
              create Net::HTTPRequest instance.
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            Params::
         | 
| 19 | 
            +
              type (:post|:get),
         | 
| 20 | 
            +
              uri URI-Instance,
         | 
| 21 | 
            +
              use_basic_auth (booleans)
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            Return::
         | 
| 24 | 
            +
              Net::HTTPRequest-Instance
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            RelatedMethods::
         | 
| 27 | 
            +
              create_uri,
         | 
| 28 | 
            +
              http_access
         | 
| 29 | 
            +
            =end
         | 
| 30 | 
            +
                def create_request(type, uri, use_basic_auth = false)
         | 
| 31 | 
            +
                  case type
         | 
| 32 | 
            +
                    when :get
         | 
| 33 | 
            +
                      request = Net::HTTP::Get.new(uri.request_uri)
         | 
| 34 | 
            +
                    when :post
         | 
| 35 | 
            +
                      request = Net::HTTP::Post.new(uri.request_uri)
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
                  request['User-Agent'] = @user_agent
         | 
| 38 | 
            +
                  request.basic_auth @email, @api_key
         | 
| 39 | 
            +
                  return request
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            =begin rdoc
         | 
| 43 | 
            +
            Description::
         | 
| 44 | 
            +
              create URI instance.
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            Params::
         | 
| 47 | 
            +
              url_string
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            Return::
         | 
| 50 | 
            +
              URI-Instance
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            RelatedMethods::
         | 
| 53 | 
            +
              parse_options,
         | 
| 54 | 
            +
              create_request,
         | 
| 55 | 
            +
              http_access
         | 
| 56 | 
            +
            =end
         | 
| 57 | 
            +
                def create_uri(url_string)
         | 
| 58 | 
            +
                  return URI.parse(URI.escape(url_string))
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            =begin rdoc
         | 
| 62 | 
            +
            Description::
         | 
| 63 | 
            +
              access to mogo2-API[http://*FIXME*]
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            Params::
         | 
| 66 | 
            +
              uri (URI-Instance),
         | 
| 67 | 
            +
              request (Net::HTTPRequest-Instance)
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            Return::
         | 
| 70 | 
            +
              Responsed XML-Document or false
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            RelatedMethods::
         | 
| 73 | 
            +
              create_uri,
         | 
| 74 | 
            +
              create_request
         | 
| 75 | 
            +
            =end
         | 
| 76 | 
            +
                def http_access(uri, request)
         | 
| 77 | 
            +
                  Net::HTTP.start(uri.host, uri.port){|http|
         | 
| 78 | 
            +
                    response = http.request(request)
         | 
| 79 | 
            +
                    if RUBY_VERSION.match(/^1\.9\./)
         | 
| 80 | 
            +
                      response.body.force_encoding('UTF-8')
         | 
| 81 | 
            +
                    end
         | 
| 82 | 
            +
                    if response.code == '200'
         | 
| 83 | 
            +
                      return response.body
         | 
| 84 | 
            +
                    else
         | 
| 85 | 
            +
                      return false
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
                  }
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            =begin rdoc
         | 
| 91 | 
            +
            Description::
         | 
| 92 | 
            +
              parse option parametors
         | 
| 93 | 
            +
             | 
| 94 | 
            +
            Params::
         | 
| 95 | 
            +
              options ({:param_name => value, ...})
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            Return::
         | 
| 98 | 
            +
              parsed-options ('?param_name=value&...')
         | 
| 99 | 
            +
             | 
| 100 | 
            +
            RelatedMethods::
         | 
| 101 | 
            +
              create_uri
         | 
| 102 | 
            +
            =end
         | 
| 103 | 
            +
                def parse_options(options)
         | 
| 104 | 
            +
                  result = ''
         | 
| 105 | 
            +
                  if options[:since]
         | 
| 106 | 
            +
                    options[:since] = Time.parse(options[:since].to_s).httpdate
         | 
| 107 | 
            +
                  end
         | 
| 108 | 
            +
                  options = options.find_all{|option|option.last}
         | 
| 109 | 
            +
                  result = '?' + options.collect{|option|
         | 
| 110 | 
            +
                    option.join('=')
         | 
| 111 | 
            +
                  }.join('&') unless options.empty?
         | 
| 112 | 
            +
                  return result
         | 
| 113 | 
            +
                end
         | 
| 114 | 
            +
              end
         | 
| 115 | 
            +
            end
         | 
    
        data/script/console
    ADDED
    
    | @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            # File: script/console
         | 
| 3 | 
            +
            irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            libs =  " -r irb/completion"
         | 
| 6 | 
            +
            # Perhaps use a console_lib to store any extra methods I may want available in the cosole
         | 
| 7 | 
            +
            # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
         | 
| 8 | 
            +
            libs <<  " -r #{File.dirname(__FILE__) + '/../lib/mogo24r.rb'}"
         | 
| 9 | 
            +
            puts "Loading mogo24r gem"
         | 
| 10 | 
            +
            exec "#{irb} #{libs} --simple-prompt"
         | 
    
        data/script/destroy
    ADDED
    
    | @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            begin
         | 
| 5 | 
            +
              require 'rubigen'
         | 
| 6 | 
            +
            rescue LoadError
         | 
| 7 | 
            +
              require 'rubygems'
         | 
| 8 | 
            +
              require 'rubigen'
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
            require 'rubigen/scripts/destroy'
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ARGV.shift if ['--help', '-h'].include?(ARGV[0])
         | 
| 13 | 
            +
            RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
         | 
| 14 | 
            +
            RubiGen::Scripts::Destroy.new.run(ARGV)
         | 
    
        data/script/generate
    ADDED
    
    | @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            begin
         | 
| 5 | 
            +
              require 'rubigen'
         | 
| 6 | 
            +
            rescue LoadError
         | 
| 7 | 
            +
              require 'rubygems'
         | 
| 8 | 
            +
              require 'rubigen'
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
            require 'rubigen/scripts/generate'
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ARGV.shift if ['--help', '-h'].include?(ARGV[0])
         | 
| 13 | 
            +
            RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
         | 
| 14 | 
            +
            RubiGen::Scripts::Generate.new.run(ARGV)
         | 
| @@ -0,0 +1,153 @@ | |
| 1 | 
            +
            # -*- encoding: UTF-8 -*-
         | 
| 2 | 
            +
            require File.dirname(__FILE__) + '/spec_helper.rb'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Mogo24r, ' when first created' do
         | 
| 5 | 
            +
              before do
         | 
| 6 | 
            +
                @accessor = Mogo24r.new('sample@email.com', 'api-key')
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              it 'should be have a email' do
         | 
| 10 | 
            +
                @accessor.email.should be_eql('sample@email.com')
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              it 'should be have a api-key' do
         | 
| 14 | 
            +
                @accessor.api_key.should be_eql('api-key')
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              it 'should be have a user-agent' do
         | 
| 18 | 
            +
                @accessor.user_agent.should be_eql('mogo24r (http://mogo24r.rubyforge.org)')
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              after do
         | 
| 22 | 
            +
                @accessor = nil
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            describe Mogo24r::Utils, " when use" do
         | 
| 27 | 
            +
              before do
         | 
| 28 | 
            +
                @accessor = Mogo24r.new('sample@email.com', 'api-key')
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              it 'create_uri should be URI-Instance' do
         | 
| 32 | 
            +
                @accessor.create_uri(
         | 
| 33 | 
            +
                  Mogo24r::BaseAddress +
         | 
| 34 | 
            +
                  'statuses/public_timeline.xml'
         | 
| 35 | 
            +
                ).should be_a_kind_of(URI)
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              it 'create_request with in type :get should be Net::HTTP::Get-Instance' do
         | 
| 39 | 
            +
                uri = mock(:uri)
         | 
| 40 | 
            +
                uri.should_receive(:request_uri).and_return('text')
         | 
| 41 | 
            +
                @accessor.create_request(:get, uri).should be_a_kind_of(Net::HTTP::Get)
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              it 'create_request with in type :post should be Net::HTTP::Post-Instance' do
         | 
| 45 | 
            +
                uri = mock(:uri)
         | 
| 46 | 
            +
                uri.should_receive(:request_uri).and_return('text')
         | 
| 47 | 
            +
                @accessor.create_request(:post, uri).should be_a_kind_of(Net::HTTP::Post)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              it 'create_request instance should have basic_auth' do
         | 
| 51 | 
            +
                uri = mock(:uri)
         | 
| 52 | 
            +
                uri.should_receive(:request_uri).and_return('text')
         | 
| 53 | 
            +
                request = @accessor.create_request(:get, uri)
         | 
| 54 | 
            +
                request['Authorization'].should be_eql(
         | 
| 55 | 
            +
                  'Basic c2FtcGxlQGVtYWlsLmNvbTphcGkta2V5'
         | 
| 56 | 
            +
                )
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              it 'parse_options and return parsed-options' do
         | 
| 60 | 
            +
                @accessor.parse_options({:count=>20, :since_id=>123}).should be_eql('?since_id=123&count=20')
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              after do
         | 
| 64 | 
            +
                @accessor = nil
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
            end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            describe Mogo24r::TimelineParser, 'when use' do
         | 
| 69 | 
            +
              before do
         | 
| 70 | 
            +
                @accessor = Mogo24r.new('sample@email.com', 'api-key')
         | 
| 71 | 
            +
                @accessor.extend(Mogo24r::TimelineParser)
         | 
| 72 | 
            +
                @user = '
         | 
| 73 | 
            +
                  <user>
         | 
| 74 | 
            +
                    <id>123</id>
         | 
| 75 | 
            +
                    <screen_name>saronpasu</screen_name>
         | 
| 76 | 
            +
                    <description>my name is saronpasu</description>
         | 
| 77 | 
            +
                    <profile_image_url>http://mogo2.jp/dummy.jpg</profile_image_url>
         | 
| 78 | 
            +
                  </user>
         | 
| 79 | 
            +
                '
         | 
| 80 | 
            +
                @status = "
         | 
| 81 | 
            +
                  <status>
         | 
| 82 | 
            +
                    <text>hoge</text>
         | 
| 83 | 
            +
                    <created_at>Tue Feb 17 05:17:37 +0900 2009</created_at>
         | 
| 84 | 
            +
                    <id>123</id>
         | 
| 85 | 
            +
                    <res_count>0</res_count>
         | 
| 86 | 
            +
                    #{@user}
         | 
| 87 | 
            +
                  </status>
         | 
| 88 | 
            +
                "
         | 
| 89 | 
            +
                @timeline = "
         | 
| 90 | 
            +
                  <statuses>
         | 
| 91 | 
            +
                    #{@status}
         | 
| 92 | 
            +
                  </statuses>
         | 
| 93 | 
            +
                "
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
              it 'parse_timeline and return Hash in Array' do
         | 
| 97 | 
            +
                @accessor.parse_timeline(@timeline).should be_a_kind_of(Array)
         | 
| 98 | 
            +
                @accessor.parse_timeline(@timeline).first.should be_a_kind_of(Hash)
         | 
| 99 | 
            +
              end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
              describe 'parse_timeline result' do
         | 
| 102 | 
            +
                before do
         | 
| 103 | 
            +
                  @result = @accessor.parse_timeline(@timeline)
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                it 'have status id' do
         | 
| 107 | 
            +
                  @result.first.should have_key(:id)
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                it 'have status created_at' do
         | 
| 111 | 
            +
                  @result.first.should have_key(:created_at)
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                it 'have status text' do
         | 
| 115 | 
            +
                  @result.first.should have_key(:text)
         | 
| 116 | 
            +
                end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                it 'have status res_count' do
         | 
| 119 | 
            +
                  @result.first.should have_key(:res_count)
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                it 'have user' do
         | 
| 123 | 
            +
                  @result.first.should have_key(:user)
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                it 'have user id' do
         | 
| 127 | 
            +
                  @result.first[:user].should have_key(:id)
         | 
| 128 | 
            +
                end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                it 'have user profile_image_url' do
         | 
| 131 | 
            +
                  @result.first[:user].should have_key(:profile_image_url)
         | 
| 132 | 
            +
                end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                it 'have user screen_name' do
         | 
| 135 | 
            +
                  @result.first[:user].should have_key(:screen_name)
         | 
| 136 | 
            +
                end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                it 'have user description' do
         | 
| 139 | 
            +
                  @result.first[:user].should have_key(:description)
         | 
| 140 | 
            +
                end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                after do
         | 
| 143 | 
            +
                  @result = nil
         | 
| 144 | 
            +
                end
         | 
| 145 | 
            +
              end
         | 
| 146 | 
            +
             | 
| 147 | 
            +
              after do
         | 
| 148 | 
            +
                @accessor = nil
         | 
| 149 | 
            +
                @user = nil
         | 
| 150 | 
            +
                @status = nil
         | 
| 151 | 
            +
                @timeline = nil
         | 
| 152 | 
            +
              end
         | 
| 153 | 
            +
            end
         | 
    
        data/spec/spec.opts
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            --colour
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        data/tasks/rspec.rake
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            begin
         | 
| 2 | 
            +
              require 'spec'
         | 
| 3 | 
            +
            rescue LoadError
         | 
| 4 | 
            +
              require 'rubygems'
         | 
| 5 | 
            +
              require 'spec'
         | 
| 6 | 
            +
            end
         | 
| 7 | 
            +
            begin
         | 
| 8 | 
            +
              require 'spec/rake/spectask'
         | 
| 9 | 
            +
            rescue LoadError
         | 
| 10 | 
            +
              puts <<-EOS
         | 
| 11 | 
            +
            To use rspec for testing you must install rspec gem:
         | 
| 12 | 
            +
                gem install rspec
         | 
| 13 | 
            +
            EOS
         | 
| 14 | 
            +
              exit(0)
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            desc "Run the specs under spec/models"
         | 
| 18 | 
            +
            Spec::Rake::SpecTask.new do |t|
         | 
| 19 | 
            +
              t.spec_opts = ['--options', "spec/spec.opts"]
         | 
| 20 | 
            +
              t.spec_files = FileList['spec/**/*_spec.rb']
         | 
| 21 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,92 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: mogo24r
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors: 
         | 
| 7 | 
            +
            - saronpasu
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            date: 2009-02-19 00:00:00 +09:00
         | 
| 13 | 
            +
            default_executable: 
         | 
| 14 | 
            +
            dependencies: 
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 16 | 
            +
              name: newgem
         | 
| 17 | 
            +
              type: :development
         | 
| 18 | 
            +
              version_requirement: 
         | 
| 19 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 20 | 
            +
                requirements: 
         | 
| 21 | 
            +
                - - ">="
         | 
| 22 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 23 | 
            +
                    version: 1.2.3
         | 
| 24 | 
            +
                version: 
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 26 | 
            +
              name: hoe
         | 
| 27 | 
            +
              type: :development
         | 
| 28 | 
            +
              version_requirement: 
         | 
| 29 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 30 | 
            +
                requirements: 
         | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 33 | 
            +
                    version: 1.8.0
         | 
| 34 | 
            +
                version: 
         | 
| 35 | 
            +
            description: mogo24r is mogo2API-library for ruby. mogo2 is Japanese micro-blog.
         | 
| 36 | 
            +
            email: 
         | 
| 37 | 
            +
            - saronpasu at gmail dot com
         | 
| 38 | 
            +
            executables: []
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            extensions: []
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            extra_rdoc_files: 
         | 
| 43 | 
            +
            - History.txt
         | 
| 44 | 
            +
            - Manifest.txt
         | 
| 45 | 
            +
            - README.rdoc
         | 
| 46 | 
            +
            files: 
         | 
| 47 | 
            +
            - History.txt
         | 
| 48 | 
            +
            - Manifest.txt
         | 
| 49 | 
            +
            - README.rdoc
         | 
| 50 | 
            +
            - Rakefile
         | 
| 51 | 
            +
            - example/cui_client.rb
         | 
| 52 | 
            +
            - example/simple_timeline_reader.rb
         | 
| 53 | 
            +
            - example/simple_update.rb
         | 
| 54 | 
            +
            - lib/mogo24r.rb
         | 
| 55 | 
            +
            - lib/mogo24r/timeline_parser.rb
         | 
| 56 | 
            +
            - lib/mogo24r/utils.rb
         | 
| 57 | 
            +
            - script/console
         | 
| 58 | 
            +
            - script/destroy
         | 
| 59 | 
            +
            - script/generate
         | 
| 60 | 
            +
            - spec/mogo24r_spec.rb
         | 
| 61 | 
            +
            - spec/spec.opts
         | 
| 62 | 
            +
            - spec/spec_helper.rb
         | 
| 63 | 
            +
            - tasks/rspec.rake
         | 
| 64 | 
            +
            has_rdoc: true
         | 
| 65 | 
            +
            homepage: http://mogo24r.rubyforge.org/
         | 
| 66 | 
            +
            post_install_message: PostInstall.txt
         | 
| 67 | 
            +
            rdoc_options: 
         | 
| 68 | 
            +
            - --main
         | 
| 69 | 
            +
            - README.rdoc
         | 
| 70 | 
            +
            require_paths: 
         | 
| 71 | 
            +
            - lib
         | 
| 72 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 73 | 
            +
              requirements: 
         | 
| 74 | 
            +
              - - ">="
         | 
| 75 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 76 | 
            +
                  version: "0"
         | 
| 77 | 
            +
              version: 
         | 
| 78 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 79 | 
            +
              requirements: 
         | 
| 80 | 
            +
              - - ">="
         | 
| 81 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 82 | 
            +
                  version: "0"
         | 
| 83 | 
            +
              version: 
         | 
| 84 | 
            +
            requirements: []
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            rubyforge_project: mogo24r
         | 
| 87 | 
            +
            rubygems_version: 1.2.0
         | 
| 88 | 
            +
            signing_key: 
         | 
| 89 | 
            +
            specification_version: 2
         | 
| 90 | 
            +
            summary: mogo24r is mogo2API-library for ruby
         | 
| 91 | 
            +
            test_files: []
         | 
| 92 | 
            +
             |