OAUTH для Purescript

Пожалуйста, проверьте это на детской площадке!

let sString = "236.86"

var dNumber = NSNumberFormatter().numberFromString(sString)
var nDouble = dNumber!
var eNumber = Double(nDouble) * 3.7

Кстати, в моем Xcode

.toDouble () - не существует

.doubleValue создать значение 0.0 из не числовых строк ...

1
задан 5 March 2019 в 10:36
поделиться

2 ответа

Я ищу клиента OAuth и нашел это.

Вы нашли незаконченный проект, в то время как наилучшим подходом было бы написание привязки для модуля npm oauth .

Прежде всего, если вы планируете интегрироваться с Twitter, рассмотрите возможность получения токена доступа по узлу, запустите twitter_oauth_getter.js (обратите внимание на оба комментария).

Затем замените секреты 2 + 2 (ключи приложения и пользователя) в oauth.get и, наконец, экспортируйте их как модуль неиспользуемых функций.

Например, допустим, вы просто хотите вывести несколько твитов, вы можете передать функцию log как эффективный обратный вызов .

"use strict";
module.exports = {
sayHelloInEnglish: function() {
return "HELLO";
},

logMyTweets: function(callback) {
var OAuth = require('oauth');

    var oauth = new OAuth.OAuth(
      'https://api.twitter.com/oauth/request_token',
      'https://api.twitter.com/oauth/access_token',
      'app key',
      'app token',
      '1.0A',
      null,
      'HMAC-SHA1'
    );
    oauth.get(
      'https://api.twitter.com/1.1/lists/statuses.json?slug=develop&owner_screen_name=giuliohome_2017&count=2',
      //'https://api.twitter.com/1.1/trends/place.json?id=23424977',
      'user token', 
      'user secret', 
      function (e, data, res){
        if (e) console.error(e);        
        callback (data);
      }); 

}
};

Привязка Purescript

Теперь, следуя приведенному выше примеру, вы напишите привязку Purescript (то же имя с расширением .purs вместо .js)

module Twitting where
import Data.Unit
import Data.Function.Uncurried (Fn0, Fn1)
import Effect (Effect)
import Effect.Uncurried
foreign import sayHelloInEnglish ::  Fn0 String
foreign import logMyTweets ::  EffectFn1 (EffectFn1 String Unit) Unit

И вариант использования может быть

module Main where

import Prelude
import Effect (Effect)
import Effect.Console (log)
import Twitting
import Data.Function.Uncurried (Fn0, runFn0, Fn1, runFn1)
import Effect.Uncurried (runEffectFn1, mkEffectFn1)

callback :: String -> Effect Unit
callback = log

main :: Effect Unit
main = do
  log "Hello sailor!"
  log (runFn0 sayHelloInEnglish)
  runEffectFn1 logMyTweets (mkEffectFn1 callback)

Следующие шаги

Теперь, конечно, мы можем перейти к Аргонавтам

Так как наша программа получает данные JSON в виде строки, нам, вероятно, нужна функция jsonParser в Data.Argonaut.Parser, которая является очень простой оболочкой для JavaScript JSON.parse. В противном случае значения Json могут быть введены в нашу программу через FFI

concat :: forall a. Foldable a => a String -> String
concat tt =
  foldl (\a x -> x <> "\n" <> a) "" tt

showText :: Object A.Json -> String
showText tweet =
   maybe "no text" A.stringify (lookup "text" tweet)

toJsonObject :: A.Json -> String
toJsonObject j =
  A.caseJsonObject "not a json object " showText j

transform :: Array A.Json -> Array String
transform e = map toJsonObject e

showTweets :: A.Json -> Array String
showTweets tweets =
  A.caseJsonArray ["not a json array"] transform tweets

parse :: String -> String
parse j = 
  either (\x -> x <> "\n" <> j) (\x -> concat( showTweets x)) (jsonParser j)

callback :: String -> Effect Unit
callback j = do
  log (parse j)

Наконец, предполагая, что мы находимся на стороне сервера, мы, вероятно, опубликуем веб-приложение, используя HTTP-сервер, такой как гипер

0
ответ дан Giulio 5 March 2019 в 10:36
поделиться
1110] На практике я связывался с chexxor и видел его мысли. Эта библиотека была написана до PureScript 0.12 и поэтому потребует многочисленных изменений для обеспечения совместимости.

type и data - две разные вещи. type вводит синоним типа (другое имя для существующего типа), тогда как data вводит алгебраический тип данных (различающиеся суммы и произведения других типов).

Записи - это тоже что-то другое. { a ∷ A } определенно эквивалентен Record (a ∷ A).

Строка 228 не анализируется, потому что отсутствует имя конструктора. data X = { a ∷ A } является недопустимым синтаксисом, а data X = Y { a ∷ A } является допустимым синтаксисом.

0
ответ дан erisco 5 March 2019 в 10:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: