De sociale media hamster (4 / 5 stap)

Stap 4: De code

Nu, de code. Het platform elektrische imp geeft u alle instrumenten om te interageren met de hele wereld van API's en webservices. Kortom, de code is opgesplitst in twee: een agent, die wordt uitgevoerd op de servers van de wolk van elektrische Imp, en een apparaat, dat is uw elektrische Imp

[Kopiëren & plakken uit de officiële elektrische Imp documentatie]

De agent-object vertegenwoordigt van het GMB agent: de serverzijde eekhoorn, uitgevoerd in de elektrische Imp de servers van de wolk, die zich met Internet aanvragen en antwoorden namens het GMB bezighoudt. De agent-object wordt gebruikt om de communicatie tussen het GMB en diens agent bemiddelen.

Het apparaatobject vertegenwoordigt de server gebaseerde agent weergave van het GMB en wordt gebruikt voor de communicatie tussen de agent en het GMB bemiddelen.

[Einde van kopiëren en plakken]

Dus hier gaan we met onze agent-code. Het gebaseerd op de bibliotheek van de nuttige twitter in de elektrische Imp webservices verwijzing opgenomen. Ik heb ook dit stukje code voor het genereren van de tweet gebeurtenis handmatig toegevoegd

Opdat het twitter stream real-time parseren, moest ik configureren deze twitter-constanten zijn

en deze regel

in feite vertelt die naar het stream-object te vangen alle de tweets met de tekenreeks"
Dus, hier is de volledige agent-code

http://opensource.org/licenses/mit/ / Twitter sleutels const API_KEY = ""; Const API_SECRET = ""; Const AUTH_TOKEN = ""; Const TOKEN_SECRET = ""; klasse Twitter {/ / OAuth _consumerKey = null; _consumerSecret = null; _accessToken = null; _accessSecret = null; URL's streamUrl = "https://stream.twitter.com/1.1/"; tweetUrl = "https://api.twitter.com/1.1/statuses/update.json"; Streaming streamingRequest = null; _reconnectTimeout = null; _buffer = null; constructor (consumerKey, consumerSecret, accessToken, accessSecret) {deze ._consumerKey = consumerKey; deze ._consumerSecret = consumerSecret; deze ._accessToken = accessToken; deze ._accessSecret = accessSecret; deze ._reconnectTimeout = 60; deze ._buffer = "";} / *** * functie: Tweet * post een tweet op de tijdlijn van de gebruiker ** Params: * status - tweet * cb - een optionele retouraanroep ** terug: * bool die aangeeft of de tweet geslaagd is (als geen cb werd geleverd) * nothing (als een retouraanroep werd geleverd) *** / functie tweet (status, cb = null) {lokale headers = {}; lokale verzoek = _oAuth1Request (tweetUrl, headers, {"status": status}); als (cb == null) {lokale reactie = request.sendsync(); als (reactie & & response.statuscode! = 200) {server.log (formaat ("fout updating_status tweet. HTTP Status Code % i:\r\n%s", response.statuscode, response.body)); return false; } else {return true;}} else {request.sendasync(cb);}} / *** * functie: Stream * opent een verbinding met de twitter's streaming API ** Params: * searchTerms - wat wij op zoek bent naar * onTweet - callback-functie die wordt uitgevoerd wanneer er gegevens * onError - callback-functie die wordt uitgevoerd wanneer er een fout *** / functie van de stream (searchTerms, onTweet, onError = null) {server.log ("Opening stream voor:" + searchTerms); Stel standaard foutenhandler als (onError == null) onError = _defaultErrorHandler.bindenv(this); lokale methode = "statuses/filter.json" lokale kopteksten = {}; lokale post = {bijhouden = searchTerms}; lokale verzoek = _oAuth1Request (streamUrl + methode, headers, post); this.streamingRequest request.sendasync = (function(resp) {/ / verbinding timeout server.log ("Stream gesloten (" + resp.statuscode + ":" + resp.body + "")""); Als we ingesteld hebben als autoreconnect (resp.statuscode == 28) {stream (searchTerms, onTweet, onError);} anders als (resp.statuscode == 420) {imp.wakeup (_reconnectTimeout, {stream (searchTerms, onTweet, onError);} function. bindenv(this)); _reconnectTimeout * = 2; }} .bindenv(this), function(body) {probeer {als (body.len() == 2) {_reconnectTimeout = 60; _buffer = ""; terugkeer; } lokale gegevens = null; Probeer {gegevens = http.jsondecode(body);} catch(ex) {_buffer += lichaam; probeer {gegevens = http.jsondecode(_buffer);} vangst (ex-) {terugkeer;}} als (gegevens == null) return; Als er een fout als ("fouten" in gegevens) {server.log ("Got een fout"), onError(data.errors); terugkeer;} else {als (_looksLikeATweet(data)) {onTweet(data); terugkeer;}}} Catch(ex) {/ / als er is een fout opgetreden, fout handler onError beroepen ([{message = "Fout bij eekhoorn -" + ex, code = -1}]);}}. bindenv(this)); } / *** Private Function - noem niet *** / _encode(str) {return http.urlencode({s = str}).slice(2);} function function _oAuth1Request (postUrl, headers, gegevens) {lokale tijd = time(); lokale nonce = tijd; lokale parm_string = http.urlencode ({oauth_consumer_key = _consumerKey}); parm_string += "&" + http.urlencode ({oauth_nonce = nonce}); parm_string += "&" + http.urlencode ({oauth_signature_method = "HMAC-SHA1"}); parm_string += "&" + http.urlencode ({oauth_timestamp = tijd}); parm_string += "&" + http.urlencode ({oauth_token = _accessToken}); parm_string += "&" + http.urlencode ({oauth_version = "1.0"}); parm_string += "&" + http.urlencode(data); lokale signature_string = "POST &" + _encode ( postUrl) + "&" + _encode(parm_string); lokale toets = formaat ("%s & %s", _encode(_consumerSecret), _encode(_accessSecret)); lokale sha1 = _encode (http.base64encode (http.hash.hmacsha1 (signature_string, belangrijkste))); lokale auth_header = "oauth_consumer_key = \" "+ _consumerKey +"\","; auth_header += "oauth_nonce = \" "+ nonce +"\","; auth_header += "oauth_signature = \" "+ sha1 +"\","; auth_header += "oauth_signature_method = \" "+"HMAC-SHA1"+"\","; auth_header += "oauth_timestamp = \" "+ tijd +"\","; auth_header += "oauth_token = \" "+ _accessToken +"\","; auth_header += "oauth_version=\"1.0\"";" lokale headers = {"Vergunning": "OAuth" + auth_header}; lokale url = postUrl + "
? "+ http.urlencode(data); lokale verzoek = http.post (url, headers, ""); terug verzoek; } functie _looksLikeATweet(data) {terug ("created_at" in gegevens & & 'id' in gegevens & & "tekst" in gegevens & & 'gebruiker' in de gegevens);} function _defaultErrorHandler(errors) {foreach (fout fouten) {server.log ("Fout" + error.code + ":" + error.message);}}} Twitter <-Twitter (API_KEY, API_SECRET, AUTH_TOKEN, TOKEN_SECRET); functioneren onTweet(tweetData) {/ / Meld u tweet, en die het (er is veel meer info in tweetData) tweeted server.log (formaat ("%s - %s", tweetData.text, tweetData.user.screen_name)); device.send ("tweet", null);} test functie voor handmatige hamster schudden van de functie requestHandler (aanvraag, reactie) {probeer {/ / controleren als de gebruiker led als queryreeksparameter verzonden als ("tweet" in request.query) {device.send ("tweet", null);} / / Stuur een reactie terug zeggen alles was OK. response.send (200, "tweet test ok");} vangst (ex) {response.send (500, "Internal Server Error:" + ex);}} Twitter.Stream ("yoursearchstring", onTweet) ;// registreren de HTTP-handler http.onrequest(requestHandler);

Dan, hier is de apparaatcode, gebaseerd op de elektrische Imp Servo van de PWM-voorbeeld

			
          

Gerelateerde Artikelen

DIY Social Media foto Prop

DIY Social Media foto Prop

Mijn man en ik had een vrij eenvoudig, do-it-yourself bruiloft/receptie. Helaas, toen we trouwden (2010) er was niet echt een Pinterest om ons te helpen met ideeën. Als er was geweest, ik vermoed dat onze bruiloft een beetje anders zou hebben uitgezi
Mooi beeld citaten voor Social Media

Mooi beeld citaten voor Social Media

Heb je afbeeldingen met inspirerende citaten circuleert rond Facebook, Twitter, Pinterest of andere sociale mediasites? Ik wed dat je hebt, en dat is het punt. Dit soort beelden zijn populair omdat ze mensen een impuls van inspiratie of over te breng
Sociale Media 2016: Verschillende Live-Streaming opties

Sociale Media 2016: Verschillende Live-Streaming opties

Begrijpen dat de verschillende 2 live streaming toepassingen beschikbaar die nu zijn geïntegreerd in de sociale mediatoepassingen.Gebruik gewoon uw telefoon, kunt u nu livestream een evenement, object of persoon.Volgens Sport sociale '6 in de sociale
Hoe maak je een WordPress Blog met een sociale Media-functie

Hoe maak je een WordPress Blog met een sociale Media-functie

Hallo, ben ik Dan Lee, een trots student van de Virginia Tech en blogging hobbyist die is het creëren van blogsites het afgelopen jaar. Ik begrijp dat het maken van een blog kan zijn frustrerend tijde. Dus, ik ben het delen van een instructie over ho
April fools prank van de dag, hoe naar-blok sociale media websites

April fools prank van de dag, hoe naar-blok sociale media websites

dit instructable zal u tonen hoe te blokkeren van sociale media of een website, zoals een April fools grap van de dag, of om te houden van uw werknemers eerlijk en productieve terwijl op het werk
Sociale Media Sandwich platen

Sociale Media Sandwich platen

Deze sandwich platen zijn gemaakt om te worden gedragen tijdens optochten.Stap 1: Verzamel materialenKartonnenSchaarLiniaalVerfVerf penselenPotloodTekenreeks of touwTapeStap 2: Meten en karton op gewenste maat gesnedenStap 3: Mark uit het gebied waar
Toegang tot sociale Media en het Internet tijdens een ramp

Toegang tot sociale Media en het Internet tijdens een ramp

informatie is machtDe orkaan Sandy die ons net voorbij heeft laten zien de kracht van de natuur in het gezicht van technologie.  Zodra de macht gaat uit en is uit voor een paar dagen onze afhankelijkheid op wordt technologie een in het oog springende
SUPER MAKKELIJKE MANIER OM HACK SOCIALE MEDIA CAKE POPS!

SUPER MAKKELIJKE MANIER OM HACK SOCIALE MEDIA CAKE POPS!

Ik houd van deze! zodoende vlot te halen! Dit is echt een video voor beginners experimenteren met de "caking" wereld!Stap 1:
GPS, films, Social Media voor uw auto!!

GPS, films, Social Media voor uw auto!!

Kan zich niet veroorloven een touchscreen DVD-speler voor uw auto... Of moe van het houden van uw telefoon tijdens lange weg reizen? Hoe zit het creëren van uw eigen multifunctionele telefoon/tablet houder met items hebt al!!Opmerking: Het gebruik va
Tweeting hamster kooi

Tweeting hamster kooi

Heb je je ooit afgevraagd wat uw hamster doet wanneer u slaapt of uit het huis? Is hij wilde partijen gooien of Frans oefenen? Of misschien gewoon in zijn wiel te draaien?We wilden weten voor onszelf wat onze hamster, Martin, kreeg tot achter geslote
Bijhouden van vrienden en onderwerpen op sociale netwerken met behulp van Intel Edison

Bijhouden van vrienden en onderwerpen op sociale netwerken met behulp van Intel Edison

Bouw uw eigen sociale media assistant met een Intel Edison en een paar python scripts! Dit een vrij eenvoudig project dat zal u toelaten om het zien van je eigen facebook/twitter-Nieuws feed gefilterde als u bevalt.Verken de code en de bibliotheken g
Zombie Apocalypse Quarantine Compound

Zombie Apocalypse Quarantine Compound

We hebben enkele grote thema Halloween partijen gehad door de jaren heen, en we besloten dat 2015 het jaar van de Zombie-Apocalyps was. We hebben samengesteld een enkele Instructable tonen de hele "onderzoek faciliteit en quarantaine Compound":)
DIY Man Cave (voor midden/hoge scholieren)

DIY Man Cave (voor midden/hoge scholieren)

Ik ga u tonen hoe te bouwen van een eenvoudige man grot. Dit Instructable zal u tonen hoe te bouwen van een ontzagwekkende hangout dat is gemakkelijk, relatief snel, en vooral... KOSTEN EFFICIËNT. Deze tutorial zal passen de meeste tieners budgetten,
SPRANKELENDE LIMONADE 4 manieren - CLASSIC - AARDBEI (roze) - BLUEBERRY & oranje - GRANAATAPPEL

SPRANKELENDE LIMONADE 4 manieren - CLASSIC - AARDBEI (roze) - BLUEBERRY & oranje - GRANAATAPPEL

SPRANKELENDE LIMONADE 4 manieren - CLASSIC - AARDBEI (roze) - BLUEBERRY & ORANGE - GRANAATAPPELVOLG ME OP SOCIAL MEDIA!YouTube: https://www.youtube.com/channel/UC6-aoDG0ePzoI_8M...Tjilpen: https://www.youtube.com/channel/UC6-aoDG0ePzoI_8M...Instagram