Read the statement by Michael Teeuw here.
Creating Module with API Key/Secret
-
@lilpkstud said in Creating Module with API Key/Secret:
My main.js or into my node_helper.js?
Neither nor.
You would create a string variable for both in the module defaults.
THen in config.js which is only present on your device and not shared via github or else, you can overwrite the empty variable with your api_key and secret.
There are loads of examples, a few coming to my mind are MMM-Strava or MMM-DarkSkyForecast (or nearly any other weather app. -
@lilpkstud Taking MMM-Strava as an example:
MMM-Strava.js (the main js file)
Module.register("MMM-Strava", { // Default module config. defaults: { client_id: "", client_secret: "", period: "recent", ...
config.js:
//disabled: true, module: 'MMM-Strava', position: 'center', config: { client_id: "my_id", client_secret: "hereisthesecrethidden",
-
@lavolp3 Thanks for the example I will look into it more
However, is there a way to put my request token inside of the request header?
-
@lilpkstud
Well, you can call any variable from your config/defaults using the referencethis.config.variable
.
Orthis.config.requestToken
respectively.Something important to remember:
Sometimes, e.g. when you use a callback function, note that thethis
reference may change (better: the context changes).
Therefore you will often see something like this in the module codes early in a function:self = this
And later on in the callback function
self.config.requestToken
Here, the “this” instance that is bound to its context, gives it’s properties to the global variable “self” that can then be used in any context (because it is global).
For (much) more information check out https://scotch.io/@alZami/understanding-this-in-javascript
-
Having trouble displaying the information that I received from Yelp API
getDom: function() { var self = this; var wrapper = document.createElement("div"); //If this.dataRequest is not empty if(this.data && this.data.length > 0){ console.log("MMM-Test: This.data is set" + this.data); //Name of Business var wrapperDataRequest = document.createElement("h1"); wrapperDataRequest.innerHTML = this.data; wrapperDataRequest.className = 'yelpBusinessName'; wrapper.appendChild(imgDataRequest); wrapper.appendChild(wrapperDataRequest); } else { console.log("MMM-Test: this.data couldn't be found"); wrapper.innerHTML = "This didn't work"; } return wrapper; },
MMM-Test: This.data is set{"id":"E8RJkjfdcwgtyoPMjQ_Olg","alias":"four-barrel-coffee-san-francisco","name":"Four Barrel Coffee","image_url":"https://s3-media1.fl.yelpcdn.com/bphoto/-_Ks4eF8aZcm3GZgUf5Urg/o.jpg","is_closed":false,"url":"https://www.yelp.com/biz/four-barrel-coffee-san-francisco?adjust_creative=joufChkTQP-Ru-G_5cRrMA&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_search&utm_source=joufChkTQP-Ru-G_5cRrMA","review_count":2069,"categories":[{"alias":"coffee","title":"Coffee & Tea"}],"rating":4,"coordinates":{"latitude":37.7670169511878,"longitude":-122.42184275},"transactions":[],"price":"$","location":{"address1":"375 Valencia St","address2":"","address3":"","city":"San Francisco","zip_code":"94103","country":"US","state":"CA","display_address":["375 Valencia St","San Francisco, CA 94103"]},"phone":"+14158964289","display_phone":"(415) 896-4289","distance":1452.8696502343696}
How can I display name?
I tried this.data[0].name or this.data.name but no luck
-
@lilpkstud this.data is an object, not an array. So this.data.name should do the trick. In the code above you have only this.data!?
-
@lavolp3 I deleted this.data.name because I was getting undefined and I still am
-
This line of code will show a { on my mirror so I’m assuming everything is turned into a string?
I used JSON.stringify() in my node_helper file
wrapperDataRequest.innerHTML = this.data[0];
-
@lilpkstud said in Creating Module with API Key/Secret:
JSON.stringify()
correct… u converted the object to a string… don’t need to do that
just pass the object from helper up to module …
then it will use the this.data.name
-
@lilpkstud next to what sdetweil said you should also not save your result into this.data as it is an instance property which already contains data, see https://github.com/MichMich/MagicMirror/tree/master/modules#available-module-instance-properties for reference