• H8_515651
    了解作者
  • 29.9MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-22 03:59
    上传日期
安卓 Android版的Carnet 有关功能请求,请参阅GitHub或 什么是通货证? 建筑证 mkdir Carnet cd Carnet git clone git@github.com:PhieF/CarnetAndroid.git git clone git@github.com:PhieF/Sync.git git clone git@github.com:PhieF/GoogleSync.git cd CarnetAndroid bash build.gradle 即使对于Android,Carnet编辑器也是从CarnetElectron存储库中以html / Css / JS编写的,因此请使用最新的编辑器进行更新 cd Carnet git clone git@github.com:PhieF/CarnetElectron.git cd CarnetElectron
CarnetAndroid-main.zip
内容介绍
package com.spisoft.quicknote.server; import android.content.Context; import android.preference.PreferenceManager; import android.util.Log; import android.webkit.MimeTypeMap; import com.spisoft.quicknote.MainActivity; import com.spisoft.quicknote.Note; import com.spisoft.quicknote.PreferenceHelper; import com.spisoft.quicknote.databases.CacheManager; import com.spisoft.quicknote.databases.KeywordsHelper; import com.spisoft.quicknote.databases.NoteManager; import com.spisoft.quicknote.databases.RecentHelper; import com.spisoft.quicknote.editor.EditorView; import com.spisoft.quicknote.editor.recorder.AudioRecorderJS; import com.spisoft.quicknote.reminders.RemindersManager; import com.spisoft.quicknote.utils.FileUtils; import com.spisoft.quicknote.utils.PictureUtils; import com.spisoft.quicknote.utils.ZipUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import fi.iki.elonen.NanoHTTPD; import fi.iki.elonen.util.ServerRunner; import static com.spisoft.quicknote.databases.NoteManager.PREVIEW_HEIGHT; import static com.spisoft.quicknote.databases.NoteManager.PREVIEW_WIDTH; public class HttpServer extends NanoHTTPD { private static final String TAG = "HttpServer"; private final Context mContext; private final String extractedNotePath; private String mCurrentNotePath; private List<String> mAuthorizedID; /** * logger to log to. */ public static void main(String[] args) { } public HttpServer(Context ct) { super(0); mAuthorizedID = new ArrayList<>(); ServerRunner.executeInstance(this); try { start(); } catch (IOException e) { e.printStackTrace(); } mContext = ct; extractedNotePath = mContext.getCacheDir().getAbsolutePath()+"/currentnote"; } @Override public Response serve(IHTTPSession session) { Method method = session.getMethod(); String path = session.getUri(); InputStream rinput = null; String fileMimeType = null; Map<String, List<String>> parms = session.getParameters(); Response.IStatus status = Response.Status.OK; Log.d(TAG, "Path: "+path); Map<String, String> files = new HashMap<>(); Map<String, List<String>> post = new HashMap<>(); if(Method.POST.equals(method)) { try { session.parseBody(files); for (Map.Entry<String, String> entry : files.entrySet()) { Log.d(TAG, entry.getKey() + ": " + entry.getValue()); } post = session.getParameters(); } catch (IOException e) { e.printStackTrace(); } catch (ResponseException e) { e.printStackTrace(); } } Log.d(TAG, "Post : "+post.toString()); for (Map.Entry<String, List<String>> entry : post.entrySet()) { Log.d(TAG, entry.getKey()); } Log.d(TAG, "Get : "+parms.toString()); Log.d(TAG, "query params "+ session.getQueryParameterString()); if(path!=null){ if(path.contains("../") || path.equals("..")) return NanoHTTPD.newFixedLengthResponse(Response.Status.FORBIDDEN,"",""); Log.d("pathdebug","path: "+path); if(path.startsWith("/api/")){ if(!(session.getHeaders()!=null && session.getHeaders().get("requesttoken")!=null && mAuthorizedID.contains(session.getHeaders().get("requesttoken")) || parms.get("requesttoken")!=null && parms.get("requesttoken").get(0)!=null && mAuthorizedID.contains(parms.get("requesttoken").get(0)))) return NanoHTTPD.newFixedLengthResponse(Response.Status.FORBIDDEN,"",""); if(session.getHeaders() != null && session.getHeaders().get("requesttoken")!=null) mAuthorizedID.remove(session.getHeaders().get("requesttoken")); else mAuthorizedID.remove(parms.get("requesttoken").get(0)); String subpath = path.substring("/api/".length()); if(Method.GET.equals(method)) { switch (subpath) { case "note/open": return openNote(parms.get("path").get(0)); case "note/open/tmpwave": try { return NanoHTTPD.newChunkedResponse(Response.Status.OK, MimeTypeMap.getSingleton().getMimeTypeFromExtension("wav"),new FileInputStream(new File(AudioRecorderJS.TMP_WAV_PATH))); } catch (FileNotFoundException e) { return NanoHTTPD.newFixedLengthResponse(Response.Status.NOT_FOUND, "", "not found"); } case "note/get_note": Log.d(TAG, "note/get_note"); Log.d(TAG, "note/get_note"+parms.get("path").get(0)); return getNote(parms.get("path").get(0)); case "keywordsdb": return getKeywordDB(); /* case "recentdb": try { RecentHelper.getInstance(mContext).getJson().toString(); return NanoHTTPD.newChunkedResponse(Response.Status.OK, "application/json",new ByteArrayInputStream(RecentHelper.getInstance(mContext).getJson().toString().getBytes())); } catch (JSONException e) { e.printStackTrace(); }*/ case "settings/editor_css": String theme = PreferenceManager.getDefaultSharedPreferences(mContext).getString("theme","carnet"); String metadata = FileUtils.readFile(mContext.getFilesDir().getAbsolutePath() +"/reader/css/"+theme+"/metadata.json"); try { JSONObject metadatajson = new JSONObject(metadata); JSONArray array = metadatajson.getJSONArray("editor"); for (int i = 0; i<array.length(); i++){ array.put(i, "../reader/css/"+theme+"/"+array.getString(i)); } Log.d(TAG, metadata); return NanoHTTPD.newChunkedResponse(Response.Status.OK, "application/json",new ByteArrayInputStream(array.toString().getBytes())); } catch (JSONException e) { e.printStackTrace(); } case "note/open/0/listMedia": return listOpenMedia(); case "recorder/encoderWorker.min.wasm": case "recorder/decoderWorker.min.wasm": case "recorder/encoderWorker.min.js": case "recorder/decoderWorker.min.js": { File f = new File(mContext.getFilesDir(), "reader/reader/libs/" + subpath); return NanoHTTPD.newChunkedResponse(Response.Status.OK, subpath.endsWith("wasm") ? "application/wasm" : "application/javascript", new ByteArrayInputStream(FileUtils.readFile(f.getAbsolutePath()).getBytes())); } case "set
评论
    相关推荐
    • Electron React MobX脚手架
      # Electron React MobX开发脚手架 基于最新版本的Electron、React和MobX,使用了Office Fabric UI组件,支持打包发布跨平台应用。 ## 如何使用 1. 安装 node modules ```bash yarn ``` 2. 启动 React ```bash yarn ...
    • electron-app
      克隆并运行以快速查看Electron的运行情况。 这是基于Electron文档中的《的最小的Electron应用程序。 将此应用程序与应用程序结合使用以获取API代码示例,以帮助您入门。 基本的Electron应用程序仅需要以下文件: ...
    • Electron检测更新
      Electron基于electron-builder进行打包,运行window和Mac上实现检测更新
    • electron-rat
      克隆并运行以快速查看Electron的运行情况。 这是基于Electron文档中的《的最小的Electron应用程序。 将此应用程序与应用程序结合使用以获取API代码示例,以帮助您入门。 基本的Electron应用程序仅需要以下文件: ...
    • electronjs
      ElectronJS资料库 所有ElectronJS存储库在一起 []链接1
    • electron_fast_startup
      官方electron_fast_startup文件,安装完毕node后,进入文件夹,输入npm -run即可。
    • electron_tutorial
      电子教程 ##让我们用qiita电子做一个应用
    • electron 源码加密
      electron 源码加密,可以让自己的项目不轻易被别人修改,保护版权
    • electron搭建及使用
      electron搭建及简单使用,将网页在electron中打开,实现效果:网站以桌面应用程序的形式打开
    • GRBLDRILL:带伺服选项的三轴控制板钻Kong机
      通过批处理文件“avrdude_com9.bat”(此处为 COM9,如果需要在文件中进行调整)或 Bash 命令行闪烁。 STEP_MAKRO_GCODE.vi 来自 C. Meyer, GRBL-STEP LabVIEW 控制程序 在许多情况下,这种有用的 LabVIEW 程序...