ejaydj 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ejaydj.gemspec +1 -0
- data/lib/ejaydj/djs/twitter_bot.rb +26 -3
- data/lib/ejaydj/track.rb +3 -4
- data/lib/ejaydj/version.rb +1 -1
- data/spec/djs/twitter_bot_spec.rb +16 -2
- metadata +15 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1c7b3aac4292a3b24563d8e1adaabf9444ce3954
         | 
| 4 | 
            +
              data.tar.gz: 72da1fddaa35c3c8fd223bce31e14c5cc35d5c6e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 55a91144630f2b6da1211b2a55c9da9dfaa0b49ee62178e4969ee077a7eee9499274d1863b66032e044bc2760abea2c0d58e0bece780003a3a681fff7c57e9d5
         | 
| 7 | 
            +
              data.tar.gz: d3e2db30fba50dc890d78d2e26d57179de69571909df28c8eb1021e2454fa9d989a72a1e34505ca91f86a92a652b85c690bb6a6c62173beeded225ea096e99b6
         | 
    
        data/ejaydj.gemspec
    CHANGED
    
    | @@ -21,6 +21,7 @@ Gem::Specification.new do |spec| | |
| 21 21 | 
             
              spec.add_runtime_dependency "rest-client", "~> 1.7"
         | 
| 22 22 | 
             
              spec.add_runtime_dependency "json"
         | 
| 23 23 | 
             
              spec.add_runtime_dependency "twitter"
         | 
| 24 | 
            +
              spec.add_runtime_dependency "googl"
         | 
| 24 25 |  | 
| 25 26 | 
             
              spec.add_development_dependency "bundler", "~> 1.6"
         | 
| 26 27 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'twitter'
         | 
| 2 | 
            +
            require 'googl'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Ejaydj
         | 
| 4 5 | 
             
              module Djs
         | 
| @@ -9,20 +10,42 @@ module Ejaydj | |
| 9 10 | 
             
                                :twitter_access_token_secret,
         | 
| 10 11 | 
             
                                :twitter_client
         | 
| 11 12 |  | 
| 13 | 
            +
                  MAX_SONG_LENGTH   = 50
         | 
| 14 | 
            +
                  MAX_ARTIST_LENGTH = 50
         | 
| 15 | 
            +
             | 
| 12 16 | 
             
                  def initialize(attributes={}, &block)
         | 
| 13 17 | 
             
                    super(attributes, &block)
         | 
| 14 18 | 
             
                  end
         | 
| 15 19 |  | 
| 16 20 | 
             
                  def tweet_me_a_song(time: Time.now)
         | 
| 17 | 
            -
                    song = play_me_a_song(time: time)
         | 
| 18 | 
            -
                    tweet =  | 
| 21 | 
            +
                    @song = play_me_a_song(time: time)
         | 
| 22 | 
            +
                    tweet = tweet_string
         | 
| 23 | 
            +
             | 
| 19 24 | 
             
                    twitter_client.update(tweet)
         | 
| 20 25 |  | 
| 21 | 
            -
                    {message: tweet, song: song}
         | 
| 26 | 
            +
                    {message: tweet, song: @song}
         | 
| 22 27 | 
             
                  end
         | 
| 23 28 |  | 
| 24 29 | 
             
                  private
         | 
| 25 30 |  | 
| 31 | 
            +
                  def tweet_string
         | 
| 32 | 
            +
                    tweet_string = ("NP: #{@song.name} by #{@song.artist} from playlist: #{shorten_url(@song.playlist.url)}")
         | 
| 33 | 
            +
                    shorten_tweet(tweet_string)
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  def shorten_tweet(tweet_string)
         | 
| 37 | 
            +
                    return tweet_string unless tweet_string.length > 140
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                    @song.name    = "#{@song.name[0..MAX_SONG_LENGTH]}..." if @song.name.length > MAX_SONG_LENGTH
         | 
| 40 | 
            +
                    @song.artist  = "#{@song.artist[0..MAX_ARTIST_LENGTH]}..." if @song.artist.length > MAX_ARTIST_LENGTH
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    "NP: #{@song.name} by #{@song.artist} | #{shorten_url(@song.playlist.url)}"
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  def shorten_url(url)
         | 
| 46 | 
            +
                    Googl.shorten(url).short_url
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 26 49 | 
             
                  def twitter_client
         | 
| 27 50 | 
             
                    @twitter_client ||= Twitter::REST::Client.new do |config|
         | 
| 28 51 | 
             
                      config.consumer_key        = @twitter_consumer_key
         | 
    
        data/lib/ejaydj/track.rb
    CHANGED
    
    
    
        data/lib/ejaydj/version.rb
    CHANGED
    
    
| @@ -27,7 +27,7 @@ RSpec.describe Ejaydj::Djs::TwitterBot do | |
| 27 27 |  | 
| 28 28 | 
             
              let(:playlist_items) do
         | 
| 29 29 | 
             
                [
         | 
| 30 | 
            -
                  {"name" => "Morning Playlist", "owner" => {"id" => 1}, "external_urls" => {"spotify" => " | 
| 30 | 
            +
                  {"name" => "Morning Playlist", "owner" => {"id" => 1}, "external_urls" => {"spotify" => "http://spotify.com"}, "tracks" => {"total" => 10}}
         | 
| 31 31 | 
             
                ]
         | 
| 32 32 | 
             
              end
         | 
| 33 33 |  | 
| @@ -41,9 +41,12 @@ RSpec.describe Ejaydj::Djs::TwitterBot do | |
| 41 41 | 
             
                ]
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 | 
            +
              let(:shorten_url) { 'http://goo.gl' }
         | 
| 45 | 
            +
             | 
| 44 46 | 
             
              before do
         | 
| 45 47 | 
             
                allow(music_client).to receive(:user_playlists).and_return(playlist_items)
         | 
| 46 48 | 
             
                allow(music_client).to receive(:playlist_tracks).and_return(track_items)
         | 
| 49 | 
            +
                allow(Googl).to receive(:shorten).and_return(double('GoogleURL', short_url: shorten_url))
         | 
| 47 50 | 
             
              end
         | 
| 48 51 |  | 
| 49 52 | 
             
              describe '#tweet_me_a_song' do
         | 
| @@ -51,7 +54,18 @@ RSpec.describe Ejaydj::Djs::TwitterBot do | |
| 51 54 | 
             
                  tweet = twitter_bot_dj.tweet_me_a_song(time: Time.new(2014, 11, 20, 7, 0, 0))
         | 
| 52 55 | 
             
                  song = tweet[:song]
         | 
| 53 56 |  | 
| 54 | 
            -
                  expect(tweet[:message]).to eq("NP: #{song.name} by #{song.artist} from  | 
| 57 | 
            +
                  expect(tweet[:message]).to eq("NP: #{song.name} by #{song.artist} from playlist: #{shorten_url}")
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                context "when tweet string is over 140" do
         | 
| 61 | 
            +
                  it "shrinks the tweet less than 140 text" do
         | 
| 62 | 
            +
                    track_items.first["track"]["name"] = "This is a very long track name, yeah it is, yeah it is yeah it is...................................."
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    tweet = twitter_bot_dj.tweet_me_a_song(time: Time.new(2014, 11, 20, 7, 0, 0))
         | 
| 65 | 
            +
                    song = tweet[:song]
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    expect(tweet[:message].length).to be <= 140
         | 
| 68 | 
            +
                  end
         | 
| 55 69 | 
             
                end
         | 
| 56 70 | 
             
              end
         | 
| 57 71 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ejaydj
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ejay Canaria
         | 
| @@ -52,6 +52,20 @@ dependencies: | |
| 52 52 | 
             
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: googl
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - ">="
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :runtime
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - ">="
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 55 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 70 | 
             
              name: bundler
         | 
| 57 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         |